obsidian-vault/ligbox-ops-platform/specs/013-email-server-migration/tasks.md
2026-06-19 17:26:42 +00:00

3.9 KiB
Raw Blame History

Tasks: Email Migration (013)

Spec: spec.md · Plan: plan.md


Fase A — Fundação (P0)

  • T001 Criar pasta specs/013-email-server-migration/ (este sprint)
  • T002 Migration SQL schema + migrations em api/app/db.py
  • T003 app/migration/schemas.py — Pydantic models
  • T004 app/migration/store.py — CRUD jobs/mailboxes/runs
  • T005 app/migration/credentials.py — Fernet encrypt
  • T006 app/migration/router.py — POST/GET jobs, list
  • T007 permissions.pycan_manage_migration, can_approve_migration_gate
  • T008 scripts/install-migration-tools.sh — imapsync, pst-utils, imap-upload
  • T009 Frontend: menu + view-email-migration lista jobs
  • T010 Associar job a ticket_id (Spec 010)

Entrega Fase A: criar job, listar, ver fase, sem sync ainda.


Fase B — IMAP sync + Gate (P0)

  • T011 tools/imapsync_runner.py — gera comando, executa, captura log
  • T012 tools/log_parser.py — parse imapsync LOG para stats_json
  • T013 worker/migration_runner.py — fila Redis/SQLite job runner
  • T014 POST /migration/jobs/{id}/preflight — justlogin origem+destino
  • T015 POST /migration/jobs/{id}/sync — initial | delta | final
  • T016 gate.py — calcular migration_gate (ratio 99%)
  • T017 GET /migration/gate?domain= — público para wizard (auth token)
  • T018 POST /migration/jobs/{id}/approve-gate — ops_lead
  • T019 UI: detalhe job, botões sync, badge gate, log viewer
  • T020 scripts/verify-migration.sh — teste integração

Entrega Fase B: migração IMAP completa com gate DNS.


Fase C — PST / mbox (P0)

  • T021 Volume Docker /data/migrations (uploads, logs, quarantine)
  • T022 POST /migration/jobs/{id}/upload-pst — multipart
  • T023 tools/pst_runner.py — readpst + imap-upload recursivo
  • T024 Quarentena ERR_MBOX + UI lista erros
  • T025 verify.py — contagens pós-PST
  • T026 UI: upload PST, progresso por pasta

Entrega Fase C: pipeline PST auditável.


Fase D — TGZ + integração wizard (P1)

  • T027 tools/tgz_runner.py — SSH zmmailbox export/import
  • T028 VM112: consulta gate antes DNS (API client)
  • T029 Webhook migration.gate_ready → Desk
  • T030 Relatório JSON/PDF export no ticket

Fase F — Infraestrutura (FUTURO — não hoje)

Decisão Roger 2026-06-10: sizing VM guardado em infrastructure.md. Revisar antes da primeira migração PST em produção.

  • T036 Avaliar carga real vs Opção A (VM122) vs Opção B (VM123)
  • T037 Provisionar VM123 ligbox-migration (4 vCPU / 8 GB / 200 GB) — se necessário
  • T038 Volume +100 GB em VM122 — alternativa piloto
  • T039 DNAT/FORWARD SSH WAN para VM123 (range 25012510)
  • T040 install-migration-tools.sh no host worker escolhido

Fase E — Melhorias (P2)

  • T031 Integração pst2mbox (https://github.com/beaufour/pst2mbox)
  • T032 OAuth2 UI para O365 (oauth2_imap)
  • T033 Cron delta sync automático (6h)
  • T034 doveadm backup path (Dovecot→Dovecot)
  • T035 Dashboard métricas migração no Overview Home

Dependências externas

Pacote Instalação
imapsync apt / imapsync.lamiral.info
pst-utils (readpst) apt install pst-utils
imap-upload git clone rgladwell/imap-upload
python cryptography Fernet credentials

Definition of Done (013)

  • Spec + research + plan + data-model + tasks + quickstart documentados
  • Fase B entregue em staging com 1 migração IMAP real
  • Fase C com 1 PST teste < 2 GB
  • Gate bloqueia e libera DNS com auditoria
  • BACKLOG.md actualizado