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>
213 lines
11 KiB
Markdown
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`
|