docs(tasks): report focus card brief (agent loop, issue #55)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LutgzyJqNhPpZy1nFsJtN3
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
856bc850ba
commit
963276ca2f
@@ -211,6 +211,7 @@
|
||||
|
||||
| 任务书 | 进度 | 主题 | 状态 | 落点 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| `TASK-report-focus-card-20261013.md` | — | **报告开篇「重点」做成摘要卡(agent 循环 issue #55)**:10-08 加的开篇重点从未设计——三重「重点」、标题无样式、MD/AD/PD 行话、数据句堆砌(BUG-1316)。产品选 A 摘要卡 + 名字与日期 + 保留提醒句;引擎出 `jyotish-focus` 围栏,前端一个组件渲染。执行方 Grok | 待领取 | `codex/report-focus-card-20261013` |
|
||||
| `TASK-report-translation-gaps-20261013.md` | — | **个人报告中英混杂、正文图盘空白、上升行、同位列(agent 循环 issue #53)**:中文完整数据版靠短词替换英文,正文残留 218 处英文词与 14 处中英粘连,卫生检查只有黑名单(BUG-1312);完整数据版图盘节只有空标题、无围栏,BUG-1203 的回归(BUG-1313);报告本命表无上升行(BUG-1314);D9 同位列「—」读如没数据,改「是/否」(BUG-1315)。分盘核对段随 T1 自动消失。执行方 Grok | 待领取 | `codex/report-translation-gaps-20261013` |
|
||||
| `TASK-report-translation-gaps-fix-20261013.md` | — | **#53 第 1 次打回**:`a295afa4` 实现四项都验过,但分支未基于最新 staging,且全量 pytest 新增 1 条失败(报告 Jaimini 星位名改成「灵魂星(AK)」后 `test_chara_karaka_8_bphs_order` 未跟改)。要求 rebase + 按三栏改测试,不改 `KARAKA_CN` | 待领取 | `codex/report-translation-gaps-20261013` |
|
||||
| `TASK-report-full-data-edition-20261007.md` | `PROGRESS-report-full-data-edition-20261007.md` | **报告改为完整数据版、删除阅读版**:网站阅读版中文 7.6 万字符 vs 上游 `pl9_ai_density` 97 万;移植原始数据附录 / 清理器 / 时间补充,中英文;我方报告口径(BUG-1199~1229)全部保持;旧报告仍可打开;排在 sync6 之后 | 已验收(Claude 补修 BUG-1282 后合入 staging) | `codex/report-full-data-edition-20261007`(未推 staging) |
|
||||
|
||||
@@ -0,0 +1,144 @@
|
||||
# TASK · 个人报告开篇「重点」页做成摘要卡(issue #55)
|
||||
|
||||
- 日期:2026-10-13
|
||||
- 来源:Gitea issue #55(agent 循环试点),产品负责人截图:报告第 1/39 章「重点」只有一行粗体标题、一行「重点:当前主运 MD …」、一个「## 重点」大标题和四句数据句,「一点 UI 设计都没有」
|
||||
- 执行方:**Grok(Windows + Docker)**,分支 `codex/report-focus-card-20261013`,只推这个分支
|
||||
- 验收:Claude(Linux)
|
||||
- BUG 编号:**BUG-1316**(开工时核对 `docs/BUG_HISTORY.md` 最大号;写作时最大号为 BUG-1315)
|
||||
|
||||
## 1. 基线
|
||||
|
||||
- 基线 commit:`origin/staging` `856bc850b`
|
||||
- 个人报告走完整数据版:`frontend/src/lib/personal-report-longform-generate.ts` 请求体 `edition: "full_data"` → `scripts/pl9_full_data_export.py::render_full_data_markdown` → `scripts/pl9_reader_export.py::render_pl9_parity_markdown`。
|
||||
- 复现(虚构盘):
|
||||
|
||||
```bash
|
||||
PYTHONPATH=.:scripts python - <<'EOF'
|
||||
import copy
|
||||
from scripts.pl9_reader_export import _pl9_export_markdown_for_edition
|
||||
from tests.test_report_english_edition import CASES, _packet
|
||||
print(_pl9_export_markdown_for_edition(copy.deepcopy(_packet(CASES["day"])), "full_data")[:1200])
|
||||
EOF
|
||||
```
|
||||
|
||||
## 2. 事故实证(`856bc850b`)
|
||||
|
||||
虚构日盘中文完整数据版开头,与产品截图结构一致:
|
||||
|
||||
```
|
||||
# 印度占星星盘报告
|
||||
重点:当前主运 MD 北交点,子运 AD 木星,次子运 PD 木星。
|
||||
## 重点
|
||||
- 事业第10宫主 土星 落在第9宫,尊贵为入庙,功能吉凶为功能吉星。
|
||||
- 财富第2宫主 … / 婚恋第7宫主 …
|
||||
- 这段时间可能突出这些宫主所守护的主题,不是确定会发生的事。
|
||||
## 出生资料与图盘 …
|
||||
```
|
||||
|
||||
| # | 问题 | 位置 |
|
||||
| --- | --- | --- |
|
||||
| 1 | 「重点」三次:目录第 1 章、「重点:…」一行、`## 重点` | `scripts/pl9_interpretation_packs.py::opening_focus_block` 写死该行;`scripts/pl9_full_data_export.py::_sanitize_pl9_ai_density_markdown` 在首行没有「摘要:/结论:/重点:」时会注入一段固定的「摘要… / ## 重点 1.2.3.」清单,`_insert_opening_focus` 也按这一行去重,所以这一行是为了躲开注入才存在的 |
|
||||
| 2 | 报告标题与正文一样大 | `frontend/src/components/personal-report/personal-report-markdown-view.tsx::markdownComponents` 无 `h1` 映射;`frontend/src/app/globals.css` 中 `.personal-report-md-article h1` 只设字体(注释仍写「像 `.personal-report-cover h1`」,封面已于 09-29 去掉) |
|
||||
| 3 | 行话与车轱辘话:MD / AD / PD 无起止日期;「功能吉凶为功能吉星」;「宫主 火星 落在」多空格 | `opening_focus_block::lord_line`,`_role` 已返回「功能吉星」又被拼在「功能吉凶为」后 |
|
||||
| 4 | 无版式:四句纯文本列表 | 同上;阅读器把首个 `##` 之前的内容当 lead,与 `## 重点` 同在第 0 章卡片里 |
|
||||
|
||||
## 3. 根因
|
||||
|
||||
10-08 `TASK-report-full-data-fix-20261008` T3 按上游加了「开篇重点:当前三级大运 + 三宫宫主」,验收只要求内容存在,没有任何呈现规定;`frontend/DESIGN.md`「Personal report reader」也没有开篇或标题的条目。09-29 去掉报告封面后,标题只剩字体,没人回头补。**不是回归,是从未设计。** `docs/BUG_HISTORY.md` 检索「重点:」「opening_focus」「当前主运 MD」无记录。
|
||||
|
||||
## 4. 决策记录
|
||||
|
||||
- 产品负责人 2026-10-13 在 issue #55 选 **A:做成设计过的摘要卡**(备选 B 改写两三句、C 删页均未选)。
|
||||
- 标题下**写名字和生成日期**;**保留**末尾提醒句「这段时间可能突出这些主题,不是确定会发生的事」。
|
||||
- 问题 1~4 一并修。
|
||||
- 不推翻任何既有红线;不恢复 09-29 去掉的报告封面(只给标题本身样式)。
|
||||
|
||||
## 5. 硬红线
|
||||
|
||||
1. 不改引擎数值(大运、宫主、落宫、尊贵、功能吉凶的判定);只改呈现。
|
||||
2. 摘要卡的数据由 Python 生成结构化围栏(与 `jyotish-chart` 同一模式),前端只解析和渲染;前端不自算大运或宫主。
|
||||
3. 只做一个新组件;不写第二套 Markdown 渲染、不加 spinner / 骨架(AGENTS.md §6)。
|
||||
4. 旧报告(正文里没有新围栏)必须照旧显示,不崩、不空白。
|
||||
5. 名字只在报告阅读页(本人登录可见)显示;**不得**把名字加进 `frontend/src/lib/report-public-projection.ts` 的公开投影,也不写进任何测试 / 文档 / 提交里的真实姓名(测试用虚构名)。
|
||||
6. 不改数据库结构与迁移;不碰 `frontend/src/app/(app)/page.tsx`;`scripts/jyotish_api_server.py` 不增长。
|
||||
7. 改既有断言按 §7.3 写「原值 / 新值 / 原因」三栏;开工先 grep:`grep -rn "重点:\|## 重点\|Focus: current\|opening_focus\|personal-report-md-lead\|personal-report-md-article h1" tests frontend/tests`(已知:`tests/test_report_full_data_fix.py` 173–174、197 行附近)。
|
||||
8. 不升级依赖,不顺手修别的 warning。
|
||||
|
||||
## 6. 任务分解
|
||||
|
||||
### T1 · 引擎输出结构化「重点」围栏(Python)
|
||||
|
||||
- `opening_focus_block` 改为输出:
|
||||
|
||||
````
|
||||
## 重点
|
||||
```jyotish-focus
|
||||
{"version":1,"periods":[{"level":"md","lord":"Rahu","start":"YYYY-MM-DD","end":"YYYY-MM-DD"},…ad,pd],
|
||||
"domains":[{"key":"career","house":10,"lord":"Saturn","placed":9,"dignity":"…","role":"…"},…wealth/2,relationship/7],
|
||||
"caveat":"这段时间可能突出这些宫主所守护的主题,不是确定会发生的事。"}
|
||||
```
|
||||
````
|
||||
|
||||
起止日期取当前 MD / AD / PD 行自带的 `start` / `end`(`_timing(packet)["dasha"]`,见同文件英文分支已在用 `current_ad.get('start')`);拿不到的写 `null`,不编。`dignity` / `role` 用现有 `_dignity` / `_role` 的公开词(中文版中文、英文版英文)。
|
||||
- 删掉「重点:当前主运 MD …」那一行(中英两版)。
|
||||
- `_sanitize_pl9_ai_density_markdown` 的「开篇摘要」判断与 `_insert_opening_focus` 的去重,改为识别 `## 重点`(英文 `## Focus`)及其下的 `jyotish-focus` 围栏,**不得**因删掉那一行而重新注入固定清单。
|
||||
- 围栏格式写一个 Python 构造函数(建议放 `scripts/report_chart_block.py` 旁新建 `scripts/report_focus_block.py`,或同文件),附 `FOCUS_FENCE_RE`。
|
||||
- 中文残留门(BUG-1312 的 `_zh_body_residue`)对围栏的处理与 `jyotish-chart` 一致:结构化负载不计入正文。
|
||||
- 验收:
|
||||
- 新测试:虚构日盘中英两版,`## 重点` 下恰有一个可解析的 `jyotish-focus` 围栏;`periods` 三级 lord 与 `_current_lords` 一致、日期与大运表一致;`domains` 三行宫号 10 / 2 / 7;全文不再出现「重点:当前主运」与 `MD ` / `AD ` / `PD `(中文版);不出现固定清单「先核对出生资料、图盘」。
|
||||
- `tests/test_report_full_data_fix.py` 相关断言按三栏改。
|
||||
- `tests/test_report_chart_blank_columns.py`、`tests/test_report_english_edition.py`、`tests/test_reader_appendix_language.py`、`tests/test_report_reader_main.py` 全绿。
|
||||
|
||||
### T2 · 阅读页摘要卡组件(前端)
|
||||
|
||||
- `frontend/src/lib/` 新增解析器(参照 `report-chart-block.ts::parseReportChartBlock`),`personal-report-markdown-view.tsx` 的 `pre` 分支识别 `jyotish-focus` 渲染新组件 `ReportFocusCard`(放 `frontend/src/components/personal-report/`)。
|
||||
- 版式(写进 DESIGN.md,用现有 token,不新增颜色):
|
||||
- 第一行「现在走的大运」:主运 · 子运 · 次子运,各写行星中文名 + 起止(`YYYY.MM – YYYY.MM`),三者横排,窄屏换行;中文不出现 MD / AD / PD。
|
||||
- 下面三行:事业 / 财富 / 婚恋。每行左侧领域名,右侧「第 N 宫主 · 行星 · 落第 M 宫」+ 两个小标签(尊贵、功能吉凶),标签沿用站内已有的 pill / badge 样式。
|
||||
- 最后一行提醒句,弱化字色、小一号。
|
||||
- 手机宽度不横向滚动;深浅色都可读。
|
||||
- 解析失败:显示一句「重点数据无效」(英文 "Focus data is invalid"),与图盘无效同口径,不崩。
|
||||
- 导出与公开投影:`frontend/src/lib/report-export-blocks.ts` 把该围栏转成可读文字(参照 `chartBlockText`),导出文件里不得出现原始 JSON;`report-public-projection.ts` 对该围栏的处理与 `jyotish-chart` 一致(按其现有可见性规则),不新增名字字段。
|
||||
- 验收:新测试——用 T1 真实引擎输出生成的 golden(`frontend/tests/fixtures/`,`fixtureProvenance` 写明命令,虚构盘),渲染出三级大运与三行领域、无 `MD`、有提醒句;坏 JSON 渲染失败句;导出文本无 `{"version"`;旧正文(无围栏)快照不变。
|
||||
|
||||
### T3 · 标题样式 + 名字与日期(前端)
|
||||
|
||||
- `markdownComponents` 增加 `h1` 映射与样式:显示字体、明显大于 h2、上下留白;去掉 globals.css 里指向已删封面的过时注释。
|
||||
- 标题下一行小字:`{名字} · 生成于 YYYY-MM-DD`。名字取报告文档 `subject.displayName`(`personal-report-generation.ts` 已写入),日期取 `createdAt`;若阅读页当前拿不到 `displayName`,从报告读取接口带出(仅本人可见的接口,不改表结构)。没有名字时只写日期;标题本身已含名字(引擎 `_pl9_public_report_title` 在有名字时会写「X的印度占星星盘报告」)时不重复名字。
|
||||
- 英文版:`{name} · Generated YYYY-MM-DD`。
|
||||
- 验收:前端测试覆盖「有名字」「无名字」「标题已含名字」三种;`tsc --noEmit` 0 错、`npm run lint` 0 error。
|
||||
|
||||
### T4 · 记录
|
||||
|
||||
- `frontend/DESIGN.md`「Personal report reader」加「开篇重点卡」与「报告标题」两条(版式、token、旧报告兼容、导出口径)。
|
||||
- `docs/BUG_HISTORY.md` 新增 **BUG-1316**(报告开篇「重点」页无设计:三重「重点」、标题无样式、MD/AD/PD 行话、数据句堆砌)。
|
||||
- `docs/tasks/PROGRESS-report-focus-card-20261013.md`、`CHANGELOG.md`。
|
||||
- 真机清单 `docs/testing/report-focus-card-20261013.md`(已随本任务书提供,可补充)。
|
||||
|
||||
## 7. 让步顺序
|
||||
|
||||
T1 → T2 → T3 → T4。T3 的「名字」若需要改报告读取接口且发现牵涉数据库或公开投影,先只做日期 + 标题样式,名字写进 `BLOCKED.md` 并在回报里说明,由 Claude 判断是否 @产品负责人。
|
||||
|
||||
## 8. 验收命令分工
|
||||
|
||||
| 谁 | 命令 |
|
||||
| --- | --- |
|
||||
| Grok 自跑 | `python -m pytest tests/test_report_full_data_fix.py tests/test_report_chart_blank_columns.py tests/test_report_english_edition.py tests/test_reader_appendix_language.py tests/test_report_reader_main.py -q`;前端 `tsc --noEmit`、`npm run lint`、改到 / 新增的前端测试单文件(看 fail 与 cancelled 都为 0)。前端全量 `npm test`、Python 快速门、整站构建**不跑**,以 Claude 为准 |
|
||||
| Claude 验收 | 上述全部 + 全量 `pytest` 与基线逐条比对 + 前端全量 `npm test` + `next build`(`/` 仍 Static,首屏 gzip ±2%)+ 重生成虚构盘中英报告核对围栏 |
|
||||
| 不需要 | `test:db`(不动数据库访问层;若 T3 改了报告读取接口的查询,则需要并按 `windows-known-failures.txt` 比对) |
|
||||
|
||||
## 9. 开工前置命令
|
||||
|
||||
```bash
|
||||
git fetch origin --prune
|
||||
git worktree add -b codex/report-focus-card-20261013 .worktrees/report-focus-card-20261013 origin/staging
|
||||
cd .worktrees/report-focus-card-20261013
|
||||
git log -1 --format=%h # 应为 856bc850b 或其后代
|
||||
grep -n "^## BUG-" docs/BUG_HISTORY.md | tail -3 # 核对最大号
|
||||
grep -rn "重点:\|## 重点\|Focus: current\|opening_focus\|personal-report-md-lead\|personal-report-md-article h1" tests frontend/tests
|
||||
```
|
||||
|
||||
## 10. 环境缺口(预告)
|
||||
|
||||
- 只对**新生成**的报告生效;旧报告照旧显示。
|
||||
- 浏览器级观感留给 `docs/testing/report-focus-card-20261013.md`。
|
||||
@@ -0,0 +1,13 @@
|
||||
# 真机清单 · 报告开篇「重点」摘要卡(issue #55,BUG-1316)
|
||||
|
||||
部署到 staging 后,**重新生成一份个人报告**(旧报告不会变),手机和电脑各看一遍。
|
||||
|
||||
1. 第 1 章最上面是报告标题,明显比正文大;标题下一行小字写「名字 · 生成于 年-月-日」(没有名字的盘只写日期;标题里已有名字时不重复)。
|
||||
2. 「重点」只出现一次(目录里那一条除外),没有单独一行「重点:当前主运 MD …」。
|
||||
3. 第一行写「现在走的大运」:主运、子运、次子运各是哪颗星、从哪年哪月到哪年哪月;没有 MD / AD / PD 字样。
|
||||
4. 下面三行:事业、财富、婚恋,各写「第几宫主、哪颗星、落第几宫」,后面跟两个小标签(强弱、吉凶);没有「功能吉凶为功能吉星」这种重复。
|
||||
5. 最后一行小字提醒「这段时间可能突出这些主题,不是确定会发生的事」。
|
||||
6. 手机上不需要左右滑;深色、浅色模式都看得清。
|
||||
7. 切到 English:同样的卡片,英文标签。
|
||||
8. 导出一份文件,打开后「重点」是文字,不是一串花括号代码。
|
||||
9. 打开一份**以前**生成的旧报告:照旧能看,不白屏。
|
||||
Reference in New Issue
Block a user