# Tasks — Spec 004 Desk Account Management

**Status:** ✅ **FECHADA** (2026-06-10)  
**API:** `0.9.4-desk-2fa-recovery`  
**Validação:** Roger — aprovado fim-a-fim

---

## Fase 1 — Cadastro e aprovação (004a)

- [x] **T001** Schema `desk_registration_requests`
- [x] **T002** `POST /api/v1/auth/register`
- [x] **T003** `register.html` + link no login
- [x] **T004** E-mail root + ticket pending
- [x] **T005** Tela Mensagens — aprovar / rejeitar
- [x] **T006** Aprovação + e-mail + ticket com link
- [x] **T007** PRG pós-cadastro

## Fase 2 — Postfix e e-mail (004-postfix)

- [x] **T010** Postfix VM122
- [x] **T011** `mail_notify.py` + env SMTP
- [x] **T012** Ticket postfix infra
- [x] **T013** LMTP VM108 `@ligbox.com.br`
- [x] **T014** Remetente `ligbox-ops@ligbox.com.br`
- [x] **T015** `transport_maps` → VM108:7025
- [x] **T016** `canonical_maps` legado → `@ligbox.com.br`

## Fase 3 — Ativação 2-de-3 + TOTP (004b)

- [x] **T020** `pyotp` + `totp_util.py`
- [x] **T021** Flags `*_verified`
- [x] **T022** `POST /activate` lógica 2-de-3
- [x] **T023** `activate.html` layout 3 colunas
- [x] **T024** QR local (`qrcode.min.js`)
- [x] **T025** Barra progresso X/2
- [x] **T026** `/login/mfa` + step login
- [x] **T027** ntfy tópico + push
- [x] **T028** Fix headers ntfy (Unicode)

## Fase 4 — UI pt-BR e docs

- [x] **T030** pt-BR UI/API/e-mails
- [x] **T031** Regra `portugues-brasil.mdc`
- [x] **T032** `docs/email-ligbox-vm108.md`
- [x] **T033** `docs/postfix-vm122.md`
- [x] **T034** Validação E2E Roger
- [x] **T035** Spec + quickstart

## Fase 5 — Minha conta (004 v2)

- [x] **T040** `POST /change-password`
- [x] **T041** TOTP obrigatório na troca (se ativo)
- [x] **T042** View Minha conta (todos perfis)
- [x] **T043** `GET /me` → `totp_enabled`
- [x] **T044** Formulário persistente (sem refresh apagar campos)
- [x] **T045** Validação Roger — Minha conta OK

## Fase 6 — Recuperação 2FA + backup codes (2026-06-16)

- [x] **T050** `backup_codes.py` — 10 códigos uso único
- [x] **T051** Backup na ativação (TOTP) + e-mail
- [x] **T052** `login/mfa` aceita `backup_code`
- [x] **T053** `mfa_recovery_store.py` + rotas API
- [x] **T054** Login UI — perdi autenticador + backup
- [x] **T055** Notificação root início/fim recuperação
- [x] **T056** Minha conta — contagem backup restantes
- [x] **T057** Spec + quickstart atualizados

---

## Deploy

```bash
cd /opt/ligbox-ops-platform
docker-compose -f docker-compose.mvp.yml build api frontend
docker-compose -f docker-compose.mvp.yml up -d api frontend
postfix check && systemctl reload postfix
```

## Verificação

```bash
curl -s https://api.ops.ligbox.com.br/health
# version: 0.8.0-desk-2fa-2of3
```
