# DB Go-Live Handover Runbook

Exported at: 2026-05-18T11:54:51.214Z

## Purpose

Dokumen operasional final untuk transisi dari cache/AppSheet readiness menuju PostgreSQL go-live. Semua langkah tulis DB membutuhkan DATABASE_URL benar dan approval Boss.

## Go-Live Checklist

### Phase 1: Preflight
- Owner: Operator
- Check: Buka Command Center dan pastikan tidak ada HIGH priority yang belum dipahami.
- Page: /database/command-center

### Phase 2: Environment
- Owner: Operator
- Check: Set dan verifikasi DATABASE_URL mengarah ke PostgreSQL target yang benar.
- Page: /database/readiness

### Phase 3: Schema
- Owner: Developer
- Check: Review schema Drizzle dan migration SQL sebelum generate/apply.
- Page: /database/schema

### Phase 4: Migration
- Owner: Developer + Boss approval
- Check: Generate migration hanya jika schema berubah, lalu apply migration setelah approval.
- Page: /database/schema

### Phase 5: Seed
- Owner: Operator
- Check: Jalankan dry-run seed dan simpan/cek history sebelum execute.
- Page: /database/seed-readiness

### Phase 6: Seed Execute
- Owner: Operator + Boss approval
- Check: Execute seed hanya setelah readiness aman, lalu cek Seed History.
- Page: /database/seed-history

### Phase 7: Verification
- Owner: Operator
- Check: Bandingkan DB counts vs cache counts dan review mismatch.
- Page: /database/counts

### Phase 8: Draft Submit
- Owner: Operator
- Check: Cek Draft DB Readiness, export NEEDS_FIX jika ada, baru submit per draft yang ready.
- Page: /database/draft-readiness

### Phase 9: Rollback
- Owner: Operator
- Check: Pastikan backup/snapshot DB tersedia sebelum operasi tulis besar.
- Page: /database/operations

## Command Reference

### npm run db:generate
Generate migration dari schema Drizzle. Jalankan hanya jika schema berubah.

### npm run db:migrate
Apply migration ke DB target. Perlu DATABASE_URL benar dan approval.

### npm run db:seed:plan
Dry-run planning/readiness seed. Aman/read-only.

### npm run db:seed:cache
Dry-run seed cache default. Aman selama tanpa --execute.

### npm run db:seed:cache -- --execute
Menulis DB. Jalankan hanya setelah approval dan readiness aman.

## Export Artifacts

- [Command Center Snapshot](/api/database/command-center/export)
- [Draft Readiness JSON](/api/database/draft-readiness/export?format=json)
- [Draft NEEDS_FIX CSV](/api/database/draft-readiness/export?format=csv&candidate=NEEDS_FIX)
- [Seed History CSV](/api/database/seed-history/export?format=csv)
- [Draft Audit CSV](/api/work-orders/drafts/audit/export?format=csv)

## Hard Stop Rules

- Jangan jalankan `db:migrate` jika DATABASE_URL belum diverifikasi.
- Jangan jalankan `db:seed:cache -- --execute` sebelum dry-run sukses dan Boss approve.
- Jangan submit draft DB jika Draft DB Readiness masih `NEEDS_FIX`.
- Jangan lanjut jika count comparison error/mismatch belum dipahami.

## Approved Write Sequence

1. Verify DATABASE_URL via /database/readiness.
2. Review /database/schema.
3. If schema changed and Boss approves, run npm run db:generate.
4. Review generated SQL migration.
5. If safe and Boss approves, run npm run db:migrate.
6. Run npm run db:seed:plan.
7. Run npm run db:seed:cache as dry-run.
8. If dry-run is clean and Boss approves, run npm run db:seed:cache -- --execute.
9. Check /database/counts.
10. Check /database/draft-readiness.
11. Submit draft per item only when ready.
