docs(ops): 补齐生产 runbook 和 readiness 清单

- 新增迁移回滚、AppData 退场、小宝后台任务 runbook\n- 新增生产 readiness 证据清单和 runbook placeholder 扫描\n- 更新部署文档与路线图到 V2.8 运维闭环阶段\n\nCo-Authored-By: GPT-5 Codex <codex@openai.com>
This commit is contained in:
2026-07-08 16:28:02 +08:00
parent 7837a809ca
commit 72a59f125c
10 changed files with 420 additions and 15 deletions

View File

@@ -1,17 +1,16 @@
# 开发路线图
## 当前阶段V2.4领域 CRUD 主写迁移
## 当前阶段V2.8生产硬化稳定版 + 运维闭环
V2.4 的目标是把业务主数据源从 AppData JSONB 文档切换到 PostgreSQL 领域关系表。AppData 继续保留为迁移、回填、兼容读取和排查入口,但不再作为长期主写入源;新增业务能力必须优先设计关系表、领域 CRUD API、索引/分区键和权限边界。V2.4 做逐领域主写迁移,并随 CRUD 入口埋好基础权限、`actorId` 和审计事件骨架;完整 RBAC、审计覆盖和 AppData 退场收口放到 V2.5
V2.8 的目标是在既有生产 CI/CD 基线上补齐运维闭环:备份恢复演练、发布 smoke test、监控告警、日志检索、迁移回滚 runbook、AppData 退场 runbook、小宝后台化 runbook 和生产 readiness 证据清单。当前执行前提是 V2.4 领域 CRUD 主写迁移已由上游验收完成;本阶段不重新设计业务流程,专注把生产发布和故障处置做成可验证、可复盘、可回滚的标准流程
### 当前重点
1. **领域写 API**:按模块补齐 Product/Project/Version/Requirement/VersionPlan/DevTask/TestCase/Bug/Member/TaskCategory/Worklog/Overtime 的关系表写入 API
2. **前端持久化切换**Zustand store 保留状态管理,但保存入口从 `saveServerData(key)` 迁到领域 API读取优先 V2.2/V2.3 关系表接口
3. **AppData 迁移工具化**:把 AppData → 关系表同步做成可重复运行、可计数校验、可回滚的运维脚本,不提交真实 `.env`
4. **主写切换闸门**:每个领域完成双读核对后,先停止该领域 JSON 主写入,再进入 V2.5 的 fallback 移除和归档退场
5. **数据一致性校验**:为每个迁移领域补 counts、抽样记录、孤儿引用、分区键完整性和唯一约束校验
6. **权限/审计骨架**:领域 API 必须携带当前用户、产品/项目/版本作用域和审计事件入口,避免 V2.5 做 RBAC 时返工。
1. **备份恢复自动化**PostgreSQL dump、`server_data` volume 备份、fresh DB restore dry-run 和显式覆盖确认
2. **发布 smoke test**GitHub Actions 部署后自动校验 runtime version、前端根页、产品页、产品 API、V2.2 读路径和 AI 配置
3. **监控告警基线**Prometheus/Grafana/Loki/Promtail 可选 profile覆盖慢 API、慢 Prisma、任务失败、小宝摘要 stale、磁盘压力和 DB 可用性
4. **迁移和后台任务 runbook**迁移回滚、AppData 退场、小宝后台化处置步骤、决策点和数据风险
5. **生产 readiness 清单**backup/restore、smoke、monitoring、audit、RBAC、consistency、performance 和 post-release verification 都要有证据项
## V2 分阶段交付链路
@@ -34,12 +33,18 @@ V2.4 的目标是把业务主数据源从 AppData JSONB 文档切换到 PostgreS
- 版本详情已有需求、调研、产品方案、UI、开发任务、测试用例、Bug、概览等核心 Tab渲染重的路径优先接入 V2.2 关系表快读,并保留 AppData fallback。
- 后端已落地 Product、Requirement 领域 CRUDDataModule AppData 乐观锁V2.2 快读 APIV2.3 AppData 写后同步关系表AI Provider 抽象和健康版本接口。
- Prisma schema 已包含 Product、Project、Version、Requirement、VersionPlan、DevTask、TestCase、Bug、WorkActivity、Xiaobao、AiLog、AppData 等关系模型;高增长表的分区 migration 已落地。
- 主写入源仍处在兼容窗口:多数前端 store 继续通过 `apps/web/lib/server-data.ts``loadServerData` / `saveServerData` 写 AppData`useProductStore` 仍以 `products-overview` 文档作为产品/项目/版本树主写入
- Project、Version、VersionPlan、DevTask、TestCase、Bug、Member、TaskCategory、TaskWorklog、Overtime 等领域写 API 尚未完整替代 AppData Store。若后续称为 V2.4,应理解为“领域 CRUD 迁移阶段”,不是 V2.3 已完成内容
- `packages/shared` 中仍保留早期枚举口径;切换领域 API 时需要统一为当前前端业务状态机
- 本 V2.8 执行线程以前提“V2.4 领域 CRUD 主写迁移已完成验收”推进;本阶段不重新逐项复核领域 API 清单
- V2.8 新增运维交付物集中在 `scripts/``.github/workflows/deploy-production.yml``deploy/monitoring/``docs/runbooks/``docs/deployment.md``docs/production-readiness.md`
- AppData 退场、RBAC/审计、性能和小宝后台化仍通过 production readiness 证据项追踪,避免把运维稳定版误当成业务治理已全部完成
### 已完成(按时间倒序)
**2026-07-08**
- V2.8 production ops closure started: added PostgreSQL backup, fresh DB restore with explicit overwrite confirmation, and `server_data` volume backup automation.
- Added release smoke suite and wired GitHub Actions deployment verification to runtime version, frontend root, products, V2.2 read path, and AI config checks.
- Added optional monitoring profile with Prometheus, Grafana, Loki, Promtail, postgres-exporter, node-exporter, cAdvisor, and blackbox-exporter.
- Added migration rollback, AppData retirement, Xiaobao background jobs runbooks, and production readiness evidence checklist.
**2026-07-06**
- Added production CI/CD flow: GitHub Actions builds `web` and `server` Docker images, pushes immutable commit-SHA tags to GHCR, deploys by SSH, pulls images on the server, runs `pnpm --filter server db:deploy`, restarts Compose, and verifies `/api/v1/health/version`.
- Added runtime version metadata: backend `GET /api/v1/health/version`, Docker build args/env, and a frontend refresh banner when browser assets are older than the server runtime.
@@ -117,12 +122,12 @@ V2.4 的目标是把业务主数据源从 AppData JSONB 文档切换到 PostgreS
### 进行中
- V2.4 领域 CRUD 主写迁移:从 AppData JSONB 主写入切换到关系表 API并随 API 落基础权限、审计和查询性能边界
- V2.8 生产硬化稳定版:补齐备份恢复、发布 smoke、监控告警、日志检索、迁移回滚和运维证据闭环
- 项目详情页 VersionCard 状态胶囊数据联动(部分已完成)
## V2 — 后端接入
NestJS + Prisma + PostgreSQL 已接入到 V2.3。第一阶段用 `app_data` JSONB 文档表承接现有 store 数据形状,避免浏览器清站点数据导致业务数据丢失;第二阶段建立分区关系表、V2.2 快读 API 和 V2.3 AppData 写后同步。当前 V2.4 才是逐领域启用写 API让前端 store 从 AppData 主写迁移到领域 CRUDAppData 后续只保留为迁移兼容层
NestJS + Prisma + PostgreSQL 已完成 V2.1 至 V2.4 的后端迁移主线。第一阶段用 `app_data` JSONB 文档表承接现有 store 数据形状避免浏览器清站点数据导致业务数据丢失第二阶段建立分区关系表、V2.2 快读 API 和 V2.3 AppData 写后同步V2.4 完成领域 CRUD 主写迁移验收。V2.8 不再新增业务主写迁移范围,而是把生产运维、备份恢复、监控告警和回滚手册补齐
### 关键任务
@@ -141,7 +146,7 @@ NestJS + Prisma + PostgreSQL 已接入到 V2.3。第一阶段用 `app_data` JSON
当前不做本地导入导出。清站点数据后浏览器旧数据无法恢复,后续新增数据直接写入 PostgreSQL。若以后需要迁移旧浏览器数据再单独做管理员导入工具。
## V2.4 — 领域 CRUD 迁移(当前阶段
## V2.4 — 领域 CRUD 迁移(已完成前提
目标是让关系表从“快读 + AppData 同步副本”逐步升级为主写入路径。迁移顺序应优先选择写入频率高、实体边界清晰、已经在 V2.2 mapper 中稳定的领域:
@@ -221,7 +226,7 @@ V2.4 推进前必须先统一 `packages/shared` 的状态枚举与当前前端
|------|------|
| V1 业务流程打磨 | 进行中 |
| V1 朋友试用反馈 | 持续中 |
| V2 后端接入 | 进行中V2.1/V2.2/V2.3 已完成V2.4 主写迁移中) |
| V2 后端接入 | V2.1-V2.4 已完成V2.8 运维闭环进行中 |
| V3 AI 集成 | 等 V2 数据沉淀 |
| 公开发布 | TBD |
**2026-06-26**