Compare commits
2 Commits
1b3e43d0ec
...
1c9b866f92
| Author | SHA1 | Date | |
|---|---|---|---|
| 1c9b866f92 | |||
| 379f0e6f5f |
@@ -4987,6 +4987,22 @@
|
||||
- 复发自:无
|
||||
- 修复版本:4b02f63a
|
||||
|
||||
## BUG-332 | 校时 skill 呈现改完后,前端质量门仍锁旧分盘句禁令和透传分数账本
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-08-20
|
||||
- 最近更新:2026-08-20
|
||||
- 影响面:Gitea `backend-quality-gate` 的 `npm test --prefix frontend`、`frontend/tests/rectification-agentic-entry.test.ts`、`frontend/tests/rectification-candidate-result.test.ts`、公开 `event_dasha_ledger`
|
||||
- 用户现象:质量门 `tests 1840` 中 `pass 1838` / `fail 2`。日志末尾是已通过的 health truth-source 合同;真正失败是校时 Agent 提示合同和候选账本解析。
|
||||
- 触发条件:把出牌/采用轮改成粘贴 `skill_verification_report`,并把账本 `user_meaning` 透传引擎原文后,再跑完整前端套件。
|
||||
- 根因:`rectification-agentic-entry` 仍要求提示词写「分盘句和宫位表由界面展示」,与现行「验证报告进正文、宫位表仍由盘面展示」冲突。`parseEventDashaLedger` 改为原样采用 `user_meaning` 后,公开账本会带上 `12.5 points` 一类评分泄漏。
|
||||
- 修复:入口合同改为锁定 `skill_verification_report` / D9-D10 类型对照,并明确不得再写旧分盘句禁令。公开账本只从 `summary`、匹配档和结构化 `gochara` 重建文案,拒绝 `points` 泄漏。
|
||||
- 验证:`frontend/tests/rectification-agentic-entry.test.ts`、`frontend/tests/rectification-v9-agent.test.ts`、`frontend/tests/rectification-candidate-result.test.ts`、`frontend/tests/rectification-eight-method.test.ts`。完整 `npm test --prefix frontend` 由 Gitea quality gate 验收。
|
||||
- 防复发:校时提示词合同必须与 `rectification-v9-agent` 同向;公开 ledger/window copy 不得透传可能含分数或星座类型标签的引擎 `user_meaning`。
|
||||
- 相关记录:BUG-307、BUG-308、BUG-331
|
||||
- 复发自:BUG-307(当时把分盘句和宫位表从正文挪到界面后,入口合同锁死了那句提示词)
|
||||
- 修复版本:379f0e6f
|
||||
|
||||
## BUG-329 | 生时纠正 Agent 回答在结算后一次性出现,推理中无法停止
|
||||
|
||||
- 状态:resolved
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
const TIME = /^(?:[01]\d|2[0-3]):[0-5]\d$/;
|
||||
const UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
||||
const DENIED = /lon|latitude|longitude|degree|score|weight|fingerprint/i;
|
||||
const DENIED = /lon|latitude|longitude|degree|score|weight|fingerprint|\bpoints\b/i;
|
||||
const LAYER_LABEL: Record<WindowScanLayer, string> = {
|
||||
d1: "本命上升",
|
||||
d9: "D9",
|
||||
@@ -241,12 +241,16 @@ export function parseEventDashaLedger(value: unknown): readonly EventDashaLedger
|
||||
const gochara = row.gochara === "activated" || row.gochara === "not_seen"
|
||||
? row.gochara
|
||||
: null;
|
||||
const meaning = asText(row.user_meaning, 220) ?? `${summary}:${matchLabel}`;
|
||||
const gocharaNote = gochara === "activated"
|
||||
? ";Gochara 激活相关宫"
|
||||
: gochara === "not_seen"
|
||||
? ";Gochara 未见对应"
|
||||
: "";
|
||||
rows.push({
|
||||
summary,
|
||||
match,
|
||||
match_label: matchLabel,
|
||||
user_meaning: meaning,
|
||||
user_meaning: `${summary}:${matchLabel}${gocharaNote}`,
|
||||
gochara,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -466,7 +466,9 @@ test("rectification Agent output stays natural and keeps tool execution silent",
|
||||
assert.match(agent, /禁止只说记下了、会话会保留、以后再继续/);
|
||||
assert.match(agent, /暂时想不到了 \/ 没有更多 \/ 先这样/);
|
||||
assert.match(agent, /on_user_stop/);
|
||||
assert.match(agent, /分盘句和宫位表由界面展示/);
|
||||
assert.match(agent, /skill_verification_report/);
|
||||
assert.match(agent, /D9\/D10 类型对照/);
|
||||
assert.doesNotMatch(agent, /分盘句和宫位表由界面展示/);
|
||||
assert.match(skill, /不得叙述读取 Skill/);
|
||||
assert.match(skill, /完整回复可以(?:是)?零(?:个)?问题/);
|
||||
assert.match(skill, /同一用户可以保留多个可恢复 Case/);
|
||||
|
||||
Reference in New Issue
Block a user