docs/test(P17A-5,P17A-6): 收口采购文档矩阵与回归

这个提交包含在:
2026-03-07 20:59:49 +08:00
父节点 7f1c3e842d
当前提交 25aef578fc
共修改 3 个文件,包含 20 行新增和 11 行删除
+11 -3
查看文件
@@ -1,8 +1,8 @@
# hyb-oa 实现状态矩阵(P5-G2)
# hyb-oa 实现状态矩阵(P5-P17A)
**快照日期**:2026-03-07
**范围**:`F1-F42`(含 `F19b/F19c/F19d`)+ `R1-S2` + `P9A1-P9D1` + `P10E1-P10G1` + `G0-G6` + `H1` + `M1-M4` + `P13-0-P13-8` + `P14-0-P14-8` + `P15A-0-P15A-5` + `P15B-0-P15B-6` + `P16A-0-P16A-6` + `P16B-0-P16B-6` + `P16C-0-P16C-6` + `R9-0-R9-3` + `G2-0-G2-6`,共 156 项。
**事实源**:`issues/2026-02-09_13-39-02-p5-blueprint-v3.csv` + `issues/2026-02-09_23-30-00-p6-p8-remaining-work-master.csv` + `issues/2026-02-10_09-42-31-p9-maintenance-performance-matrix.csv` + `issues/2026-02-10_10-35-30-p10-production-hardening.csv` + `issues/2026-02-11-p11-p12-governance-mobile.csv` + `issues/2026-02-12_01-09-41-p13-l5-governance.csv` + `issues/2026-02-13_00-11-56-p14-l5-operationalization.csv` + `issues/2026-03-06_14-30-00-p15a-l5-permission-decouple.csv` + `issues/2026-03-06_14-30-00-p15b-l5-leave-v1.csv` + `issues/2026-03-07_13-47-05-p16a-l5-master-data-core.csv` + `issues/2026-03-07_16-22-07-p16b-l5-holiday-calendar.csv` + `issues/2026-03-07_17-14-39-p16c-l5-suppliers.csv` + `issues/2026-03-07_18-15-03-r9-g2-p19-roadmap-refresh.csv` + `issues/2026-03-07_18-16-00-g2-l5-cross-domain-bridge.csv`(执行合同)
**范围**:`F1-F42`(含 `F19b/F19c/F19d`)+ `R1-S2` + `P9A1-P9D1` + `P10E1-P10G1` + `G0-G6` + `H1` + `M1-M4` + `P13-0-P13-8` + `P14-0-P14-8` + `P15A-0-P15A-5` + `P15B-0-P15B-6` + `P16A-0-P16A-6` + `P16B-0-P16B-6` + `P16C-0-P16C-6` + `R9-0-R9-3` + `G2-0-G2-6` + `P17A-0-P17A-6`,共 164 项。
**事实源**:`issues/2026-02-09_13-39-02-p5-blueprint-v3.csv` + `issues/2026-02-09_23-30-00-p6-p8-remaining-work-master.csv` + `issues/2026-02-10_09-42-31-p9-maintenance-performance-matrix.csv` + `issues/2026-02-10_10-35-30-p10-production-hardening.csv` + `issues/2026-02-11-p11-p12-governance-mobile.csv` + `issues/2026-02-12_01-09-41-p13-l5-governance.csv` + `issues/2026-02-13_00-11-56-p14-l5-operationalization.csv` + `issues/2026-03-06_14-30-00-p15a-l5-permission-decouple.csv` + `issues/2026-03-06_14-30-00-p15b-l5-leave-v1.csv` + `issues/2026-03-07_13-47-05-p16a-l5-master-data-core.csv` + `issues/2026-03-07_16-22-07-p16b-l5-holiday-calendar.csv` + `issues/2026-03-07_17-14-39-p16c-l5-suppliers.csv` + `issues/2026-03-07_18-15-03-r9-g2-p19-roadmap-refresh.csv` + `issues/2026-03-07_18-16-00-g2-l5-cross-domain-bridge.csv` + `issues/2026-03-07_19-33-09-p17a-l5-procurement-core.csv`(执行合同)
**说明**:
- 本矩阵用于全局读图(审计/交接/回归覆盖追踪),不替代 `issues/*.csv` 的执行合同职责。
@@ -181,3 +181,11 @@
| G2-5 | 同步R9与G2事实源 | N/A | 2026-03-07_18-16-00-g2-l5-cross-domain-bridge.csv | 2026-03-07_18-16-00-g2-l5-cross-domain-bridge.csv | 2026-03-07 | DONE | validate-feature-matrix | Feature Matrix 范围、事实源与 R9/G2 条目同步完成 |
| G2-6 | G2回归与安全收口 | N/A | 2026-03-07_18-16-00-g2-l5-cross-domain-bridge.csv | 2026-03-07_18-16-00-g2-l5-cross-domain-bridge.csv | 2026-03-07 | DONE | regression-all + client:typecheck/build | 预算/编号/工作流跨域桥接回归通过,报销主流程零回归 |
| P17A-0 | P17A执行合同建档 | N/A | 2026-03-07_19-33-09-p17a-l5-procurement-core.csv | 2026-03-07_19-33-09-p17a-l5-procurement-core.csv | 2026-03-07 | DONE | CSV 校验 | 轻采购核心合同建档并冻结仅做申请主流程边界 |
| P17A-1 | 采购核心Prisma模型与迁移 | N/A | 2026-03-07_19-33-09-p17a-l5-procurement-core.csv | 2026-03-07_19-33-09-p17a-l5-procurement-core.csv | 2026-03-07 | DONE | prisma:validate + server:test | PurchaseRequest/PurchaseRequestItem/PurchaseAttachment 与 WorkflowInstance 采购关联落地 |
| P17A-2 | 采购权限与系统种子补齐 | N/A | 2026-03-07_19-33-09-p17a-l5-procurement-core.csv | 2026-03-07_19-33-09-p17a-l5-procurement-core.csv | 2026-03-07 | DONE | server:test + seed:config | procurement 权限映射、`PR_STANDARD` 单据分类与单步经理审批种子完成 |
| P17A-3 | 采购申请后端API与工作流接入 | N/A | 2026-03-07_19-33-09-p17a-l5-procurement-core.csv | 2026-03-07_19-33-09-p17a-l5-procurement-core.csv | 2026-03-07 | DONE | server:test + regression-workflow-actions | `/api/purchase-requests*` 草稿/提交/撤回/附件接口与 workflow 待办联动可用 |
| P17A-4 | 采购前端入口与申请页 | N/A | 2026-03-07_19-33-09-p17a-l5-procurement-core.csv | 2026-03-07_19-33-09-p17a-l5-procurement-core.csv | 2026-03-07 | DONE | client:typecheck/build | `PurchaseRequestsPage`、菜单、路由与移动审批详情采购展示完成 |
| P17A-5 | OpenAPI与合同文档同步 | N/A | 2026-03-07_19-33-09-p17a-l5-procurement-core.csv | 2026-03-07_19-33-09-p17a-l5-procurement-core.csv | 2026-03-07 | DONE | node --check + validate-feature-matrix | 采购路由标签、合同锚点与矩阵事实源同步完成 |
| P17A-6 | P17A回归与验收收口 | N/A | 2026-03-07_19-33-09-p17a-l5-procurement-core.csv | 2026-03-07_19-33-09-p17a-l5-procurement-core.csv | 2026-03-07 | DONE | regression-all + client:typecheck/build | 采购草稿/附件/提交/撤回/审批通过,且报销/请假/主数据零回归 |
@@ -1,8 +1,8 @@
ID,Title,Description,Acceptance,Test_Method,Tools,Dev_Status,Review1_Status,Regression_Status,Files,Dependencies,Notes
P17A-0,P17A执行合同建档,创建并校验P17A轻采购核心执行合同CSV,CSV通过校验且字段完整,python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-03-07_19-33-09-p17a-l5-procurement-core.csv,manual,TODO,TODO,TODO,issues/2026-03-07_19-33-09-p17a-l5-procurement-core.csv,[],P17A仅交付采购申请主流程不进入预算真实占用与PO归档
P17A-1,采购核心Prisma模型与迁移,新增PurchaseRequest PurchaseRequestItem PurchaseAttachment并为工作流实例补齐采购实体引用,Prisma schema与迁移通过校验且不破坏现有报销请假主流程,cd server && npm run prisma:validate && npx prisma migrate dev --name p17a_procurement_core && npm run prisma:generate,manual,TODO,TODO,TODO,server/prisma/schema.prisma | server/prisma/migrations | server/src/prismaClient.js,"[""P17A-0""]",request_no提交时生成 budget_pool_id草稿可空且本轮不写预算台账reserve
P17A-2,采购权限与系统种子补齐,新增procurement权限域 角色映射与系统单据分类种子PR_STANDARD,默认角色权限与seed-config保持一致且不误授予finance审批权限,cd server && npm run test,manual,TODO,TODO,TODO,server/src/constants/permissions.js | server/src/routes/workflow.js | server/prisma/seed-config.js | server/prisma/seed-dev.js,"[""P17A-1""]",仅支持approve reject return不引入transfer且不复用expense权限
P17A-3,采购申请后端API与工作流接入,实现采购申请列表 详情 草稿更新 提交 撤回接口并接入现有workflow实体鉴权链路,员工可创建编辑提交撤回草稿 经理可审批 且采购任务能进入待办列表,cd server && npm run test && ./scripts/regression-workflow-actions.sh,manual,TODO,TODO,TODO,server/src/routes/purchaseRequests.js | server/src/routes/workflow.js | server/src/services/documentSequence.js | server/src/app.js,"[""P17A-2""]",提交时必须校验supplier legalEntity costCenter documentCategory草稿态允许不完整
P17A-4,采购前端入口与申请页,新增采购申请页面 API封装 菜单与路由并支持列表 草稿编辑 提交 撤回,采购申请页面可用且菜单显隐与procurement权限一致,cd client && npm run typecheck && npm run build,manual,TODO,TODO,TODO,client/src/pages/PurchaseRequestsPage.tsx | client/src/api/purchaseRequests.ts | client/src/router/index.tsx | client/src/components/navigation/NavLinks.tsx,"[""P17A-3""]",不新增采购管理后台仅交付员工申请页与基础列表筛选
P17A-5,OpenAPI与合同文档同步,补齐采购接口文档 路由标签 审计动作码并为后续P17B保留预算与归档扩展锚点,/api/docs/json可见采购接口且合同文件锚点与代码落点一致,cd server && npm run test && node --check src/routes/purchaseRequests.js,manual,TODO,TODO,TODO,server/src/routes/purchaseRequests.js | server/src/app.js | issues/2026-03-07_19-33-09-p17a-l5-procurement-core.csv,"[""P17A-4""]",只冻结接口与审计边界不提前实现PO archive reserve confirm release
P17A-6,P17A回归与验收收口,执行后端前端回归并确认报销 请假 主数据零回归后再允许进入P17B,采购草稿提交撤回审批通过且既有报销请假主流程零回归,cd server && npm run test && OCR_PROVIDER=mock JOBS_ENABLED=false ./scripts/regression-all.sh && cd ../client && npm run typecheck && npm run build,manual,TODO,TODO,TODO,issues/2026-03-07_19-33-09-p17a-l5-procurement-core.csv | server/src/routes/purchaseRequests.js | client/src/pages/PurchaseRequestsPage.tsx,"[""P17A-5""]",P17A不做预算真实占用 不做收货入库三单匹配 不做ERP过账
P17A-0,P17A执行合同建档,创建并校验P17A轻采购核心执行合同CSV,CSV通过校验且字段完整,python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-03-07_19-33-09-p17a-l5-procurement-core.csv,manual,DONE,DONE,DONE,issues/2026-03-07_19-33-09-p17a-l5-procurement-core.csv,[],P17A仅交付采购申请主流程不进入预算真实占用与PO归档
P17A-1,采购核心Prisma模型与迁移,新增PurchaseRequest PurchaseRequestItem PurchaseAttachment并为工作流实例补齐采购实体引用,Prisma schema与迁移通过校验且不破坏现有报销请假主流程,cd server && npm run prisma:validate && npx prisma migrate dev --name p17a_procurement_core && npm run prisma:generate,manual,DONE,DONE,DONE,server/prisma/schema.prisma | server/prisma/migrations | server/src/prismaClient.js,"[""P17A-0""]",request_no提交时生成 budget_pool_id草稿可空且本轮不写预算台账reserve
P17A-2,采购权限与系统种子补齐,新增procurement权限域 角色映射与系统单据分类种子PR_STANDARD,默认角色权限与seed-config保持一致且不误授予finance审批权限,cd server && npm run test,manual,DONE,DONE,DONE,server/src/constants/permissions.js | server/src/routes/workflow.js | server/prisma/seed-config.js | server/prisma/seed-dev.js,"[""P17A-1""]",仅支持approve reject return不引入transfer且不复用expense权限
P17A-3,采购申请后端API与工作流接入,实现采购申请列表 详情 草稿更新 提交 撤回接口并接入现有workflow实体鉴权链路,员工可创建编辑提交撤回草稿 经理可审批 且采购任务能进入待办列表,cd server && npm run test && ./scripts/regression-workflow-actions.sh,manual,DONE,DONE,DONE,server/src/routes/purchaseRequests.js | server/src/routes/workflow.js | server/src/services/documentSequence.js | server/src/app.js,"[""P17A-2""]",提交时必须校验supplier legalEntity costCenter documentCategory草稿态允许不完整
P17A-4,采购前端入口与申请页,新增采购申请页面 API封装 菜单与路由并支持列表 草稿编辑 提交 撤回,采购申请页面可用且菜单显隐与procurement权限一致,cd client && npm run typecheck && npm run build,manual,DONE,DONE,DONE,client/src/pages/PurchaseRequestsPage.tsx | client/src/api/purchaseRequests.ts | client/src/router/index.tsx | client/src/components/navigation/NavLinks.tsx,"[""P17A-3""]",不新增采购管理后台仅交付员工申请页与基础列表筛选
P17A-5,OpenAPI与合同文档同步,补齐采购接口文档 路由标签 审计动作码并为后续P17B保留预算与归档扩展锚点,/api/docs/json可见采购接口且合同文件锚点与代码落点一致,cd server && npm run test && node --check src/routes/purchaseRequests.js,manual,DONE,DONE,DONE,server/src/routes/purchaseRequests.js | server/src/app.js | issues/2026-03-07_19-33-09-p17a-l5-procurement-core.csv,"[""P17A-4""]",只冻结接口与审计边界不提前实现PO archive reserve confirm release
P17A-6,P17A回归与验收收口,执行后端前端回归并确认报销 请假 主数据零回归后再允许进入P17B,采购草稿提交撤回审批通过且既有报销请假主流程零回归,cd server && npm run test && OCR_PROVIDER=mock JOBS_ENABLED=false ./scripts/regression-all.sh && cd ../client && npm run typecheck && npm run build,manual,DONE,DONE,DONE,issues/2026-03-07_19-33-09-p17a-l5-procurement-core.csv | server/src/routes/purchaseRequests.js | client/src/pages/PurchaseRequestsPage.tsx,"[""P17A-5""]",P17A不做预算真实占用 不做收货入库三单匹配 不做ERP过账
1 ID Title Description Acceptance Test_Method Tools Dev_Status Review1_Status Regression_Status Files Dependencies Notes
2 P17A-0 P17A执行合同建档 创建并校验P17A轻采购核心执行合同CSV CSV通过校验且字段完整 python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-03-07_19-33-09-p17a-l5-procurement-core.csv manual TODO DONE TODO DONE TODO DONE issues/2026-03-07_19-33-09-p17a-l5-procurement-core.csv [] P17A仅交付采购申请主流程不进入预算真实占用与PO归档
3 P17A-1 采购核心Prisma模型与迁移 新增PurchaseRequest PurchaseRequestItem PurchaseAttachment并为工作流实例补齐采购实体引用 Prisma schema与迁移通过校验且不破坏现有报销请假主流程 cd server && npm run prisma:validate && npx prisma migrate dev --name p17a_procurement_core && npm run prisma:generate manual TODO DONE TODO DONE TODO DONE server/prisma/schema.prisma | server/prisma/migrations | server/src/prismaClient.js ["P17A-0"] request_no提交时生成 budget_pool_id草稿可空且本轮不写预算台账reserve
4 P17A-2 采购权限与系统种子补齐 新增procurement权限域 角色映射与系统单据分类种子PR_STANDARD 默认角色权限与seed-config保持一致且不误授予finance审批权限 cd server && npm run test manual TODO DONE TODO DONE TODO DONE server/src/constants/permissions.js | server/src/routes/workflow.js | server/prisma/seed-config.js | server/prisma/seed-dev.js ["P17A-1"] 仅支持approve reject return不引入transfer且不复用expense权限
5 P17A-3 采购申请后端API与工作流接入 实现采购申请列表 详情 草稿更新 提交 撤回接口并接入现有workflow实体鉴权链路 员工可创建编辑提交撤回草稿 经理可审批 且采购任务能进入待办列表 cd server && npm run test && ./scripts/regression-workflow-actions.sh manual TODO DONE TODO DONE TODO DONE server/src/routes/purchaseRequests.js | server/src/routes/workflow.js | server/src/services/documentSequence.js | server/src/app.js ["P17A-2"] 提交时必须校验supplier legalEntity costCenter documentCategory草稿态允许不完整
6 P17A-4 采购前端入口与申请页 新增采购申请页面 API封装 菜单与路由并支持列表 草稿编辑 提交 撤回 采购申请页面可用且菜单显隐与procurement权限一致 cd client && npm run typecheck && npm run build manual TODO DONE TODO DONE TODO DONE client/src/pages/PurchaseRequestsPage.tsx | client/src/api/purchaseRequests.ts | client/src/router/index.tsx | client/src/components/navigation/NavLinks.tsx ["P17A-3"] 不新增采购管理后台仅交付员工申请页与基础列表筛选
7 P17A-5 OpenAPI与合同文档同步 补齐采购接口文档 路由标签 审计动作码并为后续P17B保留预算与归档扩展锚点 /api/docs/json可见采购接口且合同文件锚点与代码落点一致 cd server && npm run test && node --check src/routes/purchaseRequests.js manual TODO DONE TODO DONE TODO DONE server/src/routes/purchaseRequests.js | server/src/app.js | issues/2026-03-07_19-33-09-p17a-l5-procurement-core.csv ["P17A-4"] 只冻结接口与审计边界不提前实现PO archive reserve confirm release
8 P17A-6 P17A回归与验收收口 执行后端前端回归并确认报销 请假 主数据零回归后再允许进入P17B 采购草稿提交撤回审批通过且既有报销请假主流程零回归 cd server && npm run test && OCR_PROVIDER=mock JOBS_ENABLED=false ./scripts/regression-all.sh && cd ../client && npm run typecheck && npm run build manual TODO DONE TODO DONE TODO DONE issues/2026-03-07_19-33-09-p17a-l5-procurement-core.csv | server/src/routes/purchaseRequests.js | client/src/pages/PurchaseRequestsPage.tsx ["P17A-5"] P17A不做预算真实占用 不做收货入库三单匹配 不做ERP过账
+1
查看文件
@@ -33,6 +33,7 @@ CSV_FACT_SOURCES = [
ROOT / "issues" / "2026-03-07_17-14-39-p16c-l5-suppliers.csv",
ROOT / "issues" / "2026-03-07_18-15-03-r9-g2-p19-roadmap-refresh.csv",
ROOT / "issues" / "2026-03-07_18-16-00-g2-l5-cross-domain-bridge.csv",
ROOT / "issues" / "2026-03-07_19-33-09-p17a-l5-procurement-core.csv",
]
ID_PATTERN = re.compile(r"^[A-Z][0-9][0-9A-Za-z-]*$")