提交图
219 次代码提交
作者 SHA1 备注 提交日期
wangsli和Claude Sonnet 5 cd01e4bf28 迁移首批4个错误码:AP台账/查询、待办、工作台功能开关 [09-05-error-explainability-payment-readiness]
10-05 到期例外清单里已设计好的首批 4 个具体调用,现予落码(原方案见
implement.md §14「首批具体分支与验证要求」):

- ap_operations.feature_disabled(409):AP 台账/明细查询功能关闭
- ap_operations.query_invalid(400):AP 台账查询参数校验失败
- todo.feature_disabled(409):待办功能关闭
- portal.feature_disabled(409):工作台首页功能关闭

四处均改为调用 buildBusinessValidationError(reasonCode, details, statusCode),
保留原 HTTP 状态码、featureFlag/reason 等既有 details 字段不变,仅新增精确
reasonCode;不改功能开关判断逻辑、不改权限校验顺序。

- server/src/constants/errorReasons.js + client/src/api/errorReasons.ts:
  注册 4 条原因码及中文文案,服务端/客户端逐字一致。
- scripts/qa/error-reason-legacy-baseline.json:移除这 4 条已迁移的旧例外
  记录(591 → 587),check-error-reason-contract.mjs 主检查与 self-test
  均 PASS,无 new_legacy/stale_exception/unregistered_reason。
- apOperations.permissions.test.js:扩展"功能关闭"断言校验 reasonCode 与
  原 details 字段共存;新增"查询参数非法(功能开启)"400 用例,断言零
  台账业务查询;新增"合法查询仍 200"用例。
- portal.test.js:新增工作台关闭时 409+reasonCode+零业务查询断言(此前
  完全没有覆盖这条路径)。
- todos.test.js:新建(此前 todos 路由零测试覆盖),聚焦 ensureFeatureEnabled
  网关:关闭时 GET/POST 均 409+reasonCode+零 todoItem 查询;开启时正常放行。

验证:server 5 个相关测试文件 286/286 通过;client typecheck/build 通过;
check-ui-design-rules.mjs --strict、check-trellis-governance.mjs、
git diff --check 通过。routes/ 全量回归 872/874(2 个失败为 paymentBatches
BIFF8 导出的既有环境问题,已用 git stash 验证在改动前的 HEAD 上同样失败,
与本次改动无关,不在本次范围内处理)。

