6368ebba0f
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0193vBv6w5MV2cifdTUu9H5P
7.7 KiB
7.7 KiB
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,只写结构)
- 职业答完后出现两条助手消息:第一条(4 步)已经写了摘要 + "你可以在卡片里选择采用";第二条(2 步)开头"你上一轮说的职业情况已经记下",又写了一遍完整八法报告。中间没有用户输入。
- 每条报告都是长篇 markdown(表格、八个方法小节、Technique Audit Table),聊天气泡里表格渲染成平铺文本,读不了。
- 区间交付卡下面四个按钮:两列"这段"的分歧对比(本身也是按钮)+「都不像」「说不好」+「按这个范围用」「再补一件经历」。
- 输入框上方一直挂着「先这样,先看当前范围」按钮。
- 采用后输入框上方出现状态条:"已采用 04:53 · 范围 04:51–04:59 / 改选 / 之后新建对话即按此时间排盘。",同时气泡里又一句"前事核对到这里。之后新建对话即按已采用时间排盘;对不上随时改选。"——而这次根本没有核对题。
2. 决策记录(产品负责人 2026-09-08 口头决定;本单推翻 TASK-rectification-range-delivery-card-20260907.md 的"两个动作 + 分歧面板"设计与 DESIGN.md L255 的"口述采集上方放先这样按钮")
- 时间卡直接选。 卡片 = 一行标题(这次给出的范围 04:51–04:59 · 对照了 N 件经历)+ 区间内每个候选分钟一行(代表分钟排第一、标"排盘用"),每行右侧一句该分钟与代表分钟不同的分盘特征(来自
sign_by_candidate/ D9、D10 类型表;相同则空)。点一行即采用(行内变"正在采用…"→"已采用"),采用后其它行仍可点,点了即改选(走现有 accept RPC)。底部只留边界句"这只是代表性候选,不是已确认的唯一出生分钟"。删掉:分歧对比两列、「都不像」「说不好」「按这个范围用」「再补一件经历」。divergence-panel.ts的投影改为rows: [{time, candidate_id, representative, difference_label}]。 - 输入框上方不再有「先这样,先看当前范围」按钮。 口述采集与只读范围两种状态都删;停止只保留选择题卡内的「先这样」选项(四选项合同 BUG-390 不动)与生成中的「停止回答」。
rectification-composer-meta("再补一件经历"后的提示)随决策 1 一起删。 - 采用后不再有状态条。 删
rectification-adopt-status(含"改选"链接与"之后新建对话即按此时间排盘")。采用状态只在卡片行内显示。postAdoptVerifyDone在没有核对题时改为一句:"已采用 HH:MM,新建对话即按这个时间排盘。"(有核对题时原句保留)。 - 交付正文收短,八法报告不进气泡。 交付轮正文只写三句:范围与代表分钟、对照了几件经历与吻合率、边界句。八法验证报告改由服务端
skill_verification_report.markdown渲染为卡片下方一个折叠块「查看验证报告」(默认收起,<details>,表格用真正的<table>),模型不再写报告。Skill §9 L119 与references/candidate-comparison.mdL24/L29 改口径,bump 10.0.17。 - 交付轮只允许一条助手消息。 第二条消息的触发链未证实(
investigating):执行方在finalizeSuccessfulTurnExit/persistExhaustionGateTurn/ 客户端send("opening")/regenerate四条路上加rectification_delivery_turn日志字段(trigger),并在 agent-run 加守卫:本轮persistNextInterviewIfIdle已返回terminalNote且latestResult.resultId未变时,同一 Case 60 秒内的下一次无用户消息的 agent 运行直接返回already_delivered,不计费、不写 turn。 - 不动采用 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.mdBUG-595(交付面四项,关联 BUG-544/545/558/583)、BUG-596(交付轮两条消息,investigating,关联 BUG-462 假 run_failed 的 exit gate);CHANGELOG.md(Skill 10.0.17);frontend/DESIGN.mdL234/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. 开工前置命令
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%