ligbox-ops-platform/specs/035-ligbox-mail-bundles-foss-openpanel/ligbox-system-admin-ui.md
Ligbox Spec Hub 038fb8f7ce feat(dns): Spec 037 DNS Viewer — Desk, Console e patches Wizard V4
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>
2026-06-25 16:36:25 +00:00

213 lines
11 KiB
Markdown

# Spec 035-C — Admin Ligbox (Sistema) — Console agregado staff
**Criado:** 2026-06-21
**Solicitado por:** Roger
**Status:** ✅ URL fixada — integrado em [ligbox-console-shell.md](./ligbox-console-shell.md)
**URL:** `https://console.ligbox.com.br/comercial` (staff) · `/ops` (chamados Spec 019)
**Relacionado:** Spec **035** · **024** · **027** (RBAC) · **019** (Ops Console)
---
## 1. Decisão Roger (2026-06-21)
> A página de **aprovação de preços** pertence ao **Admin Ligbox** — não ao FOSS nem a portais dispersos.
> Da mesma forma que precisamos de **uma página agregada para utilizadores** (todos os setups de user de todas as ferramentas), precisamos do **mesmo para o Admin do sistema**.
**Princípio único (3 portais):**
| Portal | Quem | O quê agrega |
|--------|------|--------------|
| **Admin Ligbox** (esta spec) | Roger + staff RBAC | **Todos** os setups **admin/plataforma** — preços, produtos, gateway, provisionamento, clientes |
| **Gerente de Domínio** | `admin@{dom}` | **Todos** os setups **do domínio** — contas, quotas, DMARC, pagamento resumo |
| **Utilizador** (Fase B) | `{user}@{dom}` | **Todos** os setups **pessoais** — OOO, assinatura, redirects, senha, Files prefs |
**Regra de ouro:** nenhum portal manda o utilizador «configurar» noutra ferramenta nativa (FOSS admin, OpenPanel UI, Nextcloud admin, Carbonio admin). APIs nativas ficam **por trás**; a UI Ligbox **agrega**.
---
## 2. Três níveis — visão completa
```
┌─────────────────────────────────────────────────────────────────┐
│ NÍVEL 0 — ADMIN LIGBOX (Sistema) ← ESTA SPEC (035-C) │
│ Roger · staff @ligbox.com.br (RBAC Spec 027) │
│ • Aprovação de preços & catálogo bundles │
│ • Gateway pagamento (boleto/PIX) — config & status │
│ • Provisioning global (OpenPanel, wizard, VM116) │
│ • Clientes / domínios / impersonate gerente │
│ • Ops: chamados, health, audit (integra Spec 019) │
└─────────────────────────────────────────────────────────────────┘
│ vende & provisiona
┌─────────────────────────────────────────────────────────────────┐
│ NÍVEL 1 — GERENTE DE DOMÍNIO ← Spec 035-UI (Fase A)│
│ admin@empresa.com.br · onboard.ligbox.com.br/admin │
│ • Plano, limites, boleto/PIX resumo │
│ • CRUD contas email + quotas Nextcloud │
│ • DMARC, DNS, upgrade plano │
└─────────────────────────────────────────────────────────────────┘
│ cria contas
┌─────────────────────────────────────────────────────────────────┐
│ NÍVEL 2 — UTILIZADOR DE EMAIL ← Spec 035-B (Fase B)│
│ vendas@empresa.com.br · onboard.ligbox.com.br/me │
│ • Redirects, OOO, assinatura, senha │
│ • Prefs Files pessoais, quota uso │
│ • (sem admin domínio · sem preços · sem DMARC global) │
└─────────────────────────────────────────────────────────────────┘
```
---
## 3. Admin Ligbox — secções agregadas
### 3.1 Comercial & preços (Roger — obrigatório)
| Funcionalidade | Hoje (disperso) | UI Admin Ligbox |
|----------------|-----------------|-----------------|
| **Aprovar preços** | FOSS admin / planilha | Fila «Preços pendentes» → Roger aprova/rejeita |
| Catálogo bundles | FOSS produtos | Starter / Business / Enterprise / Custom |
| Margem & benchmark | spec.md §1.1 | Editor inline + histórico versões |
| Publicar no FOSS | manual | Botão «Publicar» → API FOSS |
| Promoções / cupons | FOSS | Lista + criar (proxy API) |
**Fluxo aprovação preços:**
```
Staff propõe alteração preço (ou import Spec)
→ Estado: rascunho
→ Fila Admin Ligbox «Aguarda Roger»
→ Roger aprova
→ Desk API → FOSSBilling actualiza produto
→ Log audit (quem, quando, valor anterior/novo)
```
Roger **nunca** precisa entrar no backoffice FOSS para aprovar preço.
### 3.2 Billing & gateway
| Funcionalidade | Backend | UI Admin Ligbox |
|----------------|---------|-----------------|
| Config gateway ASAAS/Iugu | VM123 | Credenciais, ambiente sandbox/prod |
| Webhooks pagamento | FOSS + Desk | Log últimos eventos |
| Faturas globais | FOSS | Pesquisa por cliente/domínio |
| Inadimplência | FOSS | Lista + acções (suspender bundle) |
### 3.3 Provisioning & plataforma
| Funcionalidade | Backend | UI Admin Ligbox |
|----------------|---------|-----------------|
| Jobs provisionamento | OpenPanel + Wizard | Fila, retry, erro |
| Domínios activos | Wizard + Desk | Lista + health |
| Nextcloud VM116 | OCS / admin API | Quota cluster, tenants |
| EasyDMARC contas | API ext. | Domínios registados |
| Bridge FOSS↔OP | VM123 :18087 | Status bridge |
### 3.4 Clientes & suporte
| Funcionalidade | UI Admin Ligbox |
|----------------|-----------------|
| Lista clientes FOSS | pesquisa, plano, estado pagamento |
| Impersonate gerente | abre `/admin` como domínio (auditado Spec 027) |
| Chamados | integração Spec 019 / Desk tickets |
| Leads abandonados | Spec 012 widget |
### 3.5 Ops & segurança — **mesmo shell** (Spec 019)
Chamados `CH-*`, Discover e Wazuh vivem em **`console.ligbox.com.br/ops`** — **não** app separada.
| Item | Rota |
|------|------|
| Overview alertas | `/ops` |
| Chamado hub | `/ops/ch/:id` |
| Discover | `/ops/discover` |
| Ver no Wazuh | deep-link VM104 (staff only) |
Mesmo header, logo e design system que `/admin` gerente e `/comercial`.
---
## 4. Wireframe resumo (Admin Ligbox)
```
╔══════════════════════════════════════════════════════════════════╗
║ LIGBOX ADMIN Roger ▼ Sair ║
╠══════════════════════════════════════════════════════════════════╣
║ ┌─ Sidebar ─────────┐ ┌─ Conteúdo ──────────────────────────┐ ║
║ │ 📊 Dashboard │ │ Preços pendentes (2) │ ║
║ │ 💰 Preços & catálogo│ │ ┌─────────────────────────────┐ │ ║
║ │ 💳 Gateway & faturas│ │ │ Business R$549 → R$599 │ │ ║
║ │ ⚙️ Provisioning │ │ │ [Aprovar] [Rejeitar] [Diff] │ │ ║
║ │ 👥 Clientes │ │ └─────────────────────────────┘ │ ║
║ │ 🌐 Domínios │ │ │ ║
║ │ 🎫 Chamados │ │ Catálogo publicado │ ║
║ │ 🔐 RBAC staff │ │ Starter · Business · Enterprise │ ║
║ │ 📈 Ops Console → │ │ [+ Novo bundle] [Editar preços] │ ║
║ └────────────────────┘ └─────────────────────────────────────┘ ║
╚══════════════════════════════════════════════════════════════════╝
```
---
## 5. Integrações invisíveis (backend)
```
Admin Ligbox SPA (console.ligbox.com.br/comercial + /ops)
├── Desk API /api/v1/ligbox-admin/* → RBAC, audit, orquestração
├── FOSS API (proxy) → produtos, preços, faturas
├── Gateway API (proxy) → boleto/PIX config
├── OpenPanel API (proxy) → provision jobs
├── Wizard API (proxy) → domínios, health VM112
├── Nextcloud admin API (proxy VM116) → plataforma Files
└── Spec 019 Console API → chamados, ops
```
**FOSSBilling / OpenPanel / Nextcloud admin nativos:** zero exposição ao Roger para tarefas do dia-a-dia. Só APIs.
---
## 6. RBAC (Spec 027)
| Role | Preços | Gateway | Provisioning | Impersonate | Ops |
|------|--------|---------|--------------|-------------|-----|
| `ligbox_owner` (Roger) | aprovar | sim | sim | sim | sim |
| `ligbox_commercial` | propor | read | read | não | não |
| `ligbox_ops` | read | read | sim | sim (audit) | sim |
| `ligbox_support` | read | read | read | limitado | tickets |
---
## 7. Relação com outros documentos
| Documento | Nível |
|-----------|-------|
| **Este ficheiro** | Nível 0 — Admin Ligbox sistema |
| [domain-manager-console-ui.md](./domain-manager-console-ui.md) | Nível 1 — Gerente domínio |
| [user-self-service-ui.md](./user-self-service-ui.md) | Nível 2 — Utilizador email |
| [spec.md](./spec.md) §4 | Arquitectura backend |
| Spec **019** | Ops Console (secção dentro ou link Admin Ligbox) |
---
## 8. Fases de implementação
| Fase | Entrega |
|------|---------|
| **C0** | Wireframe + RBAC roles «preços» |
| **C1** | Fila aprovação preços → publicar FOSS |
| **C2** | Dashboard clientes + domínios + gateway status |
| **C3** | Provisioning monitor + impersonate gerente |
| **C4** | Unificar navegação com Ops Console Spec 019 |
**Depende de:** Fase 0 Spec 035 (produtos FOSS rascunho) para alimentar fila de preços.
---
## 9. Próximo passo
1. ~~Roger confirma URL~~**`console.ligbox.com.br`** ✅
2. Implementar **UX-A** gerente `/admin` primeiro (ligbox-console-shell §7)
3. Depois **UX-B** `/comercial` + **UX-C** `/ops`