ID,Title,Description,Acceptance,Test_Method,Tools,Dev_Status,Review1_Status,Regression_Status,Files,Dependencies,Notes "A1","R52 执行合同建档与范围冻结","创建并校验 R52 AP 运营深度操作执行合同 CSV,冻结范围仅包含 AP 概览页工作台化、AP 导出端点、风险标记说明审计留痕、支付批次/风险标记/对账异常快捷操作接入;明确本轮不做 Prisma 迁移、不新增重复业务端点。","issues/2026-04-06_r52-ap-operations.csv 列完整、Dependencies 为 JSON 数组字符串、Test_Method 可复现;范围仅覆盖 R52,不混入 R48-R51 收尾或新的 AP 业务模型设计。","命令:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-04-06_r52-ap-operations.csv。检查:1) 对照 AGENTS.md 与 issues/README.md 确认 12 列完整;2) A2-A6 依赖链符合 backend→frontend→reviewer→qa 收口;3) 方案明确复用现有 travel reconciliation confirm 端点,不新增 Prisma 迁移。","manual","DONE","DONE","DONE","issues/2026-04-06_r52-ap-operations.csv","[]","回滚路径:删除本次 CSV 不影响业务。2026-04-06:Issue CSV 已创建并通过 validate_issues_csv.py 校验,范围与依赖已冻结。" "A2","AP 导出端点与风险说明审计留痕扩展","在 exports.js 新增 POST /api/exports/ap-operations,并扩展 riskFlags resolve/dismiss 接口接收可选 note,仅写入 audit extra.note,不新增数据库字段。","POST /api/exports/ap-operations 支持 csv/xlsx 与待付款筛选、风险 bucket 过滤;导出一次包含待付款批次、异常付款项、开放风险标记、对账异常四块数据;POST /api/risk-flags/:id/resolve|dismiss 保持原权限与响应结构,新增 note 能进入审计日志 extra.note。","命令:export PATH=/home/shunli/.nvm/versions/node/v22.20.0/bin:$PATH && cd server && npx prisma validate && node --check src/routes/exports.js && node --check src/routes/riskFlags.js && npm test -- server/tests/unit/routes/exports.apOperations.test.js server/tests/unit/routes/riskFlags.test.js。业务:1) 导出 CSV/XLSX 含四块数据且应用当前筛选;2) 风险标记解决/驳回可提交 note,状态流不变且 audit extra.note 可见。","manual","DONE","DONE","DONE","server/src/routes/exports.js|server/src/routes/riskFlags.js|server/tests/unit/routes/exports.apOperations.test.js|server/tests/unit/routes/riskFlags.test.js","[""A1""]","回滚路径:移除 AP 导出端点并恢复 riskFlags resolve/dismiss 仅接收空 body 的旧行为。无 Prisma 迁移,回退仅需代码回滚。2026-04-06:npx prisma validate、node --check、exports.apOperations.test.js 与 riskFlags.test.js 通过。" "A3","AP 概览页 Tab 化与待付款/异常付款快捷操作","重构 ApOperationsPage 为摘要卡片 + Tabs 工作台,新增刷新与导出按钮,并接入待付款批次筛选、快捷复核、快捷取消、失败付款项重试/详情/关联跳转;同时为 PaymentBatchesPage 补 ?id= 深链选中能力。","AP 页支持待付款、异常付款、风险标记、对账异常四个 Tab;待付款可按实体类型与创建时间范围本地筛选,并复用原 review/cancel/execute 接口完成操作;PaymentBatchesPage 访问 /payment-batches?id= 时能定位到指定批次,不影响原页面交互。","命令:export PATH=/home/shunli/.nvm/versions/node/v22.20.0/bin:$PATH && cd client && npm run typecheck && npm run build。业务:1) 待付款 tab 可筛选并从 AP 页直接复核/取消;2) 高风险批次快捷复核时出现“此批次为高风险,需二次复核”提示;3) 异常付款 tab 可查看失败详情、确认后重试执行、跳到报销详情或差旅申请详情。","manual","DONE","DONE","DONE","client/src/pages/ApOperationsPage.tsx|client/src/api/apOperations.ts|client/src/api/paymentBatches.ts|client/src/api/travelPayments.ts|client/src/pages/PaymentBatchesPage.tsx","[""A1""]","回滚路径:恢复 AP 页只读概览实现并移除 PaymentBatchesPage 的 ?id= 深链逻辑。2026-04-06:ApOperationsPage 与 PaymentBatchesPage 深链已实现,client typecheck/build 通过;待执行浏览器级业务回归。" "A4","风险标记与对账异常操作接入","在 AP 工作台接入开放风险标记的 resolve/dismiss 弹窗与状态 badge,并在对账异常 Tab 复用现有 confirm 端点与详情查询,确保仅具备 travel.payment.manage 的用户可执行确认。","风险标记 Tab 支持全部/异常风险/预算超支 bucket 筛选,行内展示 open/resolved/dismissed badge,并可填写说明后解决或驳回;对账异常 Tab 可查看订单金额与交易金额差异、异常代码和快照,确认按钮仅对具备 travel.payment.manage 的用户显示/启用。","命令:export PATH=/home/shunli/.nvm/versions/node/v22.20.0/bin:$PATH && cd client && npm run typecheck && npm run build。业务:1) 风险标记可解决/驳回且审计带 note;2) 对账异常详情弹窗展示快照;3) 无 travel.payment.manage 的用户只能查看、不能确认。","manual","DONE","DONE","DONE","client/src/pages/ApOperationsPage.tsx|client/src/api/feeControl.ts|client/src/api/travelReconciliation.ts","[""A2"",""A3""]","回滚路径:移除 AP 页中的风险与对账快捷操作,恢复只读展示。2026-04-06:风险/对账快捷操作已接入,client typecheck/build 通过;待执行浏览器级业务回归。" "A5","R52 reviewer 权限与一致性复核","按 reviewer 清单复核 AP 页快捷操作是否严格复用原页面端点与权限,检查高风险提示、对账确认权限收口、导出筛选一致性与风险 note 的审计落点。","review 结论覆盖权限边界、状态流、导出一致性和高风险提示;发现的问题已修复或在 Notes 中明确留痕,无新增越权入口、重复业务端点或状态流回归。","检查:1) AP 页 review/cancel/execute/resolve/dismiss/confirm 是否分别复用原端点与同权限;2) 对账确认按钮仅在同时具备 travel.payment.manage 时可见;3) 导出筛选与页面一致;4) 风险 note 仅进入 audit extra.note,不写业务表字段。若发现问题,修复后重新执行相关 typecheck/build 与后端单测。","manual","DONE","DONE","DONE","issues/2026-04-06_r52-ap-operations.csv|server/src/routes/exports.js|server/src/routes/riskFlags.js|client/src/pages/ApOperationsPage.tsx","[""A2"",""A4""]","回滚路径:若 reviewer 发现权限或状态流问题,优先回退对应快捷操作入口,再重新发布。2026-04-06:已完成本地 reviewer 风格复核,确认 AP 页快捷操作复用原端点与权限,高风险提示、travel.payment.manage 收口、导出筛选与 risk note 审计落点符合方案。" "A6","QA、状态回填与提交收口","执行 R52 post-check 与业务回归,回填 CSV 状态并完成提交收口,确保 AP 工作台操作、导出与深链无回归。","后端与前端校验全部通过;待付款、失败重试、风险处理、对账确认、导出、支付批次深链回归完成;issues/2026-04-06_r52-ap-operations.csv 的 Dev_Status、Review1_Status、Regression_Status 按测试结果回填。","命令:export PATH=/home/shunli/.nvm/versions/node/v22.20.0/bin:$PATH && cd server && npx prisma validate && node --check src/routes/apOperations.js && node --check src/routes/exports.js && node --check src/routes/riskFlags.js && npm test -- server/tests/unit/routes/exports.apOperations.test.js server/tests/unit/routes/riskFlags.test.js && cd ../client && npm run typecheck && npm run build。业务:1) AP 页可完成待付款筛选、复核、取消、失败重试、风险处理、对账确认与导出;2) /payment-batches?id= 深链可定位指定批次;3) 高风险复核提示和对账确认权限符合方案。","manual","DONE","DONE","DONE","issues/2026-04-06_r52-ap-operations.csv|server/src/routes/exports.js|server/src/routes/riskFlags.js|client/src/pages/ApOperationsPage.tsx|client/src/pages/PaymentBatchesPage.tsx","[""A5""]","回滚路径:若 QA 发现关键回归,暂停提交并回退对应代码变更。2026-04-06:本地 post-check、git diff --check、后端单测与前端 build 已通过;待执行浏览器级业务 QA 与提交收口。2026-04-06:OpenClaw 浏览器回归通过,AP 工作台四 Tab 操作、导出、深链均正常。"