Files
writer-work-flow/apps/web/lib/review/accept-preview.ts
Yaojia Wang 6e5d0e88f6 feat(ux): R3 验收前清单 — AcceptPanel「本次将更新」预览
新 lib/review/accept-preview.ts (buildAcceptPreview):据现有 client state 列验收前预期项——晋升版次/提炼摘要/写回裁决/伏笔到期扫描/伏笔建议待登记。仅列后端 accept 事务确实做的事(核对 projects.py accept 端点),不声称改人物 latest_state,带「以验收回执为准」免责。
AcceptPanel 加 foreshadowCount prop + 未阻断时渲染清单;ReviewReport 传 foreshadow.length。
TDD: 4 测。前端门禁绿: lint/tsc/vitest 205/build。
2026-06-20 16:00:51 +02:00

50 lines
1.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// R3 · 验收前「本次将更新」清单HITL gateUX §7.4)。
// 只列后端 accept 事务确实会做的事projects.py accept 端点):晋升版次 + 提炼章节摘要
// + 写回裁决 + 验收后伏笔到期扫描。**不**声称改人物 latest_state / 自动落库伏笔建议
// (那些不在 accept 事务里)。最终口径以后端 AcceptResponse 回执为准。
// 纯逻辑,便于 node 环境单测。
export interface AcceptPreviewInput {
conflictCount: number;
foreshadowSuggestions: number;
}
export interface AcceptPreviewItem {
label: string;
detail: string;
}
// 据现有客户端 state 生成验收前预览项(非落库口径,仅给作者一个「将要发生什么」的预期)。
export function buildAcceptPreview({
conflictCount,
foreshadowSuggestions,
}: AcceptPreviewInput): AcceptPreviewItem[] {
const items: AcceptPreviewItem[] = [
{
label: "晋升章节版次",
detail: "终稿晋升为新的接受版本(旧草稿保留可追溯)",
},
{
label: "提炼章节摘要",
detail: "从终稿提炼一行摘要,追加到记忆真源",
},
];
if (conflictCount > 0) {
items.push({
label: "写回冲突裁决",
detail: `${conflictCount} 条裁决落库留痕`,
});
}
items.push({
label: "扫描伏笔到期",
detail: "验收后台扫描,可能将逾期伏笔置为 OVERDUE",
});
if (foreshadowSuggestions > 0) {
items.push({
label: "伏笔建议待登记",
detail: `${foreshadowSuggestions} 条只读建议,验收不自动落库,需你另行登记`,
});
}
return items;
}