diff --git a/docs/tasks/README.md b/docs/tasks/README.md index bb18d552..7be49b69 100644 --- a/docs/tasks/README.md +++ b/docs/tasks/README.md @@ -78,7 +78,8 @@ | `TASK-rectification-covered-domain-recollect-20260908.md` | `PROGRESS-rectification-covered-domain-recollect-20260908.md` | 范围已收到 2 分钟、决策已是采用,却再问答过的财务题:职业覆盖后的 yearless→采集分支(L2224)不看领域是否已覆盖;`shouldSkipFollowupPersist` 把它当剩余采集挡住出卡;`persistCollectFocus` 撞 id 无条件 `:next` 再插;holdout `occupied` 不认 health/health_pressure 同义 | 已验收通过 | `7ca6ade2`(BUG-590~591) | | `TASK-rectification-same-year-probe-dedupe-20260908.md` | `PROGRESS-rectification-same-year-probe-dedupe-20260908.md` | 答完「2023 年 5 月前后」又问「2023 年前后」(BUG-559 复发):点选不重跑引擎,同一份 probes 里同域同年两题并存;TS 侧 `existenceProbeAsked` 只降权不排除,`inspectDiscriminatorProbes` 连领域+年份规则都没有。决策:同域同年硬排除、相邻年维持降权 | 已验收通过(真实环境未再出同年题) | `8ae17a26`(BUG-592) | | `TASK-rectification-delivery-report-facts-20260908.md` | `PROGRESS-rectification-delivery-report-facts-20260908.md` | 交付轮验证报告写「宽度 29 分钟」「主限偏向 05:06 / 分盘大运偏向 04:59」「04:53 D10 升狮子座」,与卡片(04:51–04:53)矛盾:`skill_verification_report` 用引擎推断前的 width / dasha_agreement,分盘星座让模型自算 | 已验收通过(Skill 10.0.16) | `06e44104`(BUG-593) | -| `TASK-rectification-new-minute-inherit-20260908.md` | `PROGRESS-rectification-new-minute-inherit-20260908.md` | 5 题答完范围 13 分钟,补迁居事件后回弹到 28 分钟:重算换入的新分钟在携带题的 supports/conflicts 里没名字,一律中性、零冲突存活(BUG-587 决策 2 定错,本单推翻:按分盘星座 / 连续分钟段推结论);batch 内重算不触发 BUG-588 范围句 | 待验收 | `codex/rectification-new-minute-inherit-20260908`(BUG-594) | +| `TASK-rectification-new-minute-inherit-20260908.md` | `PROGRESS-rectification-new-minute-inherit-20260908.md` | 5 题答完范围 13 分钟,补迁居事件后回弹到 28 分钟:重算换入的新分钟在携带题的 supports/conflicts 里没名字,一律中性、零冲突存活(BUG-587 决策 2 定错,本单推翻:按分盘星座 / 连续分钟段推结论);batch 内重算不触发 BUG-588 范围句 | 已验收通过(真实环境范围不再回弹) | `be711043`(BUG-594) | +| `TASK-rectification-delivery-ui-simplify-20260908.md` | `PROGRESS-rectification-delivery-ui-simplify-20260908.md` | 产品决定:时间卡按候选分钟逐行直接点选采用(删分歧两列 + 都不像/说不好/按这个范围用/再补一件经历)、删输入框上方「先这样」按钮、删采用后状态条、交付正文收成三句 + 八法报告折叠块(Skill 10.0.17)、交付轮两条助手消息守卫(investigating) | 待执行 | `codex/rectification-delivery-ui-simplify-20260908`(BUG-595~596) | | `TASK-api-not-configured-mislabel-20260904.md` | `PROGRESS-api-not-configured-mislabel-20260904.md` | 16 处路由把数据库瞬断(部署切换窗口)兜底翻译成 503「服务尚未配置」;改为仅配置错误用该文案,其余 `service_unavailable`,收敛为共享 helper | 已验收 | `5483649b`(BUG-542);2 条子进程测试留 CI Node 22 复核 | | `TASK-rectification-ux-20260902.md` | `PROGRESS-rectification-ux-20260903.md` | 会话面空白假死与交互摩擦 | 已验收 | `d159f08e`(09-03 在新基线重做后合入,BUG-505~509) | diff --git a/docs/tasks/TASK-rectification-delivery-ui-simplify-20260908.md b/docs/tasks/TASK-rectification-delivery-ui-simplify-20260908.md new file mode 100644 index 00000000..5441cd6d --- /dev/null +++ b/docs/tasks/TASK-rectification-delivery-ui-simplify-20260908.md @@ -0,0 +1,50 @@ +# TASK · 生时校正交付面精简:时间卡直接选、去掉四个按钮、去掉输入框上的「先这样」与采用后状态条、交付正文收短、交付轮不得出两条消息(2026-09-08) + +- 基线:`origin/staging` @ `be711043`(BUG-594 已合入并部署;本轮转录跑在这版,范围 04:50–04:59 → 04:51–04:59,收敛已可接受) +- 分支:`codex/rectification-delivery-ui-simplify-20260908`,基于 `origin/staging` +- 执行方:coding agent;验收:Claude +- 涉及文件:`frontend/src/components/rectification-range-delivery.tsx`、`frontend/src/components/rectification-agentic-chat.tsx`(L1688 只读范围行、L1733–1750 采用状态条、L1755–1762 输入框上方 `CHOICE_STOP_LABEL` 按钮、`rectification-composer-meta`)、`frontend/src/app/globals.css`、`frontend/src/lib/rectification-agentic/user-copy.ts`、`frontend/src/lib/rectification-agentic/v9/divergence-panel.ts`(投影改为按候选行)、`skills/jyotish-birth-time-rectification/SKILL.md` §9 L119(bump 10.0.17)、`frontend/DESIGN.md`、`frontend/docs/VOICE.md` +- BUG 编号起点:**BUG-595** +- 优先级:**P1**(产品负责人原话:"文案还有 UI 完全是乱的";收敛已通,剩下的是交付面) + +## 1. 事故实证(2026-09-08 staging `be711043`,只写结构) + +1. 职业答完后出现**两条**助手消息:第一条(4 步)已经写了摘要 + "你可以在卡片里选择采用";第二条(2 步)开头"你上一轮说的职业情况已经记下",又写了一遍完整八法报告。中间没有用户输入。 +2. 每条报告都是长篇 markdown(表格、八个方法小节、Technique Audit Table),聊天气泡里表格渲染成平铺文本,读不了。 +3. 区间交付卡下面四个按钮:两列"这段"的分歧对比(本身也是按钮)+「都不像」「说不好」+「按这个范围用」「再补一件经历」。 +4. 输入框上方一直挂着「先这样,先看当前范围」按钮。 +5. 采用后输入框上方出现状态条:"已采用 04:53 · 范围 04:51–04:59 / 改选 / 之后新建对话即按此时间排盘。",同时气泡里又一句"前事核对到这里。之后新建对话即按已采用时间排盘;对不上随时改选。"——而这次根本没有核对题。 + +## 2. 决策记录(产品负责人 2026-09-08 口头决定;本单**推翻** `TASK-rectification-range-delivery-card-20260907.md` 的"两个动作 + 分歧面板"设计与 DESIGN.md L255 的"口述采集上方放先这样按钮") + +1. **时间卡直接选。** 卡片 = 一行标题(这次给出的范围 04:51–04:59 · 对照了 N 件经历)+ **区间内每个候选分钟一行**(代表分钟排第一、标"排盘用"),每行右侧一句该分钟与代表分钟**不同**的分盘特征(来自 `sign_by_candidate` / D9、D10 类型表;相同则空)。**点一行即采用**(行内变"正在采用…"→"已采用"),采用后其它行仍可点,点了即改选(走现有 accept RPC)。底部只留边界句"这只是代表性候选,不是已确认的唯一出生分钟"。删掉:分歧对比两列、「都不像」「说不好」「按这个范围用」「再补一件经历」。`divergence-panel.ts` 的投影改为 `rows: [{time, candidate_id, representative, difference_label}]`。 +2. **输入框上方不再有「先这样,先看当前范围」按钮。** 口述采集与只读范围两种状态都删;停止只保留选择题卡内的「先这样」选项(四选项合同 BUG-390 不动)与生成中的「停止回答」。`rectification-composer-meta`("再补一件经历"后的提示)随决策 1 一起删。 +3. **采用后不再有状态条。** 删 `rectification-adopt-status`(含"改选"链接与"之后新建对话即按此时间排盘")。采用状态只在卡片行内显示。`postAdoptVerifyDone` 在**没有核对题**时改为一句:"已采用 HH:MM,新建对话即按这个时间排盘。"(有核对题时原句保留)。 +4. **交付正文收短,八法报告不进气泡。** 交付轮正文只写三句:范围与代表分钟、对照了几件经历与吻合率、边界句。八法验证报告改由服务端 `skill_verification_report.markdown` 渲染为卡片下方一个折叠块「查看验证报告」(默认收起,`
`,表格用真正的 ``),模型不再写报告。Skill §9 L119 与 `references/candidate-comparison.md` L24/L29 改口径,bump **10.0.17**。 +5. **交付轮只允许一条助手消息。** 第二条消息的触发链未证实(`investigating`):执行方在 `finalizeSuccessfulTurnExit` / `persistExhaustionGateTurn` / 客户端 `send("opening")` / `regenerate` 四条路上加 `rectification_delivery_turn` 日志字段(`trigger`),并在 agent-run 加守卫:本轮 `persistNextInterviewIfIdle` 已返回 `terminalNote` 且 `latestResult.resultId` 未变时,同一 Case 60 秒内的下一次无用户消息的 agent 运行直接返回 `already_delivered`,不计费、不写 turn。 +6. 不动采用 RPC、确认门、各道门槛;不动 `page.tsx`。 + +## 3. 任务分解 + +- 3.1 决策 1:`rectification-range-delivery.tsx` 重写;`rectification-range-delivery-20260907.test.ts` 三栏(原两个动作 + 面板 → 行选;原值/新值/原因);`agent-voice-copy-contract` 收新文案;隐藏文案 `rangeDelivery*`、`divergenceTitle`、`continueCollectFallback` 删除。验收:卡片 DOM 里 `button` 数 = 候选行数;点行调用 `onAccept(candidateId)`;已采用行 `aria-pressed=true`;无「按这个范围用」「再补一件经历」「都不像」「说不好」字样。 +- 3.2 决策 2:删除输入框上方停止按钮与 composer-meta;`rectification-spoken-collect.test.ts`、`rectification-agentic-entry.test.ts` 三栏。验收:`collect_spoken` 状态下 `composer-wrap` 内无 `CHOICE_STOP_LABEL`。 +- 3.3 决策 3:删除状态条;`postAdoptVerifyDone` 分支;`rectification-adopt-*.test.ts` 三栏。验收:采用后 `composer-wrap` 无 `rectification-adopt-status`;无核对题时旁白为新句。 +- 3.4 决策 4:折叠块组件 `RectificationVerificationReport`(`
` + markdown→`
`);Skill 10.0.17(versions/ 快照、registry、`skill-registry.test.ts`);交付旁白模板改三句。验收:交付轮落库 `assistant_message` ≤ 3 句、不含"方法1"/"Technique Audit";折叠块默认 `open=false`。 +- 3.5 决策 5:日志字段 + 守卫 + 用例(mock 两次连续无消息运行 → 第二次 `already_delivered`)。 +- 3.6 记录:`docs/BUG_HISTORY.md` BUG-595(交付面四项,关联 BUG-544/545/558/583)、BUG-596(交付轮两条消息,`investigating`,关联 BUG-462 假 run_failed 的 exit gate);`CHANGELOG.md`(Skill 10.0.17);`frontend/DESIGN.md` L234/L255/L477 改;`frontend/docs/VOICE.md`;`PROGRESS-…`;`docs/testing/rectification-scenarios-20260907.md` 交付段重写。 + +## 4. 让步顺序 + +3.1、3.2、3.3 必做且同一提交(用户直接点名);3.4 必做,若 Skill bump 牵扯广可先做折叠块与正文模板、Skill 句子同提交不得拆;3.5 日志必做、守卫可后置为 P2;3.6 不可省。 + +## 5. 开工前置命令 + +```bash +git fetch origin --prune +git worktree add -b codex/rectification-delivery-ui-simplify-20260908 .worktrees/rectification-delivery-ui-simplify-20260908 origin/staging +cd .worktrees/rectification-delivery-ui-simplify-20260908 +ln -s /workspace/Jyotisha/frontend/node_modules frontend/node_modules +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 tests/skill-registry.test.ts | grep -v database | xargs npx tsx --test 2>&1 | grep -E "^# (tests|pass|fail)" +npm run build 2>&1 | grep -E "○ /|First Load" | head -3 # / 仍 Static,首屏 gzip ±2% +``` diff --git a/docs/tasks/TASK-rectification-new-minute-inherit-20260908.md b/docs/tasks/TASK-rectification-new-minute-inherit-20260908.md index 7b647945..a4f27a58 100644 --- a/docs/tasks/TASK-rectification-new-minute-inherit-20260908.md +++ b/docs/tasks/TASK-rectification-new-minute-inherit-20260908.md @@ -68,3 +68,21 @@ ln -s /workspace/Jyotisha/frontend/node_modules frontend/node_modules 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)" ``` + +## 验收(Claude,2026-09-08,`origin/staging` @ `be711043`,staging 已部署同 SHA) + +| 门 | 结果 | +| --- | --- | +| tsc | 0 错 | +| lint | 0 error / 103 warning | +| 前端 rectification + consultation + voice + skill-registry(非 DB) | 1274 / 0 | +| Python v5_services + growth contract | 全绿 | + +| 项 | 结论 | +| --- | --- | +| 4.1 (a)(b)(c) | 通过。新分钟按分盘星座 / 连续分钟段继承结论;真实 Case(第九次实测)5 题后 04:50–04:59,补事业事件 04:50–05:15→04:50–05:15(有范围句)、补迁居 04:50–04:59→04:51–04:59,不再回弹 | +| 4.1 (d) | 执行方用合成 6 题 + 三次换分钟回放代替(仓库无 `exp_case_head.py`,那是我的 scratch 脚本),接受 | +| 4.2 BUG-588 缺口 | 通过。真实 Case 两轮证据旁白末尾都有"范围从 … 变为 …" | +| 4.3 记录 | 通过 | + +结论:通过。收敛问题到此闭合;交付面精简另立 `TASK-rectification-delivery-ui-simplify-20260908.md`(BUG-595/596)。