{
  "version": "0.3.1",
  "date": "2026-09-09",
  "status": "业务闭环已验证；补全运营详情及正式站验证记录",
  "historyNote": "历史问题为本轮依据既有提交及用户反馈补记，不伪称当时已有这份复盘。",
  "history": [
    {
      "version": "0.1.3",
      "commit": "098e6833073704c840836f6e07d9d0e049349093",
      "improvement": "独立导航、订单读取和结算分析入口。",
      "remaining": "人员主档、表单关系和三端设计仍不完整。"
    },
    {
      "version": "0.2.0",
      "commit": "f665083",
      "improvement": "独立人员名册、订单详情、按名册派遣；修正早期登录竞态。",
      "remaining": "仍缺班次标准；休息和加班手填；原型字段不齐。"
    },
    {
      "version": "0.2.1",
      "commit": "9d7bd89973d744f150cfd23b8c845866427bd996",
      "improvement": "测试码统一为大小写不敏感 admin，说明与配置脚本入库。",
      "remaining": "仅修登录便利性，没有消除导航闪框及业务计时缺口。"
    },
    {
      "version": "0.3.0-rc.1",
      "commit": "1a2eb025045bb01309ad227a1fd90cd7dbd3d953",
      "improvement": "班次和表单关系候选实现；本地全套检查及Cloudflare/GitHub检查通过。",
      "remaining": "真实网页验收发现附件等待与删除按钮问题，进入下一修订；尚未当作生产完成。"
    },
    {
      "version": "0.3.0",
      "commit": "4383d111780c79b0c56ca1f58b25fb690efafbf4",
      "improvement": "完成班次、事实计时、审批与结算重构；三条预览业务贯通，生产上线。",
      "remaining": "逐字段复核发现订单费率、备注、绩效异常及附件描述尚未完整显示；0.3.1补齐。"
    }
  ],
  "issues": [
    {
      "id": "R01",
      "title": "导航时反复闪出登录框",
      "before": "页面先显示登录框，再异步确认已有会话。",
      "cause": "未区分“正在确认会话”和“确认未登录”两个状态。",
      "change": "初始隐藏登录框；仅会话确认无效后显示；保留重登录与并发响应防护。",
      "acceptance": "连续页面导航、首登、错误码、会话失效测试。",
      "state": "已修正并验证",
      "evidence": "预览站连续12页切换，登录框闪现0次；三种大小写登录通过。"
    },
    {
      "id": "R02",
      "title": "人员、订单、派遣混在一起",
      "before": "创建订单与选择上下文、从名册派遣被排成含糊步骤。",
      "cause": "没有先定义业务对象和记录粒度。",
      "change": "独立人员、班次、订单、派遣；表单登记册写明对象、编号和前置关系。",
      "acceptance": "从名册与班次建单，派遣引用同一人员和计划；后台关联编号一致。",
      "state": "已修正并验证",
      "evidence": "完整 npm test、链接检查与构建通过；详见本轮验证页和同版本测试代码。"
    },
    {
      "id": "R03",
      "title": "缺少班次和排班依据",
      "before": "只填班次名称，无法知道标准工时。",
      "cause": "把名称当作完整规则，未保存规则版本。",
      "change": "新增班次标准、计划休息和订单/派遣快照；按具体时间查冲突。",
      "acceptance": "修改模板不改变历史订单；跨班次名的重叠排班被拒绝。",
      "state": "已修正并验证",
      "evidence": "完整 npm test、链接检查与构建通过；详见本轮验证页和同版本测试代码。"
    },
    {
      "id": "R04",
      "title": "把计算值交给现场手填",
      "before": "休息分钟和加班分钟缺少事实与标准依据。",
      "cause": "混淆输入事实、计算列与审核决定。",
      "change": "收集实际休息区间或无休息确认；服务端计算净工时、正常工时与待审核超时。",
      "acceptance": "三小时标准与四小时实际；跨夜、休息重叠、累计分段、伪造分钟测试。",
      "state": "已修正并验证",
      "evidence": "A/B/C实际网页计算结果分别为净240/210/210分钟，计费240/180/210分钟。"
    },
    {
      "id": "R05",
      "title": "前台与运营没有完整映射说明",
      "before": "无法逐条解释现场字段在管理端和数据库中的位置。",
      "cause": "界面先行，缺少统一字段登记册。",
      "change": "每表列字段来源、公式、数据库映射与入口；运营显示同源记录分类和详情。 0.3.1进一步补齐订单费率、预算与备注，显示班次名称和版本、绩效异常、附件说明与实收字节。",
      "acceptance": "字段映射执行数据库列校验，实际记录跨页面核对。",
      "state": "已修正并验证",
      "evidence": "登记册逐字段映射通过数据库列检查；三条订单完成到结算和附件读回。 新增详情保留关键采集值的回归断言，避免有数据但页面漏展示。"
    },
    {
      "id": "R06",
      "title": "开发原型不完整、不同步",
      "before": "部分金数据和手机页面只有一段说明，旧原型仍手填分钟。",
      "cause": "原型由另一份手写字段维护，更新时容易脱节。",
      "change": "11 张表的两套原型由同一登记册生成，注明规范版本和未接入状态。",
      "acceptance": "两端表单数量、字段和版本一致；按钮不伪报保存成功。",
      "state": "已修正并验证",
      "evidence": "完整 npm test、链接检查与构建通过；详见本轮验证页和同版本测试代码。"
    },
    {
      "id": "R07",
      "title": "技术用语进入一线操作",
      "before": "人员关联键、英文状态等出现在操作文案。",
      "cause": "把实现字段名直接当作产品用语。",
      "change": "一线页面使用中文业务名称；技术键只留在开发字典。",
      "acceptance": "浏览器检查表单、状态和异常提示。",
      "state": "已修正并验证",
      "evidence": "完整 npm test、链接检查与构建通过；详见本轮验证页和同版本测试代码。"
    },
    {
      "id": "R08",
      "title": "修改经验没有按版本保留",
      "before": "只能看到成品，难以追溯此前哪里错、改了什么。",
      "cause": "发布记录只列功能，没有记录问题和验证依据。",
      "change": "加入逐版复盘、问题编号、代码链接与验证页；历史条目明确为补记。",
      "acceptance": "每次发布均能从版本页进入复盘，并追溯完整提交。",
      "state": "已修正并验证",
      "evidence": "完整 npm test、链接检查与构建通过；详见本轮验证页和同版本测试代码。"
    },
    {
      "id": "R09",
      "title": "附件等待与清理状态不完整",
      "before": "真实浏览器测试中，大素材上传接近超时；中断附件删除后，页面仍显示删除按钮。",
      "cause": "上传没有明确超时；按钮仅按页面模式显示，没有同时检查附件及订单状态。",
      "change": "上传增加90秒超时；已删除或已锁定订单不再显示删除操作。测试使用清晰标识的模拟网页截图，保留真实文件写入和读取验证。",
      "acceptance": "小型PNG经真实API写入R2并读回；中断条目可以清理；已删除或锁定后不可继续删除。",
      "state": "已修正并验证",
      "evidence": "真实小型PNG上传及读取成功；已删除/锁定状态不显示删除按钮的回归测试通过。"
    }
  ],
  "verificationComplete": true
}
