diff --git a/docs/tasks/README.md b/docs/tasks/README.md index 92f3f2d8..04c088a3 100644 --- a/docs/tasks/README.md +++ b/docs/tasks/README.md @@ -87,6 +87,7 @@ | `TASK-rectification-timeline-fix-20260909.md` | `PROGRESS-rectification-timeline-fix-20260909.md` | 时间轴修复单:宽度读数改含两端分钟数(与 BUG-593 报告/卡片一致);标记改读推断层候选全集,被淘汰分钟留在原地变空心(客户端投影只含 active,DESIGN §10 描述在真实数据下画不出) | 已验收通过 | `92e3d5e7`(BUG-602~603) | | `TASK-rectification-conversation-economy-20260909.md` | `PROGRESS-rectification-conversation-economy-20260909.md` | 对照竞品后产品拍板三条:开场三句讲做法 + 一次收多件(推翻 opening brief「不要一次说完/不举例」与 SKILL L52);采集题「没有 / 记不清」按钮(不做示例骨架条);每轮只留一句(方法句进活动记录、点选旁白去领先落后、证据轮正文一句复述 + 服务端裁剪);Skill 10.0.19 | 已验收通过(2 条 P3 备注) | `aa7ccb30` + `1453fb16`(BUG-604~606,Skill 10.0.19) | | `TASK-consultation-daily-empty-answer-20260909.md` | `PROGRESS-consultation-daily-empty-answer-20260909.md` | 首页「深入看今日」计算完成却 `empty_answer`:入口定的 `timing` 被模型改成 `general`(`canonicalDomainPlan` 以模型为准),分段写作标题与今日格式错位,分段 `maxSteps=1` 且工具仍可调 → 模型在分段里再调工具、零正文;思考流按 chunk 过滤漏出缺词英文 | 待执行 | `codex/consultation-daily-empty-answer-20260909`(BUG-612~613;609~611 已被 sync2 修复单占用) | +| `TASK-rectification-compare-card-polish-20260909.md` | `PROGRESS-rectification-compare-card-polish-20260909.md` | 三列卡两列经历对照 0、三列无未来窗:引擎按引擎前三算 by_time,卡片按推断前三查表,键不匹配(BUG-614);交付旁白被 BUG-606 裁成一句(BUG-615);设计减法:相同性格句只写一次、经历对照说人话、删小标题、右栏本命宫位改北印星盘、换升时刻默认折叠 | 待执行 | `codex/rectification-compare-card-polish-20260909`(BUG-614~615) | ### 聊天主链路与首页 diff --git a/docs/tasks/TASK-rectification-compare-card-polish-20260909.md b/docs/tasks/TASK-rectification-compare-card-polish-20260909.md new file mode 100644 index 00000000..443603b7 --- /dev/null +++ b/docs/tasks/TASK-rectification-compare-card-polish-20260909.md @@ -0,0 +1,63 @@ +# TASK · 三列对比卡修正与减法:按候选分钟算经历对照与未来窗(键不匹配)、交付旁白被裁成一句、卡片与右栏做减法、本命宫位改北印星盘(2026-09-09) + +- 基线:`origin/staging` @ `365ad799`(三列卡 `a43a6db8`、对话精简 `aa7ccb30`、时间轴修复 `92e3d5e7` 均已合入) +- 分支:`codex/rectification-compare-card-polish-20260909`,基于 `origin/staging` +- 执行方:coding agent;验收:Claude +- 涉及文件:`scripts/rectification/refinement_packet.py`(`build_refinement_packet` 的 `columns` / `column_times_for_compare`)、`scripts/rectification/event_probes.py`(`prospective_windows_by_time`)、`frontend/src/lib/rectification-agentic/v9/divergence-panel.ts`(列投影、缺数据的表达)、`frontend/src/components/rectification-range-delivery.tsx`、`frontend/src/lib/rectification-agentic/user-copy.ts`、`frontend/src/lib/rectification-agentic/v9/agent-run.ts`(`trimEvidenceTurnBody` 的适用范围)、`frontend/src/components/rectification-board.tsx`、`frontend/src/components/rectification-house-table.tsx`、复用 `frontend/src/components/personal-report/vedic-chart-svg.tsx`(`VedicChartSvg` + `NorthIndianChartModel`)、`frontend/src/app/globals.css`、`frontend/DESIGN.md`、`frontend/docs/VOICE.md` +- BUG 编号起点:**BUG-614**(`docs/BUG_HISTORY.md` 当前最大 BUG-611;612/613 已由 `TASK-consultation-daily-empty-answer-20260909.md` 占用) +- 优先级:**P1**(卡片正在展示错误数字:"强相关 0 · 有关联 0 · 弱关联 0"、"未来一年没有明显的窗口") +- 设计口径:**less is more,避免过度提示,用起来顺**。本单每一条减法都要能回答"删掉它用户会少知道什么",答不上来就删。 + +## 1. 事故实证(2026-09-09 staging,只写结构) + +三列卡:04:49(51%)/ 04:47(24%)/ 04:53(24%)。 + +| 现象 | 事实 | +| --- | --- | +| 第 2、3 列"强相关 0 · 有关联 0 · 弱关联 0" | 引擎在 compare 里按**引擎分数前三的分钟**算 `event_dasha_ledger_by_time`(`refinement_packet.py::column_times_for_compare(candidate_times, representative)`,客户端没有传 `column_times`,grep 为空),而卡片的三列是**推断层后验前三**。两套前三不同,`divergence-panel.ts` L313 按时间查表查不到,只有代表分钟回退到 `eventDashaLedger` 才有数 | +| 三列都写"未来一年没有明显的窗口" | 同一原因:`prospectiveWindowsByTime[time]` 三个键都查不到,`?? []` 后文案把"没算"说成"没有" | +| 第 1、2 列性格三句一字不差 | 两分钟同在天秤/巨蟹/月宿较早一侧;三列写全的决定让相同内容重复出现 | +| 交付旁白只剩"校正到这里可以收口了。" | BUG-606 的 `trimEvidenceTurnBody`(超过两句只留首句)对所有 evidence 轮生效,交付轮也是 evidence 轮,BUG-595 定的"交付正文三句"被裁掉 | +| 右栏 | 宫位表 + 确认门折叠 + 换升时刻逐分钟 LayerChips + 显示层折叠 + 两段本命上升折叠。时间轴上线后,换升时刻列表与它表达同一件事(哪些分钟在换升) | + +## 2. 决策记录 + +1. **BUG-614:by_time 对引擎全部候选分钟计算,不再只算三个。** `build_refinement_packet` 的 `columns` = 引擎 `candidate_times` 去重全集(≤9,`minute_step=1` 时仍是引擎给出的候选集,不是整窗 31 分钟);`event_dasha_ledger` 是字典查表,`prospective_windows_for_time` 每分钟一次 Dasha 时间线,`column_compare_ms` 写进度记录,预期 <1s。客户端投影:找不到键时**不得**回退成 0 或"没有窗口",写 `fit: null` / `windows: null`,卡片渲染为"这一分钟还没对照"(一句,灰字)。 +2. **BUG-615:交付轮不裁句。** `trimEvidenceTurnBody` 只对"本轮之后仍有下一问"的 evidence 轮生效;本轮 `persistNextInterviewIfIdle` 返回 `terminalNote`(交付)时保留 ≤3 句(BUG-595 决策 4 的口径),超过 3 句才裁到 3 句。 +3. **卡片减法(设计)** + - 相同的句子只写一次:三列共有的性格句提到卡片顶部一行("三个时间的事业盘都在巨蟹座:做事以照顾人为主"),列内只留**有差别**的句子;某列没有差别句就不显示性格块,不写"同上"。 + - 经历对照改说人话:一行 "8 件经历里 7 件对得上,最不合的是 2024 年 5 月那段感情"(数字来自 strong+medium / total,最不合取 worst);删掉"强相关 4 · 有关联 3 · 弱关联 1"和"经历对照"标题。 + - 未来窗一行:"下一个值得留意的时段:2027 年 3 月前后(事业)";没有就一行"未来一年没有明显的时段";没算出来一行"这一分钟还没对照"。删"往后 12 个月"标题。 + - 列内不再有 `