剩余 669 条例外记录不变,尚未处理;B/C 两档 57 文件仍需逐模块确认迁移或
提出延期理由,本次不扩大范围。

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-09-25 21:16:55 +08:00
wangsli b1d25d3c99 fix: 加固日历日期与动态错误合同(09-05-error-explainability-payment-readiness,09-08-reimbursement-payment-closeout)
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-09-16 20:20:11 +08:00
wangsli 3516d7ec04 fix: 完善动态错误指引与发票日期校验(09-05-error-explainability-payment-readiness) 2026-09-16 12:56:27 +08:00
wangsli 8d08d46d16 fix: 增加回单核对与付款登记门禁(09-08-reimbursement-payment-closeout)
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-09-15 07:21:55 +08:00
wangsli 229867f5fd fix: 财务本人报销由总经理独立审批(09-04-reimbursement-state-gap-finance-view)
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-09-12 20:03:29 +08:00
wangsli 31ab9fbb2b fix: 拦截已删除报销进入付款创建(09-04-reimbursement-state-gap-finance-view)
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-09-12 16:00:25 +08:00
wangsli 752ec41396 fix: 制单备注补充报销用途(09-04-reimbursement-state-gap-finance-view)
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-09-12 15:18:29 +08:00
wangsli 1eeda7cd92 fix: 制单备注仅保留报销编号(09-04-reimbursement-state-gap-finance-view)
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-09-11 23:54:53 +08:00
wangsli 2b4e3faa0e fix: 完善报销制单备注(09-08-reimbursement-payment-closeout) 2026-09-11 22:27:40 +08:00
wangsli fedcaed1a1 feat: 补齐报销付款待办交接(09-11-reimbursement-payment-handoffs)
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-09-11 09:43:37 +08:00
wangsli f9aee4c932 fix: 统一报销付款状态与进度(09-04-reimbursement-state-gap-finance-view) 2026-09-11 09:43:36 +08:00
wangsli fe025e65cf fix: 优化报销制单下载与付款进度(09-08-reimbursement-payment-closeout)
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-09-10 16:39:01 +08:00
wangsli 73fcd5a65a fix: 退回报销支持留痕删除(09-04-reimbursement-state-gap-finance-view) 2026-09-10 16:38:37 +08:00
wangsli e5685f18b2 feat: 选票自动生成报销明细并支持集中分类(08-29-reimbursement-expense-policy-invoice-guard)
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-09-09 23:19:02 +08:00
wangsli b87cc55aca fix: 分离日常发布与首次初始化(09-09-existing-deploy-seed-separation)
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-09-09 12:47:30 +08:00
wangsli 81102c26cf fix: 修复迁移预检状态误判(09-06-release-gate-integrity) 2026-09-09 12:47:29 +08:00
wangsli b9185308a6 fix: 优先引导下载银行制单(09-08-reimbursement-payment-closeout)
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-09-09 09:05:17 +08:00
wangsli e8cad812ad fix: 取消CEO默认AP台账权限(09-07-manager-ap-access-scope) 2026-09-09 09:05:17 +08:00
wangsli 58dcee08f7 fix: 用专用权限收窄经理 AP 访问(09-07-manager-ap-access-scope)
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-09-08 07:21:37 +08:00
wangsli 99167127b5 fix: 补齐候选诊断环境与证据保护(09-06-release-gate-integrity) 2026-09-08 07:21:19 +08:00
wangsli 66f25b1fa8 merge: 合入 Trellis 项目升级(09-05-trellis-upgrade-rule-cleanup) 2026-09-06 11:14:42 +08:00
wangsli c3cef5cfc4 chore: 升级 Trellis 并精简规则(09-05-trellis-upgrade-rule-cleanup) 2026-09-06 11:14:41 +08:00
wangsli f223bfb72f fix: 隔离既有发布的数据库容器生命周期(09-05-existing-deploy-db-lifecycle-isolation)
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-09-05 21:02:58 +08:00
wangsli a837912638 feat: 完成错误原因合同与付款就绪提示(09-05-error-explainability-payment-readiness)
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-09-05 19:00:35 +08:00
wangsli 5fe9f78bc9 补齐报销待组批财务入口 [09-04-reimbursement-state-gap-finance-view][R1] 2026-09-05 09:14:13 +08:00
wangsli 8e0af8235e 收紧报销草稿读取边界 [09-04-reimbursement-state-gap-finance-view][R2] 2026-09-05 09:13:53 +08:00
wangsli 2e69fe4edb 补齐审批退回结果通知 [09-04-approval-return-notification-gap] 2026-09-04 16:22:27 +08:00
wangsli 8551601818 收敛报销退回动作与审批布局 [09-04-approval-return-reject-actions] 2026-09-04 10:31:32 +08:00
wangsli c4b4427f9e 收敛审批动作面板并清理层叠遗留 [approval-action-panel-kiss-layering] 2026-09-03 20:49:15 +08:00
wangsli c840574d36 实现 B-2a 报销审批内容工作台(reimbursement-approval-content-workbench) 2026-09-01 20:32:34 +08:00
wangsli f57e2236f2 修复报销票据门禁提示与 OCR 降级(08-30-b2-submit-error-ocr-fallback) 2026-08-31 20:20:20 +08:00
wangsli 36c86f1dca 取消报销资产事前批准强制(08-30-reimbursement-assets-prior-approval-correction) 2026-08-30 12:44:58 +08:00
wangsli 6e999d5bf9 实现报销费用政策与票据明细门禁(08-29-reimbursement-expense-policy-invoice-guard) 2026-08-29 23:47:22 +08:00
wangsli e8d676634f 修复非参与人报销只读边界(08-28-reimbursement-nonparticipant-readonly-projection) 2026-08-29 08:22:23 +08:00
wangsli 46bfa7e00f 修复(08-28-reimbursement-detail-material-preview-fixes): 收紧撤回展示并校正材料图片尺寸 2026-08-28 21:53:26 +08:00
wangsli be057e665d 修复(08-28-reimbursement-review-routing-copy): 规范财务兜底文案 2026-08-28 20:30:04 +08:00
wangsli 71e68c8ddf 治理(08-11-internal-oa-finance-backoffice-positioning-and-navigation-reduction): 固化财务后台定位与写入定性 2026-08-13 21:27:53 +08:00
wangsli ec68256588 实现(08-10-production-employee-smoke-break-glass-reset): 增加员工Smoke受控重置工具
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-08-10 21:01:59 +08:00
wangsli 621934a35e 完善(08-09-deployment-contract-single-source-harness): 收敛部署合同并补失败路径 2026-08-09 14:40:28 +08:00
wangsli 0224ad83d7 修复(08-08-production-deployment-execution): 持久化远端部署阶段日志
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-08-08 21:29:55 +08:00
wangsli b94afcfab0 修复(08-08-production-deployment-execution): 明确终止迁移回滚窗口依据
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-08-08 20:57:44 +08:00
wangsli 8b2ed5bb16 修复(08-08-production-deployment-execution): 校验候选 Compose 构建标识
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-08-08 20:44:30 +08:00
wangsli 83af7544c4 修复(08-08-production-deployment-execution): 保留生产预检真实错误码
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-08-08 20:14:36 +08:00
wangsli bf2631c0d4 修正(08-08-production-deployment-execution): 先验生产公网身份再冻结目录
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-08-08 19:36:32 +08:00
wangsli f11e2f2c25 实现(08-08-production-deployment-execution): 校准生产身份只读门禁
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-08-08 17:33:25 +08:00
wangsli 5e2d038938 feat(08-08-production-deployment-validation): 增加生产目标与迁移只读门禁 2026-08-08 11:11:19 +08:00
wangsli 21851774dd feat(08-05-contract-detail-workspace): 完成合同详情与终止状态治理 2026-08-08 02:02:52 +08:00
wangsli d4400116c5 feat(reimbursement-small-team-form-validation): 完善付款批次核对与回单预览 2026-08-05 01:02:51 +08:00
wangsli 50c14c1b85 feat(reimbursement-small-team-form-validation): 完善小团队报销填报校验 2026-08-04 23:28:56 +08:00
wangsli a5b7e18507 fix(detail-page-structure-progress-actions): 收敛操作面板定位并补充制单诊断
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-08-03 16:41:32 +08:00