完善借款、编号、付款与预算并发及验收(09-06-release-gate-integrity)

汇总已落盘的借款本金与还款、兼容历史编号的周期化编号、付款责任与回单核验、报销进度和排序、PWA/采购事务、错误原因与日期校验及ERP退役。
统一共享预算池锁序和锁后判断,恢复差旅原预算选择,补原因码固定夹具及反向完整性检查。
纳入配套迁移、测试、受管QA、分层验收合同、规约及任务记录;原始证据留在ignored artifacts。

关联任务:09-17-company-loan-principal-repayment、09-17-erp-exclusive-retirement、09-18-reimbursement-periodic-numbering、09-08-reimbursement-payment-closeout、09-18-local-concurrency-product-fixes、09-19-budget-pool-concurrency、09-05-error-explainability-payment-readiness。
预算补审由Claude定向验证2文件928项通过,原4446/28及r6结果仍仅对应各自历史输入;本轮未重跑测试。
完整新候选门禁、R1真实入口接入与12项公网义务仍开放。生产编号未启用、差旅仍冻结;不推送、不部署,不宣称发布资格。
这个提交包含在:
2026-09-19 13:11:04 +08:00
父节点 729d90576f
当前提交 1f8d5b658a
共修改 367 个文件,包含 21079 行新增和 12287 行删除
@@ -0,0 +1,58 @@
{
"id": "local-concurrency-product-fixes",
"name": "local-concurrency-product-fixes",
"title": "PWA 更新事件与采购创建事务最小修复",
"description": "PWA原生控制器更新与采购最小写事务已本地实施;131单测、原四文件并发4/4、认证/OCR18/18通过。独立及完整门禁仍待,不提交发布。",
"status": "in_progress",
"dev_type": null,
"scope": "client PWA lifecycle and server purchase draft transaction",
"package": null,
"priority": "P1",
"creator": "shunli",
"assignee": "shunli",
"createdAt": "2026-09-18",
"completedAt": null,
"branch": null,
"base_branch": "main",
"worktree_path": null,
"commit": null,
"pr_url": null,
"subtasks": [],
"children": [],
"parent": null,
"relatedFiles": [
"client/src/pwa.ts",
"client/vite.config.ts",
"server/src/routes/purchaseRequests.js",
"server/tests/unit/utils/client-pwa-lifecycle.test.js",
"server/tests/unit/routes/purchase-request.errors.test.js",
"client/tests/e2e/pwa-cross-version-upgrade.spec.ts"
],
"notes": "2026-09-19 g20-full-r6:4437后端通过/1原跳过,372本地浏览器全过;PARTIAL仅dirty_candidate,独立PENDING/无部署,旧registry保护例外保留且无新增漂移。当前余额见implement顶部。\n2026-09-18本地验证完成,失败/诊断/修后回执与候选在local-coverage-g18-20260918。主会话自检不代替独立PENDING;无预算/并发/权限/审计弱化,未发布。\n",
"meta": {
"localImplementation": "VERIFIED",
"independentReview": "PARTIAL_WITH_LEGACY_BUDGET_FINDING",
"normalReleaseEligible": false,
"latestLocalCandidate": {
"run": "g20-full-r6",
"localChecksPassed": true,
"receiptStatus": "PARTIAL",
"browserPassed": 372,
"publicPending": 12,
"independentReview": "PARTIAL_WITH_LEGACY_BUDGET_FINDING",
"deploymentEligible": false,
"legacyProtectionStatus": "FAIL_ONE_KNOWN_DERIVED_REGISTRY",
"newProtectedDrift": false,
"productionNumberingActivated": false
},
"p9TargetedReview20260919": {
"status": "PASS_SCOPED",
"report": "artifacts/qa-governance/business-followup-claude-review-20260919T023537Z.txt",
"reportSha256": "b48e5f53340e139e5a97b5fdcb6d7003881a80a8a08d4004d01aaa6a759d2d0b",
"runtimeTestsRerun": false,
"budgetPoolFinding": "LEGACY_CONFIRMED_STATIC_UNFIXED",
"remediationTask": ".trellis/tasks/09-19-budget-pool-concurrency",
"evidence": "artifacts/qa-governance/business-followup-reception-20260919"
}
}
}