diff --git a/docs/todo-reconciliation.md b/docs/todo-reconciliation.md index 8cc5bb4b..59c706b8 100644 --- a/docs/todo-reconciliation.md +++ b/docs/todo-reconciliation.md @@ -1,31 +1,31 @@ -# 历史 TODO 清账映射(A/C -> E/F) +# 历史 TODO 清账映射(A/C -> B/D/F) -**日期**:2026-02-09 +**日期**:2026-03-13 **范围**: - `issues/2026-02-07-p2-kickoff.csv` - `issues/2026-02-08_14-20-25-p2-ci-and-tests.csv` -**目标**:对历史 `TODO` 项逐条给出去向:`implemented | superseded | still-open`。 +**目标**:对历史 `TODO` 项逐条给出去向:`implemented | superseded | still-open`,并以“后续执行合同 + 当前代码路径”形成可审计证据链。 ## 1. 2026-02-07-p2-kickoff.csv | Legacy ID | 标题 | 清账状态 | 对应实现 / 去向证据 | | --- | --- | --- | --- | -| A1 | 付款凭证扩展与pay幂等冲突判定 | implemented | `issues/2026-02-08_11-02-30-p2-stabilization.csv:B1`(DONE);`server/src/routes/reimbursements.js` 含 `already_paid_conflict` 与 `idempotent` 处理 | -| A2 | 委派有效期与自动回收 | implemented | `issues/2026-02-08_11-02-30-p2-stabilization.csv:B2/B3`(DONE);`server/src/routes/delegations.js` 与 `server/src/jobs/delegationRevokeJob.js` | -| A5 | Sprint1回归护栏前置 | superseded | 由后续全量回归接管:`server/scripts/regression-workflow-actions.sh`、`server/scripts/regression-all.sh` 持续演进,见 `issues/2026-02-08_17-05-00-p3-full-delivery.csv:D12` | -| A3 | OCR真对接与异步处理 | implemented | `issues/2026-02-09_13-39-02-p5-blueprint-v3.csv:F11/F19b`(DONE);`server/src/services/ocr/tencent.js` 与 `server/src/jobs/pgBossJobs.js` | -| A3-LOCK | OCR多实例并发幂等锁 | implemented | `issues/2026-02-09_13-39-02-p5-blueprint-v3.csv:F19b`(DONE);`server/src/jobs/ocrJob.js`(并发认领) | -| A4 | 审计工作台只读能力 | implemented | `issues/2026-02-08_17-05-00-p3-full-delivery.csv:D2`(DONE)+ `issues/2026-02-08_21-50-09-p4-trialrun-ready.csv`(前端页完善);`server/src/routes/audit.js` 与 `client/src/pages/AuditLogsPage.tsx` | +| A1 | 付款凭证扩展与pay幂等冲突判定 | implemented | `issues/2026-02-08_11-02-30-p2-stabilization.csv:B1`(DONE)承接付款幂等收口;当前代码在 `server/src/routes/reimbursements.js` 的 `/api/reimbursements/:id/pay` 已支持 `paymentVoucherNo/paymentDate/paymentChannel` 幂等重试,并在冲突时返回 `already_paid_conflict`。 | +| A2 | 委派有效期与自动回收 | implemented | `issues/2026-02-08_11-02-30-p2-stabilization.csv:B2/B3`(DONE)收口委派有效期与并发回收;当前代码在 `server/src/routes/delegations.js` 支持 `validFrom/validTo`,`server/src/jobs/delegationRevokeJob.js` 负责过期授权自动回收与审计。 | +| A5 | Sprint1回归护栏前置 | superseded | 该目标已被后续统一回归体系取代:`issues/2026-02-08_17-05-00-p3-full-delivery.csv:D12`(DONE)与 `issues/2026-02-08_17-05-00-p3-full-delivery.csv:D4`(DONE)已将回归入口与 CI 补强收口;当前脚本 `server/scripts/regression-workflow-actions.sh` 与 `server/scripts/regression-all.sh` 持续承接原“护栏前置”职责。 | +| A3 | OCR真对接与异步处理 | implemented | `issues/2026-02-09_13-39-02-p5-blueprint-v3.csv:F11` 与 `issues/2026-02-09_13-39-02-p5-blueprint-v3.csv:F19b`(DONE)已将 OCR provider、异步处理与回归闭环收口;当前代码在 `server/src/services/ocr/tencent.js` 提供腾讯云 VAT OCR 对接,在 `server/src/scripts/run-ocr-once.js` 与 `server/src/jobs/ocrJob.js` 提供异步扫描执行能力。 | +| A3-LOCK | OCR多实例并发幂等锁 | implemented | `issues/2026-02-08_17-05-00-p3-full-delivery.csv:D3`(DONE)已把 OCR mock 回归与并发锁验收纳入主线;当前代码在 `server/src/jobs/ocrJob.js` 使用 `FOR UPDATE SKIP LOCKED` + `ocr_locked_at/ocr_lock_owner` 进行唯一认领,表结构见 `server/prisma/schema.prisma`。 | +| A4 | 审计工作台只读能力 | implemented | `issues/2026-02-08_17-05-00-p3-full-delivery.csv:D2`(DONE)承接审计接口与回归;当前代码在 `server/src/routes/audit.js` 已提供 `/api/audit-logs`,前端 `client/src/pages/AuditLogsPage.tsx` 已实现分页、筛选、导出与权限控制。 | ## 2. 2026-02-08_14-20-25-p2-ci-and-tests.csv | Legacy ID | 标题 | 清账状态 | 对应实现 / 去向证据 | | --- | --- | --- | --- | -| C2 | 审计接口自动化测试 | implemented | `issues/2026-02-08_17-05-00-p3-full-delivery.csv:D2`(DONE);`server/scripts/regression-audit.sh` | -| C3 | OCR 自动化测试(Mock优先) | implemented | `issues/2026-02-08_17-05-00-p3-full-delivery.csv:D3`(DONE);`server/scripts/regression-ocr.sh` | -| C4 | P3-a 待办列表页落地 | implemented | `issues/2026-02-08_17-05-00-p3-full-delivery.csv:D6`(DONE);`client/src/pages/WorkflowTasksPage.tsx` | -| C5 | P3-a 审批详情与动作联调 | implemented | `issues/2026-02-08_17-05-00-p3-full-delivery.csv:D6`(DONE);`client/src/pages/WorkflowTaskDetailPage.tsx` | +| C2 | 审计接口自动化测试 | implemented | `issues/2026-02-08_17-05-00-p3-full-delivery.csv:D2`(DONE)直接承接;当前回归脚本 `server/scripts/regression-audit.sh` 已覆盖权限、分页、筛选与参数非法场景。 | +| C3 | OCR 自动化测试(Mock优先) | implemented | `issues/2026-02-08_17-05-00-p3-full-delivery.csv:D3`(DONE)直接承接;当前回归脚本 `server/scripts/regression-ocr.sh` 已覆盖 mock provider、状态流转、失败重试与并发唯一认领。 | +| C4 | P3-a 待办列表页落地 | implemented | `issues/2026-02-08_17-05-00-p3-full-delivery.csv:D6`(DONE)直接承接;当前页面 `client/src/pages/WorkflowTasksPage.tsx` 已实现真实待办列表、分页、状态筛选与详情入口。 | +| C5 | P3-a 审批详情与动作联调 | implemented | `issues/2026-02-08_17-05-00-p3-full-delivery.csv:D6`(DONE)直接承接;当前页面 `client/src/pages/WorkflowTaskDetailPage.tsx` 已联通 `approve/reject/return/transfer` 动作、候选审批人、错误提示与数据刷新。 | ## 3. 汇总结论 @@ -33,4 +33,8 @@ - `superseded`:1 - `still-open`:0 -> 说明:历史 CSV 快照保持不改;清账通过该文档形成可审计映射链。 +## 4. 治理口径 + +- 历史 `issues/*.csv` 继续保持快照不可变,不回写旧状态。 +- 清账结论由本文件和后续治理合同承接,作为“旧 TODO 已被后续迭代覆盖”的审计证据。 +- 若后续代码与旧合同文案冲突,以当前运行时代码和已完成执行合同为准。 diff --git a/issues/2026-03-13_10-30-00-r11-contract-reconciliation-and-spec-refresh.csv b/issues/2026-03-13_10-30-00-r11-contract-reconciliation-and-spec-refresh.csv new file mode 100644 index 00000000..dfe53579 --- /dev/null +++ b/issues/2026-03-13_10-30-00-r11-contract-reconciliation-and-spec-refresh.csv @@ -0,0 +1,7 @@ +ID,Title,Description,Acceptance,Test_Method,Tools,Dev_Status,Review1_Status,Regression_Status,Files,Dependencies,Notes +R11-0,R11执行合同建档与范围冻结,新建 R11 治理合同并冻结本轮只处理历史 TODO 清账证据刷新与规格书补齐的边界,不回写历史 CSV 且不改运行时代码。,R11 CSV 通过校验且范围明确为治理文档收口,不混入依赖升级 IM-2 或运行时改造。,python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-03-13_10-30-00-r11-contract-reconciliation-and-spec-refresh.csv,manual,DONE,DONE,DONE,issues/2026-03-13_10-30-00-r11-contract-reconciliation-and-spec-refresh.csv|docs/todo-reconciliation.md|docs/requirements-specification.md|docs/feature-matrix.md,[],旧 CSV 保持不可变且以新治理合同承接清账与规格书补齐 +R11-1,历史 TODO 清账证据刷新,刷新 docs/todo-reconciliation.md 中 A1-A5 与 C2-C5 的 implemented/superseded 证据链,统一落到当前代码路径和后续已完成合同。,10 个 legacy TODO 均具备后续合同证据和当前代码证据,A3-LOCK 明确指向 ocrJob 的 FOR UPDATE SKIP LOCKED 语义。,python3 scripts/validate-feature-matrix.py && git diff --check,manual,DONE,DONE,DONE,docs/todo-reconciliation.md|issues/2026-02-07-p2-kickoff.csv|issues/2026-02-08_14-20-25-p2-ci-and-tests.csv|issues/2026-02-09_23-30-00-p6-p8-remaining-work-master.csv,"[""R11-0""]",保留 implemented|superseded|still-open 三分法且结论为 9 implemented + 1 superseded + 0 still-open +R11-2,规格书目录扩展与章节锚点建立,在 requirements-specification 中为请假 采购 资产 差旅 集成补齐独立业务域章节与 API 契约锚点,并同步章节引用口径。,规格书新增 4.7-4.11 与 13.2.7-13.2.11 章节且章节编号和引用口径一致。,git diff --check,manual,DONE,DONE,DONE,docs/requirements-specification.md,"[""R11-0""]",新增章节必须只描述已实现能力 不写未来态设计 +R11-3,请假采购资产规格补齐,基于已完成执行合同与当前代码补齐请假 采购 资产三域的范围 权限 状态机 数据对象 关键接口与显式不做项。,规格书可独立描述请假 采购 资产三域的业务语义与接口边界,无需再翻旧 CSV 才能理解当前实现。,git diff --check,manual,DONE,DONE,DONE,docs/requirements-specification.md|issues/2026-03-06_14-30-00-p15b-l5-leave-v1.csv|issues/2026-03-07_19-33-09-p17a-l5-procurement-core.csv|issues/2026-03-07_21-00-37-p17b-l5-procurement-budget-archive.csv|issues/2026-03-07_22-02-09-p18a-l5-asset-registry-core.csv|issues/2026-03-07_22-34-03-p18b-l5-asset-movements-inventory.csv,"[""R11-2""]",状态机和权限以当前代码与完成合同为准 不沿用早期 blueprint 假设 +R11-4,差旅集成规格补齐与 cross-cutting 同步,补齐差旅三阶段与集成边界规格,并同步权限模型 API 契约 数据模型概览和迭代计划的相关口径。,规格书完整覆盖 TRAVEL-1 到 TRAVEL-3 以及 IM-1 ERP-1 到 ERP-3 的已实现范围,并明确后置 backlog 不进入本轮主线。,git diff --check,manual,DONE,DONE,DONE,docs/requirements-specification.md|docs/integration-boundaries.md|docs/domain-events.md|issues/2026-03-10_17-32-21-p20-travel-1-l5-request-intake-refresh.csv|issues/2026-03-10_21-05-59-p20-travel-2-l5-corporate-payments-refresh.csv|issues/2026-03-11_09-57-28-p20-travel-3-l5-reconciliation-erp-bridge-refresh.csv|issues/2026-03-07_23-22-00-p19-l4-integration-readiness.csv|issues/2026-03-08_12-18-10-p19-im-1-l5-collaboration-adapter.csv|issues/2026-03-08_14-10-53-p19-erp-1-l5-masterdata-journal-bridge.csv|issues/2026-03-08_22-46-51-p19-erp-2-l5-procurement-commitment-archive.csv|issues/2026-03-09_00-10-00-p19-erp-3-l5-asset-ledger-summary.csv,"[""R11-2""]",AI MCP PWA PROD 仍保持在边界文档和运维文档中 不并入本轮规格书主体 +R11-5,R11矩阵事实源与文档校验收口,将 R11 纳入 feature matrix 事实源并完成 CSV 校验 文档校验 矩阵校验与 diff 检查,形成治理收口结论。,新合同三状态全 DONE 且矩阵与事实源校验通过,文档明确历史 TODO 已通过 reconciliation doc 收口。,python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-03-13_10-30-00-r11-contract-reconciliation-and-spec-refresh.csv && python3 scripts/validate-feature-matrix.py && git diff --check,manual,DONE,DONE,DONE,issues/2026-03-13_10-30-00-r11-contract-reconciliation-and-spec-refresh.csv|docs/feature-matrix.md|scripts/validate-feature-matrix.py|docs/todo-reconciliation.md|docs/requirements-specification.md,"[""R11-1"",""R11-3"",""R11-4""]",若矩阵事实源新增 R11 则需同步说明其仅承接治理收口而不代表新增运行时功能