100 lines
5.6 KiB
Markdown
100 lines
5.6 KiB
Markdown
# 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 与性能门禁。
|