107 lines
6.0 KiB
Markdown
107 lines
6.0 KiB
Markdown
# 宠小它 Phase 0 Pilot RC2 Release Manifest
|
||
|
||
> RC ID:`phase0-pilot-rc2`
|
||
>
|
||
> 冻结日期:2026-08-01
|
||
>
|
||
> 状态:**Ready for Release(未部署)**
|
||
>
|
||
> RC Steward:PM Assistant
|
||
>
|
||
> 发布边界:本 manifest 只冻结源码与本地验证证据;真实生产配置、备份、迁移、TLS、live smoke 和三角色验收未完成前不得改为 `Released`。
|
||
|
||
## 1. 冻结提交与回滚点
|
||
|
||
| 仓库 | RC commit | 前一稳定 commit(应用回滚点) | 状态 |
|
||
|---|---|---|---|
|
||
| backend | `133f61e4ad6152865a76c4e9328d96e689f53635` | `b6138475f073881199abdef8d2681dcb92d1ab66` | clean |
|
||
| admin | `3470b124e408501ed824b993bcb34dd40e77c293` | `7e924fa79d6dafbd60643b8e31519737feb92e3b` | clean |
|
||
| frontend | `e11ce1aaaa602011718e300e4527a0d971f1339a` | `d29ece3a85e6d137d91afd609f49b10051ad9b7f` | clean |
|
||
| docs | 本 manifest 所在 commit | 前一 commit | 提交后确认 clean |
|
||
|
||
RC 只能部署以上 commit 或由其生成且校验和一致的产物。后续任何代码改动必须建立新 RC 或 Hotfix manifest。
|
||
|
||
## 2. 纳入范围
|
||
|
||
- 生产 profile 启动配置门禁:`ddl-auto=validate`、关闭 SQL/万能验证码、强 session secret、显式 HTTPS 域名、显式 CORS、绝对上传目录;
|
||
- 生产启动跳过开发期默认服务写入;
|
||
- JPA schema 校验后执行 15 项只读数据库不变量预检;
|
||
- liveness/readiness,readiness 覆盖 DB、磁盘、上传目录、FFmpeg/ffprobe;
|
||
- 后端只读 smoke、systemd/EnvironmentFile/Nginx 独立模板;
|
||
- admin、H5、小程序发布域名门禁,默认 `.invalid` 占位配置主动失败;
|
||
- 小程序构建显式使用 `--mode mp-weixin`,读取独立环境配置;
|
||
- 生产 Runbook、试点门店开通清单、监控告警基线和本体 `BR-CONFIG-003`;
|
||
- 已冻结的身份拆分、StoreCustomer、BusinessEvent、真实预约容量能力及四个迁移脚本。
|
||
|
||
## 3. 明确排除
|
||
|
||
- 未连接、未迁移、未修改任何生产数据库;
|
||
- 未安装 systemd unit,未改服务器 Nginx,未申请或续签 TLS;
|
||
- 未重启 Petstore、Gitea、GitLab 或其他服务;
|
||
- 未使用真实生产域名、微信账号、AppSecret、密码或 token;
|
||
- 未上传微信体验版/正式版,未完成真机或生产三角色 smoke;
|
||
- 未接入真实外部监控和告警通知渠道;
|
||
- 不包含支付、库存、储值、复杂会员、多门店组织、订单系统或泛 AI。
|
||
|
||
## 4. 本地验证证据
|
||
|
||
环境:
|
||
|
||
- OpenJDK `21.0.10`(源码按 Java 17 release 编译)
|
||
- Maven `3.9.14`
|
||
- Node `v22.22.2`
|
||
- npm `10.9.7`
|
||
|
||
结果:
|
||
|
||
| 门禁 | 结果 |
|
||
|---|---|
|
||
| `mvn test` | 158 tests,0 failure / 0 error / 0 skipped |
|
||
| `mvn -DskipTests package` | BUILD SUCCESS |
|
||
| backend shell `bash -n` | PASS |
|
||
| backend/admin/frontend `git diff --check` | PASS |
|
||
| admin `npm run build` | PASS;存在既有大 chunk warning,不阻塞功能验证 |
|
||
| frontend `npm run build:h5` | PASS |
|
||
| frontend `npm run build:mp-weixin` | PASS;`verify-mp-app-json` PASS |
|
||
| admin/frontend 默认占位配置门禁 | 按预期失败 |
|
||
| admin/frontend 受控测试 HTTPS 源门禁 | PASS;输出只含变量名,不含值 |
|
||
| `validate_ontology.py` | 238 条引用完整 |
|
||
| `audit_drift.py` | 55 endpoints、13 JPA entities,code-only / ontology-only 均为 0 |
|
||
|
||
## 5. 本地构建校验和
|
||
|
||
| 产物 | SHA-256 | 可部署性 |
|
||
|---|---|---|
|
||
| `backend/target/petstore-backend-1.0.0.jar` | `e4ef2477c549c77c7bd0ed392d772c2abd62fb5fdf2e932124cd82726e7d01d2` | 可作为候选 jar;仍须最终生产环境预检 |
|
||
| admin `dist` 文件哈希清单的聚合 SHA-256 | `017089e4c7fd236b6efcbdcba10b32b9e423e3ccef9613e7ea66717b65b2e984` | **不可部署**:使用仓库 `.invalid` 占位配置构建,仅证明可编译 |
|
||
| H5 `dist/build/h5` 聚合 SHA-256 | `d816be92a12f353b2edb6f19987936f7f25e1b09d0a285c4203da494caeb123e` | **不可部署**:使用仓库 `.invalid` 占位配置构建,仅证明可编译 |
|
||
| 小程序 `dist/build/mp-weixin` 聚合 SHA-256 | `97489bb9b4b93f96606a10459b6d73526c8287d598019c1651490be854376084` | **不可上传**:使用仓库 `.invalid` 占位配置构建,仅证明可编译 |
|
||
|
||
正式 admin/H5/小程序必须用权限受控的真实域名文件重新运行 `preflight:release` 和构建,并把新产物校验和追加到生产发布记录。
|
||
|
||
## 6. 生产 Go/No-Go 门禁
|
||
|
||
- [ ] Petstore 专用 API/admin/report 域名与 TLS 已就绪,不复用其他产品域名;
|
||
- [ ] 最终配置通过后端、admin、frontend release preflight,未输出任何秘密值;
|
||
- [ ] 生产数据库完成全量备份、SHA-256 和隔离恢复演练;
|
||
- [ ] 按顺序执行身份拆分、StoreCustomer、BusinessEvent、预约容量四个迁移,末尾检查均为 0;
|
||
- [ ] 后端 15 项只读不变量预检与 JPA `validate` 通过;
|
||
- [ ] Petstore systemd/Nginx 配置独立,`nginx -t` 通过;
|
||
- [ ] liveness/readiness 和只读 smoke 通过;
|
||
- [ ] boss/staff/customer 三角色人工 smoke 及权限/异常反例通过;
|
||
- [ ] 微信合法域名、体验版和真机验证通过;
|
||
- [ ] 外部监控、告警联系人和值班窗口真实测试通过;
|
||
- [ ] Gitea/GitLab 健康回归通过,配置 diff 证明未被改动;
|
||
- [ ] 前一应用/静态/小程序回滚点明确,数据库不做自动 down migration。
|
||
|
||
任一项未勾选,结论均为 `No-Go / Ready for Release`,不得写成已上线。
|
||
|
||
## 7. 风险与回滚
|
||
|
||
- admin 主 bundle 仍有大于 500 kB 的构建 warning;试点流量下不是上线阻断,但应进入后续性能债,不与本次发布安全闭环混排。
|
||
- readiness 会把上传目录或 FFmpeg 依赖异常视为不可接流;服务器权限和二进制路径必须在切流前验证。
|
||
- 四个迁移为前向兼容追加式变更。常规故障只回退应用和静态软链接,不删除列/表/索引;灾难性数据恢复需要独立授权和变更单。
|
||
- 微信小程序必须走平台版本回退,不能依靠服务器软链接。
|
||
|
||
详细步骤见《生产发布与回滚Runbook-2026-08-01.md》;试点运营和指标口径见《试点门店开通清单-2026-08-01.md》;告警见《生产监控与告警基线-2026-08-01.md》。
|