# Tasks — Spec 012 Abandoned Onboarding → Lead **Spec:** `012-abandoned-onboarding-lead` **Última atualização:** 2026-06-10 --- ## Fase A — Ticket no «Criar conta» ✅ - [x] **T001** Desk: ticket em `onboarding.started` (não só `account.created`) - [x] **T002** Desk: `account.created` → nota no ticket existente (sem duplicar) - [x] **T003** Desk: `_backfill_funnel_notes` para `domain.validated` + `dns.applied` - [x] **T004** VM112: remover `onboarding.started` de `validate-domain` - [x] **T005** VM112: emitir `onboarding.started` em `POST /account/create` com `email` - [x] **T006** Scripts `verify-funnel-webhook.sh` — ordem real do funil - [x] **T007** Spec 012 + BACKLOG actualizados --- ## Fase B — Detecção abandono → Lead ✅ - [x] **T010** Env `ONBOARD_STALE_HOURS` (default 24) - [x] **T011** Worker job: sessões stale → `crm_track=lead` + `lead_detected_at` - [x] **T012** `GET /api/v1/crm/leads` — lista tickets lead - [x] **T013** UI Desk: painel «Leads abandonados» (grid + view + filtro tickets) - [x] **T014** Badge stale/lead na grid sessões liga ao ticket --- ## Fase C — Outreach - [ ] **T020** `POST /api/v1/crm/leads/{ticket_id}/contact` — log outreach - [ ] **T021** `POST /api/v1/crm/leads/{ticket_id}/promote` — promoção manual - [ ] **T022** Spec 007: push «lead abandonado» → ops_lead - [ ] **T023** Template e-mail recuperação (VM108 Postfix) --- ## Fase D — CRM externo + Chat - [ ] **T030** Decisão Roger: canal chat (widget / tablet / outro) - [ ] **T031** Integração Odoo CRM (lead export idempotente por `ticket_id`) - [ ] **T032** Webhook CRM inbound — `lead_converted` / `lead_lost` - [ ] **T033** Documentação quickstart operacional --- ## Verificação ```bash # Ordem real (domínio → DNS → criar conta) bash /opt/ligbox-ops-platform/scripts/verify-funnel-webhook.sh # VM112: onboarding.started só em account/create ssh root@10.10.10.112 "grep -n onboarding.started /opt/ibytera-mail-portal/backend/app/routers/onboarding.py" ```