5.6 KiB
5.6 KiB
报销付款批次改进部署
Goal
将 reimbursement-small-team-form-validation 已完成并本地验证的报销详情、付款批次费用明细和银行回单在线预览改进,安全发布到既有公网 OA,并用只读、脱敏证据确认活动版本和关键页面合同生效。
Background and confirmed facts
- 功能提交为
d440011,任务归档提交为3659d38;当前main工作区干净,但相对origin/main领先 2 个提交,部署前必须先发布到上游。 - 本轮应用改动不包含 Prisma schema、migration、生产环境键或部署脚本变化。
- 本地已完成 Prisma、Node 语法、前端 typecheck/build、19 项 PC/移动 Playwright、Trellis/文档/敏感信息门禁;后端聚焦测试唯一失败是既有 BIFF8 本机依赖缺口,与本轮代码无关。
- 既有生产部署使用
deploy/trialrun/deploy-existing.sh,固定SYNC_ENV=0,从受控 systemd unit 读取部署合同;不得覆盖生产.env或从 Docker 标签猜测目录。 - 当前进程环境未直接注入两个部署 SSH target;执行阶段从本机受控 SSH 配置探测既有部署身份和 forced-command refresh 身份,探测过程不回显目标、账号或路径。
- 用户已授权本次公网部署,但未授权真实报销、审批、付款、银行、ERP、企业微信或生产配置写入。
Scope
- 将已验证的
main提交推送到现有上游并通过既有来源校验。 - 运行既有部署聚合预检,使用
deploy-existing.sh发布到现有公网环境。 - 验证活动 build、
/ready、公开前端资源、基础 smoke、外部依赖和功能开关。 - 记录脱敏部署结果、可解释 SKIP、回滚边界和 Trellis 收尾证据。
Requirements
R1 发布来源与预检
- 部署候选必须是干净、已提交并包含在
origin/main的明确提交;部署前先推送本任务的启动记录和既有功能提交。 - 使用既有聚合预检,要求部署身份、六项合同、仓库、环境文件、数据目录、运行实例、build、存储/PGDATA 挂载、备份 build、refresh 身份和 forced-command 全部通过。
- 环境合同、来源校验或远端聚合预检任一失败即停止,不使用 unpublished override,不绕过备份合同。
R2 受控发布
- 仅使用
deploy-existing.sh发布,保持SYNC_ENV=0和既有数据目录;不执行数据库重置、不修改 migration、不覆盖生产.env。 - 发布过程中允许既有部署脚本执行构建、容器更新、已提交 migration 检查、运行时 smoke 和备份合同刷新;本轮预期无待执行 migration。
- 不创建或修改真实报销、付款批次、回单或银行数据,不执行真实付款。
R3 公网只读验收
- 公网
/ready、运行时 build SHA 和前端公开短 SHA 必须与发布提交一致。 - 运行既有基础公网 smoke、外部依赖/功能开关检查和前端资源扫描;有专用
LIVE_SMOKE_*凭据时才运行登录态 smoke,缺失时记录为明确 SKIP,不读取或输出真实账号密码。 - 对本轮功能只做无业务写入的验证:确认公开 bundle 包含新文案/入口合同,服务端路由已随目标 build 发布;不得用真实回单或真实付款数据制造验证样本。
R4 结果与回滚
- 记录发布提交、部署合同总结果、
/ready、公网 smoke、登录态 smoke 是否执行及任何可解释 SKIP。 - 若应用发布成功但备份合同 refresh 失败,按“已部署但合同刷新失败”处理,不重复发布应用;先恢复合同。
- 应用或 readiness 失败时,使用既有部署入口回滚到上一个已发布提交,不修改数据库结构或生产环境文件。
Acceptance Criteria
- AC1:候选提交已推送到
origin/main,工作区干净,来源和部署前聚合体检通过。 - AC2:
deploy-existing.sh完整通过,生产.env未同步或覆盖,数据库无新增 migration,未发生真实业务或付款写入。 - AC3:公网
/ready、运行时 build 与前端短 SHA 均命中本次发布提交。 - AC4:基础公网 smoke、部署运行时 smoke、外部依赖/功能开关和前端资源扫描通过;登录态 smoke 按凭据实际状态记录 PASS 或明确 SKIP。
- AC5:公开资源可确认差旅事由去重、付款批次费用明细/小计和“下载需说明用途”等新前端合同已发布,不暴露真实回单、账号或存储资料。
- AC6:任务记录、Trellis 治理、敏感信息检查和
git diff --check通过;只在全部部署与公网门禁通过后告知用户可以测试。
Out of Scope
- 修改本轮功能代码、数据库模型、migration、生产环境变量或部署脚本。
- 真实报销提交、审批、付款批次操作、回单上传/预览、完整银行账号查看或真实付款。
- 企业微信写入、ERP、银行直连、生产数据库重置或人工修复真实业务数据。
- 为部署缺口启用 unpublished override、跳过聚合预检或弱化附件权限/审计。
Test Plan
- Local/preflight:环境合同、任务校验、Trellis 治理、敏感信息、
git diff --check、Git 来源/上游包含关系和既有部署 13 项聚合合同。 - Deploy:
deploy-existing.sh内置的构建、Compose、migration 状态、运行时 smoke、活动 build、公开 build 和备份合同 refresh。 - Public:
/ready、基础无凭据 Playwright/readiness、外部依赖与功能开关检查、前端资源关键文案扫描;登录态 smoke 仅在专用凭据存在时运行。 - Negative/rollback:来源、预检或 readiness 任一失败即停止;应用已发布但 refresh 失败时不重复部署应用。