diff --git a/.trellis/tasks/07-27-yang-jun-reimbursement-readiness/implement.md b/.trellis/tasks/07-27-yang-jun-reimbursement-readiness/implement.md index b9934f1b..adee3551 100644 --- a/.trellis/tasks/07-27-yang-jun-reimbursement-readiness/implement.md +++ b/.trellis/tasks/07-27-yang-jun-reimbursement-readiness/implement.md @@ -193,7 +193,19 @@ - [x] 后端聚焦测试覆盖字节确定性、显式顺序、页数、准确 size、缓存缺失、加密/损坏回退、全部上限、差旅字段验证与非差旅不误拦截;前端 Playwright 覆盖按钮位置、加载文案、企微 `previewFile`、PC 打开和概要。 - [x] 运行 Prisma validate、新建空库 migration、server 聚焦/全量、client typecheck/build、无业务 25 页合并探针、Trellis/governance/process/docs/sensitive/diff 门禁。 - [x] 只读 review 迁移、提交门禁、短时合并件权限与审计。 -- [ ] 提交、推送、部署和真机验收分别遵守批准门禁。 +- [x] 实现提交、推送和生产部署均已分别取得批准并完成。 +- [ ] 企微真机用当前真实报销验证合并 PDF 可打开、全部页可连续查看且返回详情正常;该人工结果不由自动化或发布 smoke 代替。 + +## 6.14 合并 PDF 与差旅概要生产发布 + +- [x] 实现提交 `da35591` 已推送到 `origin/main`;从该提交的干净临时 clone 执行标准 `deploy/trialrun/deploy.sh`,固定 `SYNC_ENV=0`、`DEPLOY_DATA_MODE=existing`,未触碰未跟踪的 portfolio review,也未同步生产 `.env`。 +- [x] 如实记录第一次本地发布入口尝试:命令末尾包含临时 clone 清理动作,被本地安全护栏在进程启动前拒绝;未连接生产、未同步文件、生产没有变化。去掉清理动作后第二次发布全流程成功,完成验证后再校验临时目录前缀和提交身份并删除该临时 clone。 +- [x] 发布来源校验确认 `da35591` 已进入远端;环境合同、Compose 预检、init 和 migration deploy 通过。63 个 migration 中新增 `20260801120000_reimbursement_travel_summary` 成功应用,schema 随后为 up to date;迁移只增加四个 nullable 列。 +- [x] `/ready`、external deps smoke、runtime smoke 和公网前端资源扫描通过;公网 12 位构建标识与容器完整 SHA 分别匹配 `da35591`。构建仍报告既有 npm 风险基线:client 18 个风险(10 high),server 23 个风险(10 high、2 critical);本轮未执行自动升级。 +- [x] 发布后只读验证目标 server 可加载 `pdf-lib`,且 `pdftoppm` 已从运行镜像移除;未认证材料合并签发和带无效 token 的取件请求均保持 401/403 边界。 +- [x] 发布后首轮独立 `/ready` 复核误把公网 12 位前端标识按完整 40 位后端 SHA 断言,检查在只读响应处停止;未执行后续动作或改变生产。按既有“公网 12 位 + 容器完整 SHA”合同修正后复核通过。 +- [x] 复用既有 unit 内的受控合同参数重装 automatic backup 三项与 WARCH3;4 个 service 构建身份均匹配 `da35591`,4 个 timer 均 enabled/active。手工触发 automatic backup daily 和源端 watchdog,结果均为 `success/0`。 +- [x] 本次发布未修改真实报销状态、审批任务、权限、付款批次、银行回单或业务材料;企微真机合并 PDF 体验和真实报销后半链继续由对应真人验收。 ## 7. 完成条件