// R3 · 验收前「本次将更新」清单（HITL gate，UX §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;
}
