文件
hyb-oa/.trellis/tasks/08-28-reimbursement-detail-material-preview-deploy/design.md
T
wangsli 59dc5f66a4
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
修正报销部署候选冻结门禁(08-28-reimbursement-detail-material-preview-deploy)
2026-08-29 08:42:26 +08:00

2.3 KiB
原始文件 Blame 文件历史

设计:报销详情修复部署与公网验证

当前依赖

部署候选必须包含 Task A 和 08-28-reimbursement-nonparticipant-readonly-projection。业务提交为 e8d6766;本次 PRD 修订提交完成后,以最终干净 HEAD 冻结候选,在外部审批记录中写死 SHA,此后不得再产生任何仓库变化。用户必须先单独批准推送;upstream 与严格 provenance 验证通过后,再单独批准连接生产和部署。

发布流

提交本次 PRD 修订并确认工作区干净
  -> 冻结当前 HEAD,在外部审批记录写死 SHA
  -> 用户单独批准 push
  -> push + upstream 祖先关系 + 严格 provenance
  -> 用户单独批准生产部署
  -> 生产身份与 existing 部署合同只读 preflight
  -> 期望 migration 清单核对
  -> deploy-existing.sh(SYNC_ENV=0)
  -> init + migrate deploy + post migration status
  -> /ready + runtime/external smoke + bundle marker
  -> 备份合同 refresh
  -> 角色化公网检查和材料预览
  -> 归档部署子任务与 Task A
  • 正式入口使用仓库现有 wrapper,不手工 rsync、不 source 或覆盖远端 .env。
  • 本轮代码不包含新 schema,但 init 和 pre/post migration status 仍是必需证据。
  • pdf-v2 缓存仅在进程内,应用重启后自然失效,无缓存迁移或清理动作。
  • 真实材料检查只记录页数、页序、比例和成功/失败,不保存截图、原件或票面字段。

固定回滚

  • 切换前失败:停止,不进入回滚,因为生产应用尚未改变。
  • 切换后任一必需门禁失败:停止新版本验证,使用同一 existing 部署入口发布固定提交 f178aa0,保持 SYNC_ENV=0,不回退或 reset migration。
  • 回滚后必须确认 /ready 和 bundle marker 为 f178aa0 的短 SHA,并复核 migration status、runtime/external smoke、DB/附件挂载与公网入口。
  • 回滚来源同样必须干净、已发布且远端可验证;不得以 unpublished override 绕过正式 wrapper。

授权边界

任务规划批准不等于推送批准,推送批准也不等于生产部署批准。候选冻结后先取得独立 push 授权并完成 upstream/provenance 验证,再取得独立部署授权;连接生产、应用切换和合成 owner 撤回写入均不得从前一项授权推定。真实报销永不作为撤回测试对象。