Entrega read-only de apontamentos DNS (Cloudflare, OpenPanel BIND, público) no Desk e Console /admin/dominio, com spec, scripts de rollback e patches VM112 para painel lateral no passo DNS do onboarding (deploy wizard pendente). Co-authored-by: Cursor <cursoragent@cursor.com>
4.5 KiB
4.5 KiB
Anexo 037-C — E-mail projeto proj_*@ligbox.com.br (agente Ligbox)
Parent: spec.md · 037-B 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:
- Criar caixa real
proj_{id}@ligbox.com.brno Carbonio (domínioligbox.com.br). - Gerar senha segura e entregar ao cliente (uma vez, no wizard / e-mail de boas-vindas).
- 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)
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 |
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.brpara 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)
{
"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
- Cliente recebe
proj_{id}@ligbox.com.br+ senha antes do passo DNS Cloudflare. - Mesmo e-mail aparece em CF, registry, webhooks e logs de DNS.
admin@{dominio}criado no passo 5 permanece e-mail principal do mail do cliente.- BYO / registrador externo não criam
proj_*(só caminho Cloudflare Ligbox).