# VietVoice.AI — Production Migration Checklist

## Mục tiêu
Chuyển VietVoice.AI khỏi máy GPU test/finetune sang môi trường production-ready, có khả năng tự hồi phục và giữ dữ liệu ổn định.

## 0. Trạng thái hiện tại
- Máy hiện tại **không production-ready**
- Container có thể auto-restart, nhưng môi trường không đảm bảo cho recreate/migration lớn
- Data/state hiện đã backup về workspace local
- Bot đang chạy tạm với supervisor + watchdog trong container

## 1. Chốt target production
Chọn 1 trong 3 hướng:
1. VPS/host production-ready (ưu tiên nếu muốn always-on, dễ quản trị)
2. Mac Mini (ổn định ngắn hạn, chấp nhận CPU/Metal chậm hơn)
3. GPU server production riêng (khi đã có traction và cần tốc độ)

**Tiêu chí bắt buộc:**
- Persistent disk thật
- Restart policy / supervisor ở host level
- Quyền quản trị đủ để tự deploy/restart/backup
- Có thể giữ `.env`, DB, assets qua reboot/redeploy
- Có monitoring hoặc ít nhất là alert khi process chết

## 2. Chuẩn bị artifact cần mang sang
- `.env`
- `data/bot.db`
- `assets/`
- Source code hiện tại trong `projects/transcription-bot/`
- Banner `/start`
- Backup hashes: `backups/gpu-server-2026-04-10/SHA256SUMS.txt`

## 3. Chuẩn bị máy mới
### OS / runtime
- Python runtime tương thích
- ffmpeg cài sẵn
- Nếu dùng GPU:
  - driver ổn định
  - `nvidia-smi` chạy được
  - đủ VRAM cho model dự kiến

### Process supervision
- systemd / supervisord / Docker restart policy
- App phải tự start sau reboot
- Không phụ thuộc `screen` thủ công

### Storage
- App dir cố định
- Backup dir cố định
- DB nằm trên persistent disk

## 4. Deploy app
- Copy source sang máy mới
- Tạo virtualenv/conda env hoặc Docker image production
- Restore `.env`
- Restore `data/bot.db`
- Restore `assets/`
- Chạy migrate/init DB nếu cần
- Start bot bằng supervisor thật

## 5. Verify trước khi cut over
### Bot core
- `/start` trả về banner + nút
- `📊 Quota` hoạt động
- `💳 Nạp credit` hoạt động
- Upload 1 file audio nhỏ chạy xong
- Combo transcript + summary chạy xong

### Data
- Credit cũ còn nguyên
- User cũ còn nguyên
- `bot.db` đọc/ghi bình thường

### Reliability
- Restart process → bot tự lên lại
- Reboot machine/container → bot tự lên lại
- Log có ghi ra file
- Backup chạy tự động
- Có alert khi bot chết

## 6. Cutover plan
1. Freeze deploy trên máy cũ
2. Chạy backup cuối cùng của `.env`, `bot.db`, `assets/`
3. Restore vào máy mới
4. Start bot trên máy mới
5. Smoke test end-to-end
6. Tắt bot cũ hoặc giữ standby trong thời gian ngắn
7. Theo dõi 24h đầu

## 7. Rollback plan
- Giữ máy cũ chạy standby cho tới khi máy mới ổn định
- Nếu máy mới lỗi:
  - tắt bot máy mới
  - restore DB cuối cùng nếu cần
  - bật lại bot máy cũ

## 8. Việc nên làm ngay sau migrate
- Tách `receiver` và `worker` thành 2 process riêng
- Đưa queue/job state ra storage bền hơn RAM
- Thêm monitoring cho:
  - process uptime
  - queue length
  - job error rate
  - thời gian xử lý
  - disk/RAM/VRAM
- Chuẩn hóa deploy script + smoke test + rollback script
