Files
Jyotisha/docs/tasks/TASK-rectification-delivery-ui-simplify-20260908.md
T

7.7 KiB
Raw Blame History

TASK · 生时校正交付面精简:时间卡直接选、去掉四个按钮、去掉输入框上的「先这样」与采用后状态条、交付正文收短、交付轮不得出两条消息(2026-09-08)

  • 基线:origin/staging @ be711043(BUG-594 已合入并部署;本轮转录跑在这版,范围 04:5004:59 → 04:5104:59,收敛已可接受)
  • 分支:codex/rectification-delivery-ui-simplify-20260908,基于 origin/staging
  • 执行方:coding agent;验收:Claude
  • 涉及文件:frontend/src/components/rectification-range-delivery.tsxfrontend/src/components/rectification-agentic-chat.tsxL1688 只读范围行、L17331750 采用状态条、L17551762 输入框上方 CHOICE_STOP_LABEL 按钮、rectification-composer-meta)、frontend/src/app/globals.cssfrontend/src/lib/rectification-agentic/user-copy.tsfrontend/src/lib/rectification-agentic/v9/divergence-panel.ts(投影改为按候选行)、skills/jyotish-birth-time-rectification/SKILL.md §9 L119bump 10.0.17)、frontend/DESIGN.mdfrontend/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:5104: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 已返回 terminalNotelatestResult.resultId 未变时,同一 Case 60 秒内的下一次无用户消息的 agent 运行直接返回 already_delivered,不计费、不写 turn。
  6. 不动采用 RPC、确认门、各道门槛;不动 page.tsx

3. 任务分解

  • 3.1 决策 1rectification-range-delivery.tsx 重写;rectification-range-delivery-20260907.test.ts 三栏(原两个动作 + 面板 → 行选;原值/新值/原因);agent-voice-copy-contract 收新文案;隐藏文案 rangeDelivery*divergenceTitlecontinueCollectFallback 删除。验收:卡片 DOM 里 button 数 = 候选行数;点行调用 onAccept(candidateId);已采用行 aria-pressed=true;无「按这个范围用」「再补一件经历」「都不像」「说不好」字样。
  • 3.2 决策 2:删除输入框上方停止按钮与 composer-metarectification-spoken-collect.test.tsrectification-agentic-entry.test.ts 三栏。验收:collect_spoken 状态下 composer-wrap 内无 CHOICE_STOP_LABEL
  • 3.3 决策 3:删除状态条;postAdoptVerifyDone 分支;rectification-adopt-*.test.ts 三栏。验收:采用后 composer-wraprectification-adopt-status;无核对题时旁白为新句。
  • 3.4 决策 4:折叠块组件 RectificationVerificationReport<details> + markdown→<table>);Skill 10.0.17versions/ 快照、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.mdSkill 10.0.17);frontend/DESIGN.md L234/L255/L477 改;frontend/docs/VOICE.mdPROGRESS-…docs/testing/rectification-scenarios-20260907.md 交付段重写。

4. 让步顺序

3.1、3.2、3.3 必做且同一提交(用户直接点名);3.4 必做,若 Skill bump 牵扯广可先做折叠块与正文模板、Skill 句子同提交不得拆;3.5 日志必做、守卫可后置为 P2;3.6 不可省。

5. 开工前置命令

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%