# Anexo 037-C — E-mail projeto `proj_*@ligbox.com.br` (agente Ligbox) **Parent:** [spec.md](./spec.md) · [037-B client-cf-account-lifecycle.md](./client-cf-account-lifecycle.md) **Solicitado por:** Roger · **2026-06-22** **Status:** 📋 Regra definida — implementação Fase 2 --- ## Regra (Roger) O **agente Ligbox** deve, para cada cliente em onboarding Cloudflare: 1. **Criar caixa real** `proj_{id}@ligbox.com.br` no Carbonio (domínio `ligbox.com.br`). 2. **Gerar senha** segura e **entregar ao cliente** (uma vez, no wizard / e-mail de boas-vindas). 3. **Referenciar este e-mail em todos os processos** ligados à nova conta e à administração dos apontamentos de email da plataforma. Não é alias passivo — é **identidade operacional do projeto** até handoff ao `admin@{dominio_cliente}`. --- ## Ordem no fluxo (antes de CF + DNS cliente) ```mermaid flowchart LR A[validate-domain] --> B[provision-project-email] B --> C[Entrega senha ao cliente] C --> D[provision-client-account CF] D --> E[provision-zone + apply DNS] E --> F[account/create admin@cliente] F --> G[handoff CF gestor] ``` | Passo | Acção | E-mail usado | |-------|--------|--------------| | 1 | `POST /project/provision-email` | Cria `proj_005@ligbox.com.br` | | 2 | Resposta wizard | Senha + credenciais webmail `mail.ligbox.com.br` | | 3 | `POST /dns/cloudflare/provision-client-account` | Membro CF = `proj_005@ligbox.com.br` | | 4 | `POST /dns/cloudflare/apply` | `activity_log` + webhook com `ligbox_project_email` | | 5 | `POST /account/create` | `admin@cliente.com.br` (domínio cliente) — **distinto** do proj | | 6 | Handoff | Convite `admin@cliente` na CF; `proj_*` mantém-se suporte | --- ## Entrega da senha ao cliente | Canal | Quando | |-------|--------| | **Wizard (primário)** | Painel «Credenciais do projeto» após criar `proj_*` — copiar uma vez | | **E-mail** | Opcional: `notify_email` do wizard → template com link onboard (senha só no painel, não no email por segurança) | | **Vault servidor** | `onboard_handoff` / vault projeto — TTL 24h; nunca logar senha em `activity_log` | Texto sugerido no wizard: > Use `proj_005@ligbox.com.br` para aceder à Cloudflare e acompanhar o setup. > Webmail: https://mail.ligbox.com.br/ > Guarde a senha — não voltará a ser mostrada. --- ## Onde referenciar `ligbox_project_email` | Sistema | Campo / uso | |---------|-------------| | `domain_registry` | `project_id`, `ligbox_project_email`, `ligbox_project_password_delivered_at` | | Conta Cloudflare | Membro inicial + login convite | | `POST /dns/cloudflare/apply` | Header interno / payload webhook `project_email` | | `POST /account/create` | Body metadata `ligbox_project_email` (auditoria) | | Ops webhook VM122 | `onboard.project_email` no funil 004 | | `activity_log` | Tag `project:proj_005@ligbox.com.br` em passos DNS/CF | | Purge / Spec 017 | Não apagar `proj_*` sem confirmação ops | --- ## Registo `domain_registry` (extensão) ```json { "domain": "empresa.com.br", "project_id": "005", "ligbox_project_email": "proj_005@ligbox.com.br", "ligbox_project_display_name": "Projeto Empresa — empresa.com.br", "ligbox_project_created_at": "2026-06-22T14:00:00Z", "ligbox_project_password_delivered": true, "portal_admin_email": "admin@empresa.com.br", "cf_account_id": "…", "handoff_status": "pending" } ``` --- ## API planeadas (VM112) | Método | Path | Descrição | |--------|------|-----------| | POST | `/api/onboarding/project/provision-email` | Aloca `project_id`, cria `proj_*@ligbox.com.br`, regista domínio | | GET | `/api/onboarding/project/{domain}` | Estado identidade projeto (sem senha) | | POST | `/api/onboarding/project/reveal-password` | Uma vez por sessão — devolve senha do vault | **Implementação Carbonio:** reutilizar `carbonio.create_account_full()` no domínio `ligbox.com.br` (já existe em VM112). --- ## Código (monorepo) | Ficheiro | Função | |----------|--------| | `projects/wizard/backend/app/services/project_identity.py` | Aloca ID, cria caixa, vault senha, registo | | `deploy/vm112-wizard/project-counter.txt` | Contador sequencial (ou SQLite futuro) | --- ## Critérios de aceitação 1. Cliente recebe `proj_{id}@ligbox.com.br` + senha antes do passo DNS Cloudflare. 2. Mesmo e-mail aparece em CF, registry, webhooks e logs de DNS. 3. `admin@{dominio}` criado no passo 5 permanece e-mail principal do **mail do cliente**. 4. BYO / registrador externo **não** criam `proj_*` (só caminho Cloudflare Ligbox).