# Anais de Referência — Wizard Gate · Email Boas-vindas · FOSS dratcoin (2026-07-01)

**Data:** 2026-07-01  
**Utilizador:** Roger  
**VMs:** VM112 (wizard) · VM122 (Desk) · VM123 (FOSS/Odoo/OpenPanel) · VM130 (Obsidian)  
**Domínio caso:** `dratcoin.com`  
**Spec relacionada:** Spec 043 (gate pós-onboarding + activação billing)

---

## Resumo executivo

| Área | Estado |
|------|--------|
| Gate portal admin (modais empresa + webmail) | ✅ Implementado e deploy VM112 |
| Email boas-vindas admin | ✅ Logo oficial + footer Ligbox/Lig-it |
| FOSS cliente dratcoin | ✅ Cliente **#13**, order **#9**, invoice **#3** (unpaid) |
| Activación automática FOSS pós-wizard | ❌ Ainda manual (Desk `activate`) |
| DNS público dratcoin | ⏳ Registrador ainda aponta NS Cloudflare |
| Odoo admin | ✅ Validado login |

---

## 1. Gate portal admin (VM112)

### Fluxo alvo (Roger)

1. Wizard conclui → infra Ligbox pronta; só falta propagação DNS no registrador  
2. Gerente entra em `https://onboard.ligbox.com.br/admin`  
3. **1.º acesso** → modal bloqueante confirma dados empresa  
4. Webhook `company.validated` → Desk  
5. Modal liberação webmail com 2FA Ligbox  
6. Aviso Carbonio removido após release  

### Ficheiros alterados

| Ficheiro | Alteração |
|----------|-----------|
| `frontend/src/DomainAdmin.jsx` | Wire gate: modais, banner, refresh `/me` |
| `frontend/src/components/CompanyConfirmModal.jsx` | Form completo (CNPJ, endereço, cobrança) |
| `frontend/src/components/WebmailReleaseModal.jsx` | (existente, ligado) |
| `frontend/src/stitch-admin.css` | Estilos `.gate-modal*` |
| `backend/app/routers/domain_admin.py` | `apply_portal_draft_to_domain()` no login |
| `backend/app/services/company_gate.py` | (já existia) |

### API gate

| Endpoint | Função |
|----------|--------|
| `GET /api/domain-admin/me` | Inclui objeto `gate` |
| `POST /api/domain-admin/gate/company-profile` | Confirma empresa |
| `POST /api/domain-admin/gate/release-webmail` | Libera webmail (2FA Ligbox) |

### Deploy

```bash
cd /opt/ligbox-wizard/frontend && npm run build:wizard
systemctl restart ligbox-wizard
```

**Build fix:** `consumeOnboardHandoffFromAllSources` adicionado em `sessionPersist.js`.

---

## 2. Email boas-vindas administrador

### Template

- `backend/app/templates/email/onboarding_welcome.html`
- `backend/app/services/email_templates.py`

### Logo hero (correcção 2026-07-01)

| Errado (antes) | Correcto (agora) |
|----------------|------------------|
| `logo-ligbox_novo.png` (laranja, marca errada) | `ligbox-logo-hero-web.png` base |
| Caixa branca no hero | **Sem fundo** — variante luminosidade |
| — | `ligbox-logo-hero-email-dark.png` (texto branco, ícone original) |

**Asset:** `https://ligbox.com.br/assets/ligbox-logo-hero-email-dark.png`  
**Gerado:** ImageMagick a partir de `ligbox-logo-hero-web.png` (substituir tons escuros do wordmark por branco).

### Footer (igual site Ligbox)

- Logo Ligbox + tagline  
- Suporte `comercial@ligit.com.br` · `(41) 3806-0620`  
- Logo Lig-it (`lig-it-logo-final.png`)  
- **Powered by Ligit Solutions** · ligbox.com.br  

### Reenvio teste

```bash
PYTHONPATH=/opt/ligbox-wizard/backend /opt/ligbox-wizard/.venv/bin/python3 -c "
from app.services import notifications
notifications.send_welcome_to_mailbox(
    email='001@dratcoin.com', domain='dratcoin.com',
    webmail='https://mail.dratcoin.com/', display_name='Dratcoin Admin')
"
```

---

## 3. dratcoin.com — estado infra

| Camada | Status |
|--------|--------|
| Carbonio + `001@dratcoin.com` | ✅ Activo |
| mail-bundle VM112 | ✅ `foss_client_id=13`, `foss_order_id=9` |
| OpenPanel zona VM123 | ✅ MX/A/SPF/DMARC |
| DNS registrador | ❌ NS Cloudflare (`norah`/`rohin`) — não Ligbox BIND |
| Webmail aviso | Informativo até release portal admin |

**Registry:** `/var/lib/ibytera-mail-portal/domains/dratcoin.com.json`  
**Mail bundle:** `/var/lib/ligbox-wizard/mail_bundles/dratcoin.com.json`

---

## 4. FOSS — porque não aparecia / invoice

### Regra importante

`company.validated` (wizard) **≠** criação FOSS automática.

```
company.validated → Desk billing_accounts (awaiting_billing_validation)
                              ↓
POST /api/v1/billing/accounts/{id}/activate   ← passo manual/API
                              ↓
FOSS client → order → invoice → OpenPanel → Odoo → mail-bundle
```

### Estado FOSS dratcoin (validado API 2026-07-01)

| Registo | ID | Detalhe |
|---------|-----|---------|
| Cliente | **13** | `001@dratcoin.com` · **Dratcoin Ltd** · active |
| Order | **9** | Ligbox Mail Business |
| Invoice | **3** | `FOSS00003` · R$ 549,00 · **unpaid** |

**Procurar no admin:** `001@dratcoin.com` ou «Dratcoin Ltd» (não só «Dratcoin»).

### Falha 1.ª activação (~16:29 UTC)

- FOSS API: `created: true` mas `client_id: null` (bug parse `_extract_id`)  
- Wizard mail-bundle: 404 na VM112  
- Desk marcou `ok: true` incorrectamente  

FOSS criado ~1,5h depois em retry manual.

### Pendências código (VM122)

1. Auto-hook `company.validated` → `activate_billing_account`  
2. Corrigir `_extract_id()` em `foss_client.py`  
3. Falhar activação se `client_id` null ou wizard 404  

---

## 5. Credenciais Odoo 16 (VM123)

| Campo | Valor |
|-------|--------|
| URL pública | https://financeiro.ligbox.com.br/odoo/web/login?db=ligbox |
| URL interna | http://10.10.10.123:8069 |
| Login | `admin@ligbox.com.br` |
| Senha / API Key | `LbOdooAdmin805353` |
| Base dados | `ligbox` |
| Postgres user | `odoo` |
| Postgres pass | `LbOdood9ca25c3` |

**Fonte:** `/opt/ligbox-ops-platform/LAPTOP/CREDENCIAIS_SERVICOS_VM123.txt` (VM122)  
**Validação:** `web/session/authenticate` → uid **2** OK.

---

## 6. Credenciais FOSS (referência)

| Campo | Valor |
|-------|--------|
| URL admin | https://financeiro.ligbox.com.br |
| User API | `admin` |
| Token | `lbfoss-5d2dc39f163866f5dabced5bc0ad251f` |
| FOSS Admin UI | `admin@ligbox.com.br` / `LbFossAdmin805353` |

---

## 7. Catálogo 20 pacotes FOSS (sessão anterior)

- Products ids 2–21 com pricing recorrente  
- Descrições HTML ricas via `ligbox-bundle-descriptions.py`  
- Docs: `LIGBOX-CATALOG-20.md`, `BUNDLE-DESCRIPTIONS.md`  
- Repo VM130: `ligbox-ops-platform`

---

## 8. Logos VM112 (referência)

| Ficheiro | Uso |
|----------|-----|
| `/opt/ligbox-web/assets/ligbox-logo-hero-web.png` | Logo oficial |
| `/opt/ligbox-web/assets/ligbox-logo-hero-email-dark.png` | Email fundo escuro |
| `/opt/ligbox-web/assets/v4/logo-ligbox_novo.png` | Variante laranja — **não usar em email** |
| `/opt/ligbox-web/assets/logos_sites/lig-it-logo-final.png` | Footer Lig-it |

---

## 9. Comandos úteis

```bash
# FOSS cliente dratcoin
curl -s -X POST "https://financeiro.ligbox.com.br/api/admin/client/get" \
  -u "admin:lbfoss-5d2dc39f163866f5dabced5bc0ad251f" \
  -H "Content-Type: application/json" -d '{"id":13}'

# FOSS invoices cliente 13
curl -s -X POST "https://financeiro.ligbox.com.br/api/admin/invoice/get_list" \
  -u "admin:lbfoss-5d2dc39f163866f5dabced5bc0ad251f" \
  -H "Content-Type: application/json" -d '{"client_id":13}'

# Preview email
# file:///opt/ligbox-wizard/backend/app/templates/email/onboarding_welcome_preview.html
```

---

## 10. Próximos passos (Roger)

- [ ] NS registrador dratcoin → `ns1.ligbox.com.br` / `ns2.ligbox.com.br`  
- [ ] Activar FOSS automaticamente após confirma empresa no portal  
- [ ] Pagar/enviar invoice FOSS-3 ao cliente  
- [ ] Testar fluxo gate E2E: login `001@dratcoin.com` → modal → release webmail  
- [ ] Commit gate wiring no repo Forgejo (VM130) se ainda não feito  

---

*Documento gerado pela sessão Cursor 2026-07-01 · Obsidian VM130*
