petstore-docs/qa-reports/phase2-pilot-rc6-release-manifest.md
2026-08-02 03:30:34 +08:00

8.8 KiB
Raw Blame History

宠小它 Phase 2 Pilot RC6 Release Manifest

RC IDphase2-pilot-rc6
冻结日期2026-08-02
状态:Ready for Release未部署
适用范围35 家独立宠物洗护单店真实试点
样本目标:约 200 次完整服务后进行 Phase 2 / 商业化决策

RC6 是当前唯一推荐候选:它继承 RC5 的 CORS 与敏感日志边界,并把 Session token 过期契约改为严格 fail-closed。真实生产配置、备份恢复、八个迁移、TLS、live smoke、三角色验收和首份真实指标基线未形成证据前不得把状态改为 Released

1. 前序 RC 取代说明

  • RC1RC4 分别因指标 cohort、伪微信网页 OAuth 和重复 CORS 策略被后续候选取代,保留审计记录。
  • phase2-pilot-rc5 已收口敏感日志,但签名正确且缺失、非数字或非正 exp 的 token 仍可能绕过过期判断,非正 TTL 还会静默回退为 7 天;被 RC6 取代。

RC6 要求 exp 是严格晚于当前时间的 Unix 秒,非正 TTL 拒绝构造production TTL 只允许 3002592000 秒。正常签发 token 均已有合法 exp本次没有数据库、API 或客户端迁移。

2. 冻结提交与回滚点

仓库 RC6 commit / ref 前一候选回滚点RC5 冻结状态
backend d99b6d6e6de184d122322170de476ba4c16d5ac3 2a3cfa0ac45891ad8be6adf5028e1c89e792d0d1 main == origin/mainclean
admin 078ae0f9d18e6598a1af13fa8bf2b5b97c25a410 同 commit main == origin/mainclean
frontend a595ea8fa17dd0dbdfb607abea93e8c0d24b13a8 同 commit main == origin/mainclean
docs refs/tags/phase2-pilot-rc6(本清单所在 commit 0fe2245a6fef29fac7074643d27af22183a3d07e tag 推送后解析并复核 clean

部署前必须在四仓解析 phase2-pilot-rc6 并与本表一致;源码、产物 hash 或 tag 有任何变化都必须建立新 RC不得移动已有 tag。

3. RC 产品范围

本候选包含:身份拆分、同店 StoreCustomer、不可变 BusinessEvent/AuditLog、服务时长与容量排班、行动工作台、报告发送确认、微信核验入驻与一次性员工邀请、客户低敏时间线、FollowUpTask 回访及再次预约归因、三角色验收、cohort-safe 指标查询、生产 preflight/readiness/smoke/回滚、全局 CORS、敏感日志和严格 Session 过期边界。

明确排除支付、库存、储值、复杂会员、多门店组织、订单系统、泛 AI、PC 扫码登录、公众号网页授权,以及未授权的任何生产写入。

4. 本地验证证据

验证环境macOS 26.5.2 / arm64、OpenJDK 21.0.10、Maven 3.9.14、Node.js v22.22.2、npm 10.9.7、Python 3.9.6;指标查询既有隔离验证为 MySQL 8.0.46

门禁 结果
backend mvn test PASS229 tests0 failure / 0 error / 0 skipped
backend package / bash -n deploy/*.sh PASS
Session 签名反例 PASS:使用真实 HMAC 构造签名正确的缺失 exp、exp=0、当前秒和非数字 exp全部拒绝
Session TTL 服务边界 PASS0 与负数拒绝构造
production TTL Java 门禁 PASS:短于 300 秒、长于 2592000 秒均拒绝
production TTL shell 门禁 PASS非整数拒绝、越界拒绝、604800 通过;合成执行以 /usr/bin/true 截止在数据库启动前,未连接外部服务
敏感日志 / CORS 契约 PASS2 项日志契约、4 项真实 Filter 契约
production smoke 合成执行 PASS:既有受控无网络 curl stub 跑通 7/7不替代 live smoke
admin npm run build PASS1671 modules仅既有 >500 kB chunk warning
frontend H5 / 微信小程序 build PASSverify-mp-app-json PASS
pilot metrics v2 PASS:查询 hash 未变化;契约及既有隔离 MySQL 验证继续有效
ontology validate PASS289 条Action 75、Entity 29、Event 33、Relation 102、Rule 50
ontology drift PASS68/68 HTTP、16/16 JPA三类漂移均为 0
四仓 git diff --check PASS
四仓工作树、远端与 tag 清单提交及 tag 推送后再次复核

本地仍未运行最终 production profile 的 JPA validate、生产库 31 项不变量或真实域名 live smoke这些保留为生产 No-Go 门禁。

5. 构建产物与 SHA-256

目录 hash 在目标目录执行:LC_ALL=C find . -type f -print0 | LC_ALL=C sort -z | xargs -0 shasum -a 256 | shasum -a 256

产物 大小 SHA-256 可部署性
backend JAR 50,995,589 bytes c989bb75a0ab6c32f96ffec24b04060cffc303b6923edb0cc6ba1355601460a9 候选;仍须真实配置与生产只读预检
pilot_metrics.sql source d2de4684722811028474001ed7e56bbf56297733509e1a71850d7ab404587210 仅限只读账号/副本
admin dist27 files 1,536 KiB 181005e11373ef9bbdba50bce35eb40b5a159c6acd8f89196749d1c12a0b4f8c 不可部署:含 .invalid 占位域名
H565 files 852 KiB 1f810d55d25fa86906dfb5c2a8765d24af1258ac23d91e75858495e3c121d34a 不可部署:含 .invalid 占位域名
微信小程序142 files 820 KiB b06ef5bdfd70c59ff91cc405ac99c0b15625c926f8f49dc9e561def9b1300587 不可上传:含 .invalid 占位域名

正式三端产物必须以权限受控的真实域名配置重新 preflight/build并把新 hash 写入生产发布记录。

6. 数据库迁移冻结

八个迁移的内容与 hash 未变化,必须按以下顺序执行:

顺序 文件 SHA-256
1 20260801_split_service_identity.sql 05fa560cb59a746681057187ffaccc1db4980de8e99bbcb0c42dd6ce25a759ac
2 20260801_create_store_customer.sql 5eabfc4689d5acc9400e70fc3cbdcd0549b8e9a8763176bef7ec3715f94002dd
3 20260801_create_business_event.sql d0a3ebe3ac2f3bd0c4c125832df4895dec66d5cc95077b4292b10055b876c184
4 20260801_create_booking_capacity.sql 25e9c8817c48a2c4854d034981f765dfe4b6ebb90f95a8f45a54513106c4ad51
5 20260801_create_report_send_status.sql 321284bc44774c69de4b584f3eb3a8f235653be6c0a5e75e3557a697f78381a2
6 20260802_create_store_onboarding.sql 40d45f382a03c35e9e9696e65553488713cdaadf90094d824f406561f196039c
7 20260802_create_store_customer_timeline.sql 5185a03f9a983823c75aae6661b0e68d51c75e226d117039b22f81f383ac7c2d
8 20260802_create_follow_up_task.sql a1ff5176b2775745ee1fb044a15d25d1cc52dba9fef72ffb45727f430db22c09

八迁移后必须用最终 production 配置运行 deploy/release-preflight.sh静态配置、JPA schema validate 和 31 项数据库不变量全部成功才可切流。

7. 生产 Go/No-Go

  • Petstore 专用 API/Admin/报告域名与 TLS 就绪;
  • 历史暴露的 DB 密码、微信 AppSecret 和 session secret 已轮换;
  • 最终配置通过三端 preflightSession TTL 为 3002592000 秒;
  • CORS 仅含正式 Web originController 局部 @CrossOrigin 为 0
  • 全量备份及隔离恢复演练完成;
  • 八迁移逐项 hash 一致、反例为 0JPA validate 和 31 项不变量通过;
  • 正式三端产物及 hash 已归档;
  • 独立 systemd/Nginx 就绪,未修改 Gitea/GitLab
  • liveness、readiness、7/7 live smoke 和 CORS allow/deny 通过;
  • 日志抽查不含手机号、凭据、token、query URL 或私密媒体地址;
  • 老板、员工、宠主三角色及真实微信真机验收签署 PASS
  • 外部监控、值班、回滚执行人和 Gitea/GitLab 健康检查完成;
  • 35 家门店进入观察,累计至少 200 次完整服务且每店至少 25 次,低敏指标与四项可靠性反例留档。

任一项未完成,结论都是 No-Go / Ready for Release,不得标记已上线。

8. 试点与已知边界

当前无服务端逐 token logout 吊销表;试点通过客户端清理 token 退出,账号删除、角色/门店变化仍由每次请求的活跃账号检查立即失效。样本闸门达到后只能形成 ContinueIterate CoreStop/Redesign,不得提前扩展排除项。