- 新增迁移回滚、AppData 退场、小宝后台任务 runbook\n- 新增生产 readiness 证据清单和 runbook placeholder 扫描\n- 更新部署文档与路线图到 V2.8 运维闭环阶段\n\nCo-Authored-By: GPT-5 Codex <codex@openai.com>
3.0 KiB
3.0 KiB
Production Readiness Checklist
Use this before a production release and again after the release smoke test. Each item requires evidence, not a verbal assertion.
| Area | Gate | Evidence |
|---|---|---|
| Backup and restore | PostgreSQL backup dry-run and server_data backup dry-run are reviewed. | pnpm backup:postgres -- --dry-run --env-file .env.production and pnpm backup:server-data -- --dry-run --env-file .env.production output saved in release notes. |
| Backup and restore | Restore command refuses overwrite without explicit confirmation. | pnpm restore:postgres -- --env-file .env.production --input backups/postgres/ftb_pm-postgres-20260708T120000Z.dump exits non-zero and names --confirm-overwrite. |
| Backup and restore | Fresh DB restore rehearsal completed before destructive restore. | Temporary database restore command and row-count comparison from docs/runbooks/migration-rollback.md. |
| Smoke tests | Release smoke is wired into GitHub Actions. | .github/workflows/deploy-production.yml runs scripts/smoke-test-release.mjs with --expected-version. |
| Smoke tests | Manual smoke can be run against the target. | pnpm deploy:smoke -- --base-url http://localhost --expected-version "$APP_VERSION" output. |
| Monitoring | Monitoring profile renders and can start without committed secrets. | docker compose --env-file .env.production -f docker-compose.prod.yml --profile monitoring config exits 0. |
| Monitoring | Required alert rules exist. | FtbPostgresDown, FtbDiskPressure, FtbSlowApiLogBurst, FtbSlowPrismaLogBurst, FtbJobFailureLogBurst, and FtbXiaobaoSummaryStale visible in Prometheus. |
| Audit | Domain write APIs record actor and resource scope where implemented. | API request sample or audit log sample for Product, Requirement, Project, Version, execution entities, and dictionary writes. |
| RBAC | Project and version operations enforce Owner, Admin, Member, Viewer boundaries where enabled. | Permission matrix test result or manual account walkthrough attached to release notes. |
| Consistency | AppData and relation tables are checked for migrated domains. | Count and missing-partition-key queries from docs/runbooks/appdata-retirement.md. |
| Performance | Slow API and slow Prisma thresholds are configured. | API_SLOW_REQUEST_MS and PRISMA_SLOW_QUERY_MS values recorded, plus Grafana slow-log panels checked. |
| Performance | V2.2 hot reads avoid full-table scans. | Requirement pool smoke uses productId; query plan or service test evidence attached for high-volume domains. |
| Post-release | Runtime version matches the release SHA. | /api/v1/health/version payload or pnpm deploy:check-runtime output. |
| Post-release | Product, requirement, workspace, Xiaobao, and AI config read paths respond. | pnpm deploy:smoke output attached. |
| Post-release | On-call rollback path is known. | docs/runbooks/migration-rollback.md link included in release notes. |
Release owner signs off only after all required evidence is attached to the release notes or incident record.