状态:已实施(2026-09-02;真机验收待执行) 依据:v0.18 设计规格 §七/§十([ ] 已归档)· 用户排期裁决(2026-09-02:M2 先行 → v0.18.2 AI 规划师) 需求:REQ-255(毕业仪式与报告快照)/ REQ-256(回顾流时间线)/ REQ-257(暂停/放弃与组删除提示)——已登记需求池
毕业=用户可见确认仪式(延续 v0.11.3 结算仪式纪律):判据全达标 → 报告预览 → 确认后 goal_settle 生成毕业报告快照(里程碑/子组结算/复习统计/成果物清单——目标删除后仍可读)+ 状态归档 + 埋点;目标详情新增回顾流时间线(创建→里程碑→组结算→毕业,全现算零双写);暂停/恢复外新增放弃(可选原因、无惩罚文案);绑定组被删的「随组结算」里程碑显示降级提示(按手动确认)。全程无 AI(M1/M2 零 AI 铁律)。
做:goal_graduation_reports 快照表(FK SET NULL——报告独立于目标行)· goal_retro 纯函数(报告组装/回顾流/纯文本摘要,无 AI)· goal_settle(守卫:状态机+判据未达标拒绝/重复毕业拒绝/放弃后拒绝)· goal_retro / goal_abandon(原因可选、200 字上限)· list_goal_graduations(毕业档案)· GraduateDialog/RetroTimeline/详情面板(毕业按钮 ready 门控/放弃内联确认/降级提示条)/GoalPage 毕业档案区 · 埋点 goal_graduated/goal_abandoned。
不做:AI 教练/规划(v0.18.2)· 生成式复习 · 目标间依赖 · 毕业报告的 markdown 导出。
- 守卫链:goal_settle ① 状态机(毕业仅从 active 发起——已毕业/放弃/暂停拒绝)② 判据(graduation_readiness 未全达标拒绝,明细回显——仪式不豁免信号);快照先写、状态后归档(原子同命令)。
- 快照哲学:report_json 独立表(goal_id ON DELETE SET NULL,goal_name 冗余)——「毕业报告与回顾流快照永久保留」(同 notes_versions 哲学,验收 5)。
- 回顾流现算:created/milestone(仅完成态入线——skipped 无发生时刻不造假事件)/settlement(按组折叠+历史计数)/graduated;排序按发生时刻升序。
- 降级提示:group_settled 型里程碑 ref_group_id NULL ⇒「绑定组已删除,判据信号丢失——按手动确认」(数据层 CASCADE 语义随 M1 已就绪)。
- 放弃:active/paused→abandoned(终态拒绝);可选原因入 metrics payload(200 字上限);无惩罚文案(弹性承诺上延)。
- 纯函数 TDD:goal_retro golden(报告全字段透传/回顾流四类时间线/跳过不造假事件/空边界/文本摘要边界)
- 数据层:毕业报告快照 CRUD + 目标删除后报告保留(验收 5);组结算快照
- 命令层:毕业守卫矩阵(未达标/重复毕业/放弃后毕业拒绝)/放弃守卫(终态拒绝/原因截断)/埋点断言
- 前端 Vitest:GraduateDialog 确认流(mock goal_settle:预览→确认→报告渲染→失败不回退)
- 验收:① 目标详情「🎓 毕业仪式」判据未满禁用+明细可见 ② 确认后状态=已毕业+回顾流时间线生成+报告快照落库 ③ 目标删除后「毕业档案」仍可读报告 ④ 放弃显式可用+可选原因+无惩罚文案 ⑤ 组删除后降级提示条出现 ⑥ 回归:cargo test / clippy / vitest / tsc 全绿
- 规格:v0.18 设计规格([ ] 已归档)
- 后续:v0.18.2 AI 目标规划师(设计已批准,[ ] 已归档,REQ-251~254)· 生成式复习(REQ-021 单独立项)
- 真机验收:建目标→达成判据→毕业仪式→报告快照→删除目标→档案可读 全链路走查(REQ-146 批)