D3-D4 同步 release candidate 并完成 R4 复检
这个提交包含在:
@@ -1,14 +1,14 @@
|
||||
# R4 部署预检记录(2026-05-10)
|
||||
|
||||
**文档状态**:R4 只读预检证据。
|
||||
**执行范围**:`issues/2026-05-10_12-39-37-release-readiness-live-smoke.csv` 的 R4。
|
||||
**结论**:`BLOCKED`。远端服务健康、迁移状态和 Caddy 基础状态正常,但远端运行时代码未能核对到本轮 release candidate,R5 不能开始。
|
||||
**文档状态**:R4 预检、D3 同步与 D4 只读复检证据。
|
||||
**执行范围**:`issues/2026-05-10_12-39-37-release-readiness-live-smoke.csv` 的 R4,以及 `issues/2026-05-10_13-20-38-deployment-version-sync-governance.csv` 的 D1-D5。
|
||||
**当前结论**:`DONE`。D3 已用既有部署脚本同步 release candidate,D4 只读复检通过;R5 因缺真实公网账号和 OCR 样票仍保持 `TODO/SKIP`。
|
||||
|
||||
## 1. 边界
|
||||
## 1. 初始 R4 边界
|
||||
|
||||
- 本轮未部署。
|
||||
- 本轮未修改远端 `.env`。
|
||||
- 本轮未执行 migration、seed、备份创建、服务重启或生产数据写入。
|
||||
- 初始 R4 只读预检未部署。
|
||||
- 初始 R4 未修改远端 `.env`。
|
||||
- 初始 R4 未执行 migration、seed、备份创建、服务重启或生产数据写入。
|
||||
- 本轮未读取、打印、提交真实密码、JWT secret、企业微信 secret、腾讯 OCR secret 或数据库连接串明文。
|
||||
- 企业微信真机、公网真实账号登录和真实 OCR 样票验证仍属于 R5;本轮只停留在 readiness 检查。
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
| 远端目录 | `/opt/hyb-oa-trialrun` 存在 |
|
||||
| 远端版本来源 | 远端不是 git 工作树,无法用 `git rev-parse` 直接确认版本 |
|
||||
|
||||
关键运行时文件哈希抽查结果:
|
||||
初始关键运行时文件哈希抽查结果:
|
||||
|
||||
| 文件 | 结论 |
|
||||
| --- | --- |
|
||||
@@ -37,7 +37,7 @@
|
||||
| `server/src/routes/contractsRegistry.js` | 一致 |
|
||||
| `server/src/routes/projects.js` | 一致 |
|
||||
|
||||
判定:远端当前可运行,但不能宣称已经是本轮 release candidate。由于不一致文件覆盖审批中心和权限导航护栏,按 R4 规则必须停止在预检阶段,先拆部署版本同步治理 Issue。
|
||||
初始判定:远端当时可运行,但不能宣称已经是本轮 release candidate。由于不一致文件覆盖审批中心和权限导航护栏,按 R4 规则停止在预检阶段,并拆分部署版本同步治理 Issue。
|
||||
|
||||
## 3. 本地只读检查
|
||||
|
||||
@@ -93,9 +93,9 @@
|
||||
| 反代目标 | `/etc/caddy/Caddyfile` 包含 `reverse_proxy 127.0.0.1:3000` |
|
||||
| 443 监听 | `caddy` 正在监听 `*:443` |
|
||||
|
||||
## 6. R4 判定
|
||||
## 6. 初始 R4 判定
|
||||
|
||||
R4 未通过,保持 `DOING/TODO/TODO`,原因是远端运行时代码与本轮 release candidate 不一致,且远端不是 git 工作树,无法用提交号直接证明当前运行版本。
|
||||
初始 R4 未通过,保持 `DOING/TODO/TODO`,原因是远端运行时代码与本轮 release candidate 不一致,且远端不是 git 工作树,无法用提交号直接证明当前运行版本。
|
||||
|
||||
不一致不应在 R4 内通过远端手工修补解决。建议下一步先审批并执行部署版本同步治理:
|
||||
|
||||
@@ -104,12 +104,12 @@ R4 未通过,保持 `DOING/TODO/TODO`,原因是远端运行时代码与本
|
||||
- 使用既有 `deploy/trialrun/deploy.sh` 或批准后的等效流程同步远端文件树、构建并执行部署脚本内置 smoke。
|
||||
- 部署后重新执行 R4 只读预检;通过后才进入 R5 live smoke。
|
||||
|
||||
## 7. SKIP 与禁止项
|
||||
## 7. 初始 SKIP 与禁止项
|
||||
|
||||
- `SKIP`:真实公网账号登录,原因是缺 `LIVE_SMOKE_*`。
|
||||
- `SKIP`:真实 OCR 样票,原因是缺 OCR live 文件或目录环境变量。
|
||||
- `SKIP`:企业微信手机真机,原因是 R5 才执行。
|
||||
- 禁止在 R4 内继续部署、重启、迁移、修改 `.env` 或写生产数据。
|
||||
- 初始 R4 内禁止继续部署、重启、迁移、修改 `.env` 或写生产数据。
|
||||
|
||||
## 8. D1-D2 后续复核(2026-05-10)
|
||||
|
||||
@@ -123,6 +123,25 @@ R4 未通过,保持 `DOING/TODO/TODO`,原因是远端运行时代码与本
|
||||
| D2 备份目录 | 远端 `deploy/trialrun/backups` 存在 |
|
||||
| D2 最近备份 | 2026-05-10 13:43 已创建 `hyb-oa-db-20260510_134340.dump`(2691566 bytes)和 `hyb-oa-storage-20260510_134341.tar.gz`(2610057 bytes) |
|
||||
| D2 回滚路径 | runbook 已包含 DB/storage 备份、恢复、仅代码回滚和 DB 回滚步骤 |
|
||||
| D2 结论 | `DONE`:部署前新近备份已创建;D3 受控同步 release candidate 仍需用户单独批准 |
|
||||
| D2 结论 | `DONE`:部署前新近备份已创建;当时 D3 仍需用户单独批准,后续执行结果见第 9 节 |
|
||||
|
||||
D3 受控同步 release candidate 仍未执行。R5 live smoke 仍保持 `TODO/SKIP`。
|
||||
D3 受控同步 release candidate 后续已执行,结果见第 9 节。R5 live smoke 仍保持 `TODO/SKIP`。
|
||||
|
||||
## 9. D3-D5 发布同步与复检(2026-05-10)
|
||||
|
||||
执行合同:`issues/2026-05-10_13-20-38-deployment-version-sync-governance.csv`。
|
||||
|
||||
| 项目 | 结果 |
|
||||
| --- | --- |
|
||||
| D3 部署同步 | `DONE`:执行 `bash deploy/trialrun/deploy.sh` 成功 |
|
||||
| 环境同步 | `SYNC_ENV=0`,未覆盖远端 `.env` |
|
||||
| 部署脚本门禁 | env contract、rsync、容器重建、init、Prisma migrate status、`/ready`、external deps smoke、runtime smoke、公网 bundle 文案扫描均完成 |
|
||||
| 远端关键文件哈希 | `workspaceSettings.js`、`NavLinks.tsx`、`workflow.js` 及其他抽查运行时文件已与本地一致 |
|
||||
| 远端服务 | `hyb-oa-trialrun-server` 与 `hyb-oa-trialrun-db` 运行中,DB healthy,本机 `/ready` 返回 200 |
|
||||
| Prisma migration | 46 migrations found;`Database schema is up to date!` |
|
||||
| Caddy | `active/enabled`,配置有效,`oa.hyinda.com` 反代到 `127.0.0.1:3000`,443 监听正常 |
|
||||
| 企业微信 config | 公网接口 200,`enabled/entryEnabled/oauthEnabled=true`,响应不包含 secret |
|
||||
| 公网资源扫描 | `node scripts/qa/check-public-bundle-copy.mjs https://oa.hyinda.com`:scanned=54,focused=4,findings=0 |
|
||||
| R5 readiness | `liveSmokeReady=false`、`liveOcrReady=false`;缺 `LIVE_SMOKE_*` 与 OCR live 文件或目录 |
|
||||
|
||||
R4 已可回填 `DONE/DONE/DONE`。R5 真实公网账号、企业微信真机和真实 OCR 样票验证仍未执行,不能宣称通过。
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
- Release candidate:`537e608 A8 完成首轮主线总回归门禁`。
|
||||
- 主开发合同:`issues/2026-05-09_20-57-19-mvp-mainline-dev-kickoff.csv`,A1-A8 已全部 `DONE/DONE/DONE`。
|
||||
- 剩余主线批次合同:`issues/2026-05-10_10-48-03-mvp-remaining-mainline-closeout.csv`,B1-B5 已全部 `DONE/DONE/DONE`。
|
||||
- 当前状态:本地门禁已闭环;R4 只读部署预检已执行但被远端运行时代码版本不一致阻断;尚未部署本轮 release candidate。
|
||||
- 当前最大缺口:需先完成远端 release candidate 同步治理;公网真实账号、企业微信真机和真实 OCR 样票条件仍未闭环,继续按 `SKIP` 处理。
|
||||
- 当前状态:本地门禁已闭环;R4 部署预检、D3 受控同步和 D4 只读复检已完成;公网已部署本轮 release candidate。
|
||||
- 当前最大缺口:公网真实账号、企业微信真机和真实 OCR 样票条件仍未闭环,继续按 `SKIP` 处理,R5 尚未执行。
|
||||
|
||||
首轮路线保持不变:OA 是唯一业务主系统和正式审批中心;企业微信只做入口、身份、通知、deeplink 和打卡原始采集边界;不接飞书,不接企业微信原生审批。
|
||||
|
||||
@@ -75,13 +75,13 @@ node scripts/qa/check-live-smoke-env.mjs
|
||||
|
||||
如发现服务端权限缺口,必须停止部署并拆独立修复 Issue;不得用前端隐藏临时绕过。
|
||||
|
||||
R3 审计执行记录见 [`permission-direct-access-audit.md`](permission-direct-access-audit.md)。2026-05-10 本地自动化直连审计已通过,未发现权限泄漏;R4 只读部署预检记录见 [`deployment-preflight-2026-05-10.md`](deployment-preflight-2026-05-10.md),当前因远端运行时代码版本未对齐 release candidate 而阻断。
|
||||
R3 审计执行记录见 [`permission-direct-access-audit.md`](permission-direct-access-audit.md)。2026-05-10 本地自动化直连审计已通过,未发现权限泄漏;R4/D3/D4 记录见 [`deployment-preflight-2026-05-10.md`](deployment-preflight-2026-05-10.md),当前远端运行时代码已对齐 release candidate。
|
||||
|
||||
## 5. 部署预检
|
||||
|
||||
部署前只做只读确认,不直接改生产:
|
||||
|
||||
2026-05-10 R4 只读预检结论:`BLOCKED`。远端 `/ready`、Prisma migration、备份目录、Caddy 和企业微信 config 基础状态正常,但远端不是 git 工作树,且 `workspaceSettings.js`、`NavLinks.tsx`、`workflow.js` 等关键运行时文件与 `537e608/2bab4e5` 不一致。R5 不得开始,需先执行 `issues/2026-05-10_13-20-38-deployment-version-sync-governance.csv`。
|
||||
2026-05-10 R4/D3/D4 结论:`DONE`。已创建部署前 DB/storage 备份,执行 `bash deploy/trialrun/deploy.sh` 同步远端文件树并完成脚本内置 smoke;部署后只读复检显示关键运行时文件哈希对齐、Prisma migration up to date、`/ready` 200、Caddy 正常、企业微信 config 不返回 secret、公网资源文案扫描 0 findings。R5 仍需真实账号、企业微信真机和真实 OCR 样票后单独执行。
|
||||
|
||||
- 当前生产 commit、部署目录和本地 release candidate 是否一致。
|
||||
- 生产 `.env` 必需项是否完整;检查时不得打印 secret。
|
||||
|
||||
在新工单中引用
屏蔽一个用户