` 小标题;每列 = 时间 + 相对可能性 + 至多三行 + 「更像这个」。 + - 卡顶保留一行范围与经历数;卡底边界句保留;「查看验证报告」保留。 +4. **右栏减法(设计)** + - **本命宫位改北印星盘**:用 `VedicChartSvg`(`NorthIndianChartModel { houses: [{houseNumber, sign, occupants}] }`)渲染 `house_tables_by_time[代表分钟]`,宫位表 `RectificationHouseTableView` 退为星盘下方的 `
`(读屏与复制仍可用)。换分钟时(`changedHouses` / `lagnaChanged`)只高亮变化的宫,不做动画。 + - **换升时刻折叠**:时间轴已常驻显示范围与候选点,右栏"换升时刻"整段默认收进 `
`(summary:"换升时刻 · N 个"),逐分钟 LayerChips 不变;"显示层"子折叠并入同一折叠。 + - 确认门折叠、两段本命上升折叠保留原样。 + - 右栏顶部不加任何新说明文字。 +5. 不动采用 RPC、各道门槛、`SCORE_DELTA`、四选项合同、时间轴;Skill 不 bump(只改用户文案与投影)。 + +## 3. 任务分解 + +- 3.1 BUG-614:引擎 columns 全集 + 客户端 null 表达;测试——`test_rectification_v5_services.py` 断言 `set(ledgers) == set(candidate_times)`、`column_compare_ms < 1000`;`rectification-delivery-ui-simplify-20260908.test.ts` 扩:推断层前三与引擎前三不同时三列 `fit` 都非 null;键缺失时 `fit === null` 且 DOM 出现"这一分钟还没对照"、不出现 "0 · 0 · 0"。 +- 3.2 BUG-615:`agent-run` 交付轮 ≤3 句;测试——mock 交付轮模型写 4 句 → 落库 3 句;普通证据轮 3 句 → 1 句(既有行为不变)。 +- 3.3 卡片减法:投影加 `shared_traits: string[]`、列内 `traits` 只含差异;`fit_line` / `window_line` 由服务端拼好(文案进 `user-copy.ts`,对照 VOICE.md);组件删 `

