@@ -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` 渲染为卡片下方一个折叠块「查看验证报告」(默认收起,`<details>` ,表格用真正的 `<table>` ),模型不再写报告。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` ( `<details>` + markdown→`<table>` );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%
```