Files
Jyotisha/docs/tasks/TASK-people-ephemeris-ui-20260926.md
T

9.6 KiB
Raw Blame History

TASK · 星盘档案页补样式 + 星历页可读性改版(2026-09-26)

原型(产品 09-26 已确认):https://claude.ai/artifact/FmPy9xZ7dQw9u7yrW4WzTw

基线

  • origin/staging 当前 head(线上 e84d6eb8)。分支 codex/people-ephemeris-ui-20260926。
  • 与 TASK-new-chat-from-people-20260926.md(BUG-1038)并行:本单只动 /people 与星历的组件、globals.css 对应段、ephemeris-view.ts 与新文件;不碰 people-home-links.tsx、chat-session-url.ts、home-bootstrap-run.ts、page.tsx(那一单会改)。/people「和 TA 对话」按钮的跳转目标以那一单为准,本单只改样式与布局。

事故实证(产品 09-26 真机,iPhone Safari)

星盘档案页 /people 没有任何样式:截图里名字、「本人」、另一人的名字和时间挤在一行,「添加一个人」按钮悬在中间,详情字段是裸文字。frontend/src/components/people/people-page.tsx 用了 people-archive、people-archive-list、people-archive-detail、people-archive-row 等类,frontend/src/app/globals.css 中 0 条对应规则。P1 执行方没写样式,审查无登录态没在浏览器看过。

星历页可读性差:frontend/src/components/ephemeris/ephemeris-page.tsx + frontend/src/lib/ephemeris-view.ts panchangaFromEngine:

  • 月相日、月宿、瑜伽、迦那直接显示引擎梵文拉丁名(Shukla Purnima、Uttara Bhadrapada、Vriddhi、Vishti),只有星期有 VARA_ZH。
  • 吉 / 凶是值下方一个灰色小字,扫不出来;左列标签加宽字距。
  • 右上角「带这天去提问」(EPHEMERIS_COPY.ask,.ephemeris-ask)是标题栏里的实心强调色大按钮,喧宾夺主。

决策记录(产品 2026-09-26)

档案页(按原型 ①②)

  • D1 手机(< 1024px):列表页 → 点人进入详情(同路由内切视图,顶部「‹ 返回」,浏览器返回也能回列表)。桌面(≥ 1024px,星盘页已有断点):左列表右详情两栏。
  • D2 列表行:圆形首字头像 + 名字(本人加「本人」小标签)+ 一行「出生日期 · 排盘时间 · 城市」等宽数字;当前正在看的人高亮(强调色边 + 浅底);行尾「›」。底部虚线卡片「+ 添加一个人」,下方小字「还可以保存 N 个人」(N 来自现有上限计算,不另算)。
  • D3 详情:头部头像 + 名字 + 「本人 · 出生地」;两格时间卡「填报时间」「排盘时间」(有校正结果时排盘卡为 --color-success 系并标「已校正」);出生日期、岁差(显示中文「Raman(默认)」等,不露小写 raman);三个等宽快捷入口「和 TA 对话 / 看星盘 / 生成报告」;本人底部灰字「本人不能删除」;他人的删除入口在编辑视图底部(沿用现有删除确认与计数逻辑)。
  • D4 头像颜色:按人物 id 稳定取色,只用现有语义 / 元素色 token,不新造色值。

星历页(按原型 ③)

  • D5 五要素值先中文、后梵文:主行中文,副行小字梵文(原引擎名)。中文名一律取自本单附表,新建 frontend/src/lib/panchanga-names-zh.ts,执行方不得自行翻译或增删;表里查不到的名字原样显示梵文并记日志(不报错)。
  • D6 吉 / 凶改为行右侧彩色小标签(吉 --color-success、凶 --color-danger、中性 --color-warning),12% 同色底;左列标签固定宽度、去掉加宽字距;行距收紧。
  • D7 卡片顶部当日总评一句 + 计数小标签「N 吉」「M 凶」。总评按固定规则拼,不调模型:
    • 月相短语:Purnima →「满月之日」;Amavasya →「新月之日」;其余白分(Shukla)→「月亮渐盈」,黑分(Krishna)→「月亮渐亏」。
    • 整体:吉 ≥ 4 →「整体吉」;吉 = 3 →「整体偏吉」;吉 = 2 →「吉凶参半」;吉 ≤ 1 →「整体偏凶」(中性不计入吉也不计入凶)。
    • 迦那为 Vishti 时追加「;迦那落在毗湿提,重要的事避开」。
    • 句式:{月相短语},{整体}{Vishti 追加}。 例:「满月之日,整体偏吉;迦那落在毗湿提,重要的事避开。」
    • 五要素不全(引擎缺项)时不出总评,只显示已有行。
  • D8 删除标题栏里的「带这天去提问」按钮;在页面最底部加浅色提示卡:左侧「想问这一天适不适合做某件事?」,右侧按钮「带这天去提问」(行为不变)。
  • D9 行运每行:彩色行星符号 + 「{行星} 在 {星座}」+ 副行「落你的第 N 宫」(仅在现有 natalRelativeAvailable 为真时显示)+ 右侧等宽度数。
  • D10 岁差说明句保留,改为「五要素按 Lahiri 岁差算,和星盘页的 Raman 不同。」(若星盘页岁差来自用户设置,按实际设置名填写,不写死 Raman)。

中文名对照表(D5 唯一来源)

月相日 Tithi:白分 = Shukla,黑分 = Krishna。显示为「白分初一」…「白分十四」、「望日(满月)」、「黑分初一」…「黑分十四」、「朔日(新月)」。

引擎名 中文 引擎名 中文
Pratipada 初一 Navami 初九
Dwitiya 初二 Dashami 初十
Tritiya 初三 Ekadashi 十一
Chaturthi 初四 Dwadashi 十二
Panchami 初五 Trayodashi 十三
Shashthi 初六 Chaturdashi 十四
Saptami 初七 Purnima 望日(满月)
Ashtami 初八 Amavasya 朔日(新月)

月宿 Nakshatra(印度二十七宿与中国星宿的传统对应):

引擎名 中文 引擎名 中文 引擎名 中文
Ashwini 娄宿 Magha 星宿 Mula 尾宿
Bharani 胃宿 Purva Phalguni 张宿 Purva Ashadha 箕宿
Krittika 昴宿 Uttara Phalguni 翼宿 Uttara Ashadha 斗宿
Rohini 毕宿 Hasta 轸宿 Shravana 女宿
Mrigashira 觜宿 Chitra 角宿 Dhanishta 虚宿
Ardra 参宿 Swati 亢宿 Shatabhisha 危宿
Punarvasu 井宿 Vishakha 氐宿 Purva Bhadrapada 室宿
Pushya 鬼宿 Anuradha 房宿 Uttara Bhadrapada 壁宿
Ashlesha 柳宿 Jyeshtha 心宿 Revati 奎宿

瑜伽 Yoga(意译):

引擎名 中文 引擎名 中文 引擎名 中文
Vishkambha 支柱 Ganda 险结 Variyan 安逸
Priti 喜爱 Vriddhi 增长 Parigha 阻碍
Ayushman 长寿 Dhruva 恒定 Shiva 吉祥
Saubhagya 好运 Vyaghata 打击 Siddha 圆满
Shobhana 光彩 Harshana 欢喜 Sadhya 可成
Atiganda 大险 Vajra 金刚 Shubha 吉善
Sukarma 善业 Siddhi 成就 Shukla 清白
Dhriti 坚持 Vyatipata 灾变 Brahma 梵天
Shula 刺痛 Indra 因陀罗
Vaidhriti 分离

迦那 Karana(音译为主):Bava 巴瓦、Balava 巴拉瓦、Kaulava 考拉瓦、Taitila 泰提拉、Garija / Gara 加拉、Vanija 瓦尼贾、Vishti 毗湿提、Shakuni 沙昆尼、Chatushpada 四足、Naga 蛇、Kimstughna 金斯图格纳。

拼写容差:匹配前忽略大小写、空格、连字符;Garija 与 Gara、Dwitiya 与 Dvitiya、Shashthi 与 Shashti 视为同一项(在表文件里写别名)。

硬红线

  1. 断点只用已登记的(1024 为星盘页既有断点;如需 860 须在报告域外说明理由,否则不用);44px 触控;不新增颜色字面量,全部走 token 且有暗色值。
  2. 星历仍不得出现 spinner / 骨架 / 「正在加载」(星盘骨架例外不外溢)。
  3. 不改接口、引擎、数据库;总评不调模型;/people、/ephemeris 保持 ○ Static,首屏 gzip ±2%。
  4. 改 UI 的同一提交更新 frontend/DESIGN.md(档案页、星历页两节)与 frontend/docs/VOICE.md(总评句式、底部提示卡文案)。
  5. 必须在真实浏览器里看过(本机有 Chrome;375 / 390 / 1280 宽度,亮 / 暗两种),截图写进 PROGRESS;无登录态时用本地 dev 的预览数据或组件测试宿主,写明方式。
  6. 全量测试 Node 22 + Linux 与基线逐条一致、新增 0;改动断言写三栏(写在测试文件里)。

任务分解

  • T1 /people 样式与移动 / 桌面布局(D1–D4)。验收:组件测试断言列表行结构、当前人物高亮类、详情时间卡、本人无删除;CSS 合同测试断言 people-archive* 规则存在且断点在白名单内。
  • T2 panchanga-names-zh.ts 对照表 + 别名;panchangaFromEngine 输出中文主名与梵文副名。验收:表内全部项的单测(含别名);未知名原样返回。
  • T3 星历卡片:吉凶标签、计数、当日总评(D6、D7)。验收:总评纯函数单测覆盖 Purnima / Amavasya / 白分 / 黑分、吉数 0–5 各档、Vishti 追加、缺项不出总评。
  • T4 移除标题栏按钮、加底部提示卡;行运行改版(D8、D9、D10)。
  • T5 记录:BUG-1039(/people 无样式,关联 BUG-1030;写明验收流程缺口:无登录态页面未在浏览器看过);CHANGELOG;PROGRESS(含截图说明);docs/testing/people-ephemeris-ui-20260926.md 真机清单。

开工前置命令

git fetch origin --prune
node -v   # 22.x
git worktree add -b codex/people-ephemeris-ui-20260926 .worktrees/people-ephemeris-ui-20260926 origin/staging
cd .worktrees/people-ephemeris-ui-20260926/frontend && npx tsx --test tests/ephemeris-page.test.tsx tests/people-archive-regressions.test.ts

BUG 编号

写单时 BUG-1038 已被新建对话单预留;本单 BUG-1039,开工时核对。