`;`agent-voice-copy-contract` 收新句、把"强相关""有关联""弱关联"加进用户可见文案禁用词。三栏说明。 +- 3.4 右栏:北印星盘 + 折叠;`rectification-board` 合同测试三栏;`/` 仍 Static、首屏 gzip ±2%(星盘组件已在报告分包,校正面 `dynamic()` 分包不进首屏)。 +- 3.5 记录:BUG-614(关联 BUG-597)、BUG-615(关联 BUG-606 / BUG-595);`CHANGELOG.md`;`frontend/DESIGN.md`(交付卡、右栏两节重写,写明"相同句只写一次""换升时刻默认折叠");`VOICE.md`;`PROGRESS-…`;`docs/testing/rectification-scenarios-20260907.md` 交付段更新。 + +## 4. 让步顺序 + +3.1、3.2 当天必做并部署(数字错误);3.3 必做;3.4 北印星盘必做、折叠必做;3.5 不可省。 + +## 5. 开工前置命令 + +```bash +git fetch origin --prune +git worktree add -b codex/rectification-compare-card-polish-20260909 .worktrees/rectification-compare-card-polish-20260909 origin/staging +cd .worktrees/rectification-compare-card-polish-20260909 +ln -s /workspace/Jyotisha/frontend/node_modules frontend/node_modules +ln -s /workspace/Jyotisha/.venv .venv +cd frontend && ./node_modules/.bin/tsc --noEmit; npm run lint 2>&1 | tail -1 +ls tests/rectification-*.test.ts tests/agent-voice-copy-contract.test.ts | grep -v database | xargs npx tsx --test 2>&1 | grep -E "^# (tests|pass|fail)" +cd .. && .venv/bin/python -m pytest tests/test_rectification_v5_services.py -q +```