feat(rectification): remove the rectification regenerate button and endpoint (BUG-1056)

T2 of TASK-rectification-grounding-20260927 (product decision P1).
The rectification 「重试(重新生成)」 was a blind agent.generate rewrite that
persisted unchecked text (invented range / fit rate reproduced). Removed:
the regenerate route, regenerate-turn.ts, the regeneration agent and its
read-only tool set, the client regenerate action/state and the
regenerating/canRegenerate props. ChatMessageActions renders the regenerate
button only when onRegenerate is passed; ordinary consultation is unchanged.
The DB function regenerate_agentic_rectification_turn is kept (AGENTS §7.6,
retire in a later round). DESIGN.md / VOICE.md updated; source-contract
tests follow with 原值/新值/原因 notes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
This commit is contained in:
Jesse_Chen
2026-09-27 03:28:27 +08:00
co-authored by Claude Opus 5.5
parent 5a8084494b
commit 84eb23152a
37 changed files with 200 additions and 961 deletions
+7
View File
@@ -2,6 +2,12 @@
This file adapts the full visual analysis in `CLAUDE_DESIGN.md` to the shipped Jyotisha application. `CLAUDE_DESIGN.md` remains the upstream reference; this file is the implementation contract.
## 校正回答没有「重新生成」;范围句结算时出现一次(2026-09-27,BUG-1055~1058)
生时校正里助手回答下面的操作条只有「赞 / 踩 / 复制」三个按钮,不再有「重新生成回答」(BUG-1056:那条路是盲写,不校验就落库)。普通对话的操作条不变,最近一条回答仍可重新生成。`ChatMessageActions` 不传 `onRegenerate` 时不画这个按钮,其余按钮位置不变。
「范围从 A 变为 B。」「这次没有重新比较,稍后再比一次。」「候选比较这次没跑成,下一句话时会自动再试。」这几句服务端事实句只在结算那一帧随最终正文出现一次(`answer.delta` replace),之后不会再被撤回;流式过程中先出现的是模型正文,结算时模型正文可能被裁成一句或去掉数字不符的整句(BUG-606 / BUG-615 口径不变)。没有新组件、没有新动效。
## 普通咨询:数据卡与「多看一眼」(2026-09-27,TASK-consult-evidence-card)
写回答的模型只读数据卡;界面上唯一新增的是写作行在模型补取一段卡外数据时的进行中句:「正在多看一眼:D60 分盘…」(分盘写「Dxx 分盘」,其余用中文名:格局明细、八分法(Ashtakavarga)、六力(Shadbala)、太阳回归等,见 `evidenceLookupSectionLabel`)。它复用写作行(`answer-composition` 活动),不加新行、新组件或动效;第一段正文出来时照常换成写作句。每轮最多一次。补取发生在已放出正文之后时,界面上的正文不会被截断,也不会重复出现:模型若把已写的开头原样重写一遍,重复部分在服务端丢掉(记 `answer-restart-dropped` 校验步)。一步里调工具前没写完的半句过程说明不会再粘到下一步的正文开头(BUG-1059)。
@@ -327,6 +333,7 @@ The birth-time rectification session is the consultation transcript plus a house
| `readonly` | “该校正已结束,只能查看历史。” and “再次校正” | disabled |
| stopped | the row settles with what streamed; a grey caption “已停止,已生成的内容保留;本次不会扣点。” under the body, never `role="alert"` | enabled |
- **Message actions:** a settled rectification reply carries 赞 / 踩 / 复制 only; there is no 重新生成 (BUG-1056). Ordinary consultation keeps it.
- **Rules:** a follow-up turn continues on the live row already in place; `busy` never drops in the middle of a chain. No copy may ask the reader to wait for the server; a gap is a live row with retries, then a repair button. A hydration that timed out is the same gap. A 402 shows “校正点数不足,正在前往兑换…” for 600ms before the page leaves.
- **Board:** before any candidate exists the header clock shows the declared birth minute and the body names it by source — “出生记录时间 HH:MM”, “你填的大概时间 HH:MM”, or “你给的时间段” — then “回答几个问题后,这里会显示宫位随时间的变化.”; the column narrows to `minmax(16rem, 18rem)` (`is-board-empty`) and widens once a result arrives. No house table is invented for the declared time; the snapshot API does not provide one. The range card may add a caption comparing the declared clock to the current range (“与你填的大概时间相差 N 分钟”, or a hospital-record offset with no preference).
- **Accessibility:** the sidebar opening note sets `aria-busy`; the live row is the timeline row (`role="status"` shimmer label); the repair and start actions are real 44px buttons.