Files
lehuo/docs/17_PRODUCTION_READINESS_PLAN.md
T

102 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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、告警接收和生产发布尚未执行,因此本退出条件仍未满足。
2026-08-15 补充 Ubuntu 26.04 单机部署包:增加 Docker 官方源安装、生产 Compose、管理后台/API 镜像、双域名 TLS、私有 MySQL/Redis/MinIO、Linux 预检、migration、备份恢复、初始管理员、systemd 定时备份、HTTPS 冒烟与应用回滚。该交付仅关闭“Ubuntu 可执行部署资产”差距,不改变真实域名、微信、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 与性能门禁。