diff --git a/docs/tasks/README.md b/docs/tasks/README.md index 4b71823e..a28e1cc3 100644 --- a/docs/tasks/README.md +++ b/docs/tasks/README.md @@ -512,3 +512,4 @@ | `TASK-synastry-staging-fix-20261021.md` | `PROGRESS-synastry-staging-fix-20261021.md` | #85 婚恋合盘 staging:P0 `.gte` 已在 staging(BUG-1399)。本分支补时间线起止、英文分析逻辑、删模型后旧对话改用默认模型、选人页开关文案,以及合盘创建真库测试(BUG-1400~1403) | 待验收 | `codex/synastry-staging-fix-20261021` | | `TASK-synastry-report-chat-fix-20261020.md` | `PROGRESS-synastry-report-chat-20261018.md` | 大运核对要认报告里的「小运」和英文 mahadasha / antardasha;预填文案只留一句 | 已验收 | `549e37b99` | | `TASK-other-subject-birth-time-edit-20261021.md` | — | 其他人的出生时间可以修改(去掉 `chart_profiles_guard_birth` 的填报时间不可改;推翻 people-archive P1 §验收 2 该条;active 锁不变) | 排队(等 #86 合入) | `codex/other-subject-birth-time-edit-20261021`;动表;不进循环 | +| `TASK-chart-ascendant-slash-20261021.md` | — | #87 上升状态格「不适用」改「/」+ 悬停 / 点按说明;报告上升行同改并在表下加说明(推翻 10-15 口径) | 待领取(等 #86 合入) | `codex/chart-ascendant-slash-20261021` | diff --git a/docs/tasks/TASK-chart-ascendant-slash-20261021.md b/docs/tasks/TASK-chart-ascendant-slash-20261021.md new file mode 100644 index 00000000..be04bb22 --- /dev/null +++ b/docs/tasks/TASK-chart-ascendant-slash-20261021.md @@ -0,0 +1,93 @@ +# 任务书:上升的「状态」格把「不适用」改成「/」,悬停 / 点按显示说明(2026-10-21,issue #87) + +## 基线 + +- 写单时 `origin/staging` = `bd3ce0e7b`。**本单排在 #86 之后**:#86(人名切换、出生资料就地编辑、报告行星表列宽)同样改 `chart-vedic-tab.tsx` 一带与 `scripts/pl9_reader_export.py` 的行星表。开工时 #86 必须已合入 `origin/staging`,以那时的 `origin/staging` 为基线;没合入就不开工,回报「等 #86」。 +- 执行方:Grok(Windows + Docker)。分支 `codex/chart-ascendant-slash-20261021`,工作树 `.worktrees/chart-ascendant-slash-20261021`,只推这个分支。 + +## 现状实证(按符号定位) + +| # | 位置 | 现在写什么 | +| --- | --- | --- | +| 1 | `frontend/src/components/chart-page/chart-vedic-tab.tsx` 的 `AscendantRow`(本命表、月亮盘表共用)最后一格 | `不适用`;函数头注释也写「the status cell says 不适用」 | +| 2 | 同文件 `VargaAscendantRow`,`supportsDignity` 为真时的庙旺格 | `不适用` | +| 3 | `scripts/pl9_reader_export.py`「#### p6 行星主星与状态」表的上升行(`asc_label` 下一行的 `dignity`) | 中文「不适用」,英文 `not applicable` | +| 4 | `frontend/DESIGN.md` 星盘页本命表段(「上升没有尊贵,状态格写「不适用」(2026-10-15…)」)与分盘表那一行(「上升此格「不适用」」) | 现行口径 | + +页面上已有的说明气泡:`chart-page/chart-symbol-help.tsx` 的 `ChartSymbolHelp`。它给子树里带 `data-chart-help` 的元素出气泡:鼠标悬停时显示,触屏点一下显示并停留 `TOUCH_BUBBLE_MS`。现在只包住了星盘图(`VedicLayout` 的 `chart-page-vedic-stage`),表格不在里面。 + +## 根因 + +不是缺陷,是口径变更。上升是命盘起点,不是行星,本来就不判入旺 / 落陷。2026-10-15 为了不让「—」被当成没数据,改写成「不适用」;产品现在认为「不适用」像工程内部用语。 + +## 决策记录(产品负责人 2026-10-21,issue #87) + +1. 上升的状态格(本命表、月亮盘表、分盘表的庙旺格)写「/」。说明句一字不差:「上升点是命盘的起点,不是行星,不判断入旺或落陷」。电脑悬停显示,读屏读得到同一句,手机点一下显示。 +2. 报告的「行星主星与状态」表上升行中英文都写「/」。PDF / 导出没法悬停,所以在**这张表下面**加一行说明:中文用上面那句,英文用「The ascendant is the starting point of the chart, not a planet, so it has no dignity.」。 +3. **推翻 2026-10-15 的「不适用」口径**(DESIGN.md 两处与 BUG-1201 / 1202 相关描述)。执行方按本单改,不得以「历史决定是不适用」为由拒改。 +4. 只改上升这一格。技法审计表、合盘、兑换码、会员等其他地方的「不适用」一律不动。 + +## 硬红线 + +- tsc 0 错;`npm run lint` 0 error;`next build` 后 `/` 仍 `○ Static`;首屏 gzip ±2%。 +- 不新写第二套气泡 / tooltip:说明一律走 `ChartSymbolHelp` + `data-chart-help`(若需要给表格区也包一层 `ChartSymbolHelp`,可以;气泡位置的计算不复制)。 +- 「/」那一格要能被测试稳定找到:给它加固定 class(例如 `chart-page-asc-status`)或断言说明句。不要让测试去匹配裸的 `/`,HTML 里到处都是 `/`。 +- 改任何既有断言写「原值 / 新值 / 原因」三栏(AGENTS §7.3)。 +- 同一提交更新 `frontend/DESIGN.md`;说明句对照 `frontend/docs/VOICE.md`。 +- 不改数据库、不改 `scripts/jyotish_api_server.py`。 + +## 任务分解 + +### A1 · 星盘页三处上升格 + +- `AscendantRow`、`VargaAscendantRow` 的状态格显示「/」,带说明句(悬停气泡 + `aria-label` 或可读的隐藏文字,读屏读到的是那一句而不是「斜杠」);可聚焦或可点,触屏点一下出气泡。 +- 函数头注释改成新口径。 +- 验收:渲染测试断言本命表、月亮盘表、D9 分盘表的上升格内容是「/」、带说明句;`supportsDignity` 为假(旧缓存)时整列仍不显示。 + +### A2 · 报告上升行与表下说明 + +- `pl9_reader_export.py` 上升行 `dignity` 中英文都是 `/`;该表结束后紧跟一行说明(中 / 英各自的句子)。 +- 英文版不得出现汉字(英文版有汉字会被整份丢弃,见 issue #89 / BUG-1272)。 +- 验收:`tests/test_report_chart_blank_columns.py` 中「行星主星与状态」表上升行状态格断言改成 `/`(三栏),并新增断言:中英两版表下各有那一行说明。 + +### A3 · 按源码文本或渲染结果断言的测试(AGENTS §7.8,同轮改) + +| 文件 | 现有断言 | 改成 | +| --- | --- | --- | +| `frontend/tests/chart-varga-table.test.tsx` | D1 表与基线逐字节比对时把上升行替换成 `不适用`;另有三处 `/>不适用不适用庙旺<\|>同位<\|>不适用