# KB — Portal de gerenciamento abria wizard Concluído (2026-06-19)

**Sistema:** Wizard VM112 · `onboard.ligbox.com.br`  
**Severidade:** P1 UX — botão errado no passo Concluído  
**Reportado por:** Roger  
**Estado:** ✅ Corrigido em produção + espelho CT130

---

## Sintoma

No passo **Concluído**, o botão **«Portal de gerenciamento»** (`href=/admin`) reabria o **wizard no passo final** em vez do painel **DomainAdmin** (Gerente de Domínio).

## Causa raiz

O host `onboard.ligbox.com.br` usa build **`VITE_WIZARD_ONLY=1`** (`main-wizard.jsx`), que **não tinha rota `/admin`**.

O `RouterApp.jsx` (site completo `ligbox.com.br`) mapeia `/admin` → `DomainAdmin`, mas o entry wizard-only caía sempre em `<App />` (wizard).

## Comportamento correcto (spec)

| Botão | Destino | Notas |
|-------|---------|-------|
| Abrir webmail | `https://mail.{domínio}/` | Nova aba |
| Portal de gerenciamento | `/admin` → **DomainAdmin** | Login `admin@domínio` + senha onboarding |
| Finalizar | `ligbox.com.br/#self-service` | Limpa sessão wizard |

Ver também: Spec 025 § Passo Concluído; chat bruto OPS jun/2025 («Abrir painel do domínio →»).

## Correção

`main-wizard.jsx` — antes do render do wizard:

```javascript
if (path === "/admin/forgot-password") → ForgotDomainPassword
else if (path === "/admin" || path.startsWith("/admin/")) → DomainAdmin
```

Deploy: `npm run build:wizard` + `ligbox-wizard.service`.

## Outras correcções na mesma sessão

- `clientSettings.js` — texto SMTP legado em `sessionStorage` (IP partilhado / Ibytera)
- `onboarding.py` — `smtp_note` canónico sem IP partilhado
- Título clientes: Thunderbird / Outlook / **iPhone / Android**
- Desk VM122: card **Ligbox Datacenter — Node VM001** + sync domínios audit

## Verificação

1. Concluir onboarding (ou passo 4 com conta criada)
2. Clicar **Portal de gerenciamento**
3. Deve abrir **login DomainAdmin**, não o wizard Concluído

## Ficheiros espelho (CT130)

`deploy/vm112-wizard/frontend/src/main-wizard.jsx`
