Files
lehuo/docs/17_PRODUCTION_READINESS_PLAN.md
T
2026-08-12 14:35:12 +08:00

5.6 KiB
Raw Blame History

17 生产就绪差距与阶段计划

评估日期:2026-08-11
事实来源:01_PROJECT_CONSTITUTION.md、02_PRODUCT_PRD_V1.md、09_TEST_ACCEPTANCE.md、10_TASK_STATE.md、13_DEPLOYMENT_CHINA.md、14_RELEASE_CHECKLIST.md。

1. 当前结论

Phase 0–7 的可自动化开发与本地生产工程验证已完成。当前仍不满足生产发布条件,剩余差距来自真实环境与人工审批:

  1. Phase 6 内容审核、站内消息和微信通知 Adapter 已完成,真实微信模板发送待平台配置;
  2. Phase 7 统计、脱敏汇总导出、安全扫描、备份恢复演练、监控规则和可回滚部署配置已完成,真实 staging、UAT 和 production deployment 待执行;
  3. 微信、域名备案、TLS、对象存储和运营合规材料需要人工账号与真实环境。

在上述工作完成前,只能视为可持续开发的 MVP,不得标记为可生产发布。

2. 分阶段交付计划

阶段 A:Phase 4 回访闭环(已完成,2026-08-11)

  • 服务完成与自动回访任务在同一事务中提交;
  • 回访待办、今日/逾期/本周/重点关怀视图;
  • 人工及重点关怀回访任务;
  • 回访结果、完成历史和审计;
  • NEED_MORE_HELP 原子创建关联后续申请,保留原历史;
  • 完成 E2E-005、E2E-006 对应的集成验证。

退出条件:Phase 4 P0 测试、migration、文档和全仓质量门禁全部通过。

完成证据:Phase 4 migration 已部署到隔离测试库且无 schema drift;27 个单元测试、28 个真实 MySQL 集成测试、全仓类型检查和 production build 全部通过。

阶段 B:Phase 5 公益项目、活动与志愿者(已完成,2026-08-11)

  • 志愿者资料、申请审核、状态机和最小权限;
  • 公益项目与活动 CRUD/发布状态机;
  • 活动报名、防重复、容量与截止时间校验;
  • 签到和服务时长事实记录;
  • E2E-009 及角色越权验证。

退出条件:V1 的志愿参与链路可在 staging 使用生成数据完整跑通。

完成证据:Phase 5 migration 已部署到隔离测试库且无 schema drift;真实 MySQL 集成测试覆盖项目/活动/报名/审核/签到/服务分钟、容量上限、幂等重放和公开边界。真实微信、合法域名、对象存储与 staging 仍按外部配置项保留,未用测试值冒充完成。

阶段 C:Phase 6 内容与通知(已完成,2026-08-12)

  • 机构介绍、公益动态、草稿/审核/发布;
  • 站内消息和投递记录;
  • 微信订阅消息 Adapter、重试与失败补偿;
  • 隐私政策、用户协议和授权页面接入可版本化内容;
  • 外部通知失败不回滚主业务。

退出条件:公开内容审核、业务通知降级和隐私版本留痕通过测试。

完成证据:草稿公开隔离、审核状态机、服务故事隐私确认、危险内容拒绝、消息 IDOR 和订阅偏好已通过真实 MySQL 集成测试;真实微信发送保留为外部验收。

阶段 D:Phase 7 生产工程与发布(工程完成,外部发布待执行)

  • 基础统计与受控脱敏导出;
  • readiness/liveness、结构化运行日志、5xx/P95/资源/数据库/任务/备份监控;
  • SAST、依赖/密钥扫描、IDOR、CSRF、SQLi、XSS、上传绕过和暴力登录测试;
  • MySQL 自动备份、对象存储保护、恢复脚本和实际恢复演练;
  • Nginx、TLS、immutable image、staging/prod Compose 或等价部署清单;
  • migration precheck、发布、冒烟、观察和应用回滚流程;
  • P0 E2E、性能基线和多角色 UAT。

退出条件:14_RELEASE_CHECKLIST.md 全部勾选,Critical/High 为零,恢复演练和 staging 闭环通过。

当前证据:统计/导出、health/metrics、权限扫描、官方依赖审计、密钥扫描、CodeQL 工作流、备份/恢复脚本、Nginx、immutable image Compose、预检/冒烟和告警规则已完成;本地恢复演练源库与恢复库均为 42 张表。真实 staging、UAT、告警接收和生产发布尚未执行,因此本退出条件仍未满足。

3. 需要人工或外部环境配合

以下内容不能用测试值替代正式验收:

  • 微信小程序主体、类目、有效 AppID/AppSecret、接口权限和审核材料;
  • 已备案域名、合法 request/upload/download HTTPS 域名和有效 TLS 证书;
  • 生产 MySQL、Redis、私有对象存储 Bucket、最小权限密钥、CORS、生命周期/版本策略;
  • 监控告警接收渠道和实际值班责任人;
  • 数据保留期限、未成年人数据规则、隐私政策和用户协议的运营/法律确认;
  • staging 测试账号、微信开发者工具、真机测试和非开发人员 UAT;
  • 生产变更窗口、备份保留策略、回滚授权人与发布审批。

4. 发布阻断项

任一项未满足均阻断生产发布:

  • Phase 6–7 本地 P0 功能或测试回归失败;
  • P0 E2E 未全通过;
  • 存在 Critical/High 安全漏洞或未修复越权;
  • 未完成真实备份恢复演练;
  • 无 staging 全闭环记录或可回滚镜像;
  • 隐私/监护授权、微信合规材料或合法域名未就绪;
  • 监控、告警无人接收;
  • 使用测试 Adapter、测试密钥或本地 HTTP 冒充生产能力。

5. 执行规则

  • 严格按 Phase 顺序推进,一个阶段 P0 未通过不得进入下一阶段;
  • 外部配置缺失时保留真实 Adapter 和明确不可用状态,不伪造联调成功;
  • 每阶段结束更新 10_TASK_STATE.md,架构或产品决定追加到 11_DECISIONS.md;
  • 每阶段均执行 format、lint、typecheck、unit、integration 和 build,生产阶段另执行安全、恢复、E2E 与性能门禁。