388 lines
21 KiB
Markdown
388 lines
21 KiB
Markdown
# Spec 027 — Matriz de Acesso por Função (Time Ligbox)
|
||
|
||
**Criado:** 2026-06-19
|
||
**Solicitado por:** Roger
|
||
**Status:** Draft → Fase 2 implementada (Desk RBAC)
|
||
**Prioridade:** P0 (governança operacional)
|
||
**Sistemas:** VM112 (Onboard/Mail) · VM122 (Ops Desk) · VM123 (Finance/Hosting)
|
||
**Depende de:** Spec **003** (RBAC base), **004** (cadastro), **015** (módulos), **023/024** (billing), **018** (serviços)
|
||
**Estende:** Spec 003 — **não substitui** login/MFA/webhooks; adiciona funções e ambientes
|
||
|
||
---
|
||
|
||
## Resumo
|
||
|
||
Esta spec define a **matriz de acesso ao nível de função** para todo o time Ligbox — ops, suporte, financeiro, marketing, SEO, desenvolvimento e funções complementares — com permissões explícitas nos **três ambientes operacionais**:
|
||
|
||
| VM | IP | Papel |
|
||
|----|-----|--------|
|
||
| **VM112** | `10.10.10.112` | Wizard onboarding, Carbonio mail tenants, API portal |
|
||
| **VM122** | `10.10.10.122` | Ligbox Ops Desk (control plane humano) |
|
||
| **VM123** | `10.10.10.123` | FOSSBilling, Odoo 16, OpenPanel (financeiro + sites) |
|
||
|
||
**Regra de ouro:** humanos **entram sempre pelo Desk (VM122)** ou consolas web dedicadas com conta `@ligbox.com.br`. SSH direto às VMs é excepção para `super_admin` e `devops` — demais funções usam APIs, deep-links e SSO futuro.
|
||
|
||
**Legenda global**
|
||
|
||
| Símbolo | Significado |
|
||
|---------|-------------|
|
||
| ✅ | Acesso total (CRUD / executar) |
|
||
| 🔒 | Só leitura (dados podem ser mascarados) |
|
||
| 🔗 | Deep-link / abrir consola externa (nova aba) — sem credencial partilhada |
|
||
| ⚙️ | Só via API Desk (sem SSH) |
|
||
| 🤖 | Conta de sistema / agente autónomo |
|
||
| ❌ | Sem acesso |
|
||
|
||
---
|
||
|
||
## 1. Catálogo de funções
|
||
|
||
### 1.1 Funções ops — já existentes (Spec 003)
|
||
|
||
| ID função | Label Desk | Descrição |
|
||
|-----------|------------|-----------|
|
||
| `super_admin` | Super Admin | Roger / dono — users, tenants, purge, config global |
|
||
| `ops_lead` | Chefe Ops | Gestão operacional, audit, tickets, domínios VM112 |
|
||
| `technician` | Suporte | Tickets atribuídos, assist/takeover wizard, migração |
|
||
| `noc` | NOC | Monitorização read-only, Wazuh, health — dados sensíveis mascarados |
|
||
|
||
### 1.2 Funções comercial e negócio (novas)
|
||
|
||
| ID função | Label Desk | Descrição |
|
||
|-----------|------------|-----------|
|
||
| `sales_admin` | **Sales Admin** (Gerente Comercial) | Gestão pipeline, preços, equipa comercial, pedidos FOSS, aprovações |
|
||
| `sales_support` | **Sales Support** (Analista Comercial) | Atendimento comercial, pedidos, clientes, CRM — sem config admin |
|
||
| `finance` | Financeiro | FOSSBilling, Odoo fiscal, validação billing, faturas, inadimplência |
|
||
| `marketing` | Marketing | Campanhas, landing, produtos FOSS, leads CRM |
|
||
| `seo` | SEO | DNS público, Search Console, performance web, sites OpenPanel |
|
||
| `developer` | Developer | Código wizard/Desk, GitHub, deploy, integrações API |
|
||
|
||
> **Substitui** o role genérico `sales` — usar sempre `sales_admin` ou `sales_support`.
|
||
|
||
### 1.3 Funções plataforma (recomendadas)
|
||
|
||
| ID função | Label Desk | Porquê |
|
||
|-----------|------------|--------|
|
||
| `devops` | DevOps / Infra | Proxmox, Traefik CT114, pfSense, OpenPanel admin — **não** confundir com `developer` |
|
||
| `security_analyst` | Segurança / SOC | Incidentes, Wazuh rules, resposta — além do `noc` (só leitura) |
|
||
| `content_editor` | Conteúdo / CMS | Sites clientes no OpenPanel — cruza marketing mas foco operacional |
|
||
| `agentic_operator` | Operador Agentes IA | Aprova runbooks e acções dos agentes A0–A7 antes de remediação |
|
||
|
||
### 1.4 Funções sistema (não humanas)
|
||
|
||
| ID função | Tipo | Descrição |
|
||
|-----------|------|-----------|
|
||
| `api_service` | M2M | Webhooks VM112→122, workers, cron interno |
|
||
| `agent_system` | IA | Super-utilizador dos 7 agentes (ver secção 6) |
|
||
|
||
### 1.5 Funções cliente (fora do time — referência)
|
||
|
||
| ID função | Onde | Nota |
|
||
|-----------|------|------|
|
||
| `client_domain_admin` | Wizard `/admin` VM112 | Gerente do domínio — **não** é função Desk |
|
||
| `client_readonly` | Futuro portal cliente | Spec futura |
|
||
|
||
---
|
||
|
||
## 2. Matriz — Ambiente VM112 (Onboard + Mail)
|
||
|
||
**Componentes:** `onboard.ligbox.com.br` · `ligbox.com.br` · Carbonio · `ligbox-wizard` API `:8090` · SSH · Carbonio Admin
|
||
|
||
| Função | Desk assist / wizard | API VM112 | Carbonio admin | SSH VM112 | Purge domínio |
|
||
|--------|---------------------|-----------|----------------|-----------|---------------|
|
||
| `super_admin` | ✅ takeover | ✅ | ✅ | ✅ | ✅ |
|
||
| `ops_lead` | ✅ takeover | ✅ | 🔗 | 🔗 | ✅ |
|
||
| `technician` | ✅ takeover* | ⚙️ assist | 🔗 | ❌ | ❌ |
|
||
| `noc` | 🔒 observar | 🔒 | ❌ | ❌ | ❌ |
|
||
| `finance` | 🔒 ver sessão | 🔒 billing fields | ❌ | ❌ | ❌ |
|
||
| `marketing` | 🔒 funil/leads | 🔒 | ❌ | ❌ | ❌ |
|
||
| `seo` | 🔒 domínio/DNS | 🔒 dns verify | ❌ | ❌ | ❌ |
|
||
| `developer` | ⚙️ dev/staging | ✅ API dev key | ❌ | 🔗 | ❌ |
|
||
| `sales_admin` | 🔒 leads + billing | 🔒 | ❌ | ❌ | ❌ |
|
||
| `sales_support` | 🔒 leads | 🔒 | ❌ | ❌ | ❌ |
|
||
| `devops` | 🔒 infra status | ✅ infra endpoints | 🔗 | ✅ | ⚙️ com root |
|
||
| `security_analyst` | 🔒 telemetria | 🔒 | ❌ | 🔗 | ❌ |
|
||
| `content_editor` | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||
| `agentic_operator` | 🔒 + aprovar | ⚙️ | ❌ | ❌ | ❌ |
|
||
| `api_service` | 🤖 webhooks | 🤖 | ❌ | ❌ | ❌ |
|
||
|
||
\* `technician`: takeover apenas tickets/sessões atribuídas (Spec 010).
|
||
|
||
**URLs VM112**
|
||
|
||
| Recurso | URL |
|
||
|---------|-----|
|
||
| Wizard | `https://onboard.ligbox.com.br` |
|
||
| API | `http://10.10.10.112:8090` (LAN) / Traefik interno |
|
||
| Webmail admin tenant | `https://mail.{dominio}/` |
|
||
| Painel domínio | `https://onboard.ligbox.com.br/admin` |
|
||
|
||
---
|
||
|
||
## 3. Matriz — Ambiente VM122 (Ops Desk)
|
||
|
||
**Componentes:** `desk.ligbox.com.br` · `api.ops.ligbox.com.br` · módulos Spec 015
|
||
|
||
### 3.1 Módulos Desk × função
|
||
|
||
| Módulo (ID) | super_admin | ops_lead | technician | noc | finance | sales_admin | sales_support | marketing | seo | developer | devops | security_analyst | content_editor | agentic_operator |
|
||
|-------------|:-----------:|:--------:|:----------:|:---:|:-------:|:-----------:|:-------------:|:---------:|:---:|:---------:|:------:|:----------------:|:--------------:|:----------------:|
|
||
| `core` (dashboard/tickets) | ✅ | ✅ | ✅ | 🔒 | 🔒 | ✅ | ✅ | 🔒 | 🔒 | 🔒 | 🔒 | 🔒 | 🔒 | 🔒 |
|
||
| `overview` | ✅ | ✅ | 🔒 | 🔒 | 🔒 | ✅ | 🔒 | 🔒 | 🔒 | 🔒 | 🔒 | 🔒 | ❌ | 🔒 |
|
||
| `overview-home` (Serviços) | ✅ | ✅ | ✅ | 🔒 | 🔒 | ✅ | ✅ | 🔒 | 🔒 | 🔒 | ✅ | 🔒 | 🔒 | 🔒 |
|
||
| `infra` / `infra2-soc` | ✅ | ✅ | 🔒 | 🔒 | ❌ | ❌ | ❌ | ❌ | 🔒 | 🔒 | ✅ | ✅ | ❌ | 🔒 |
|
||
| `funnel-timing` | ✅ | ✅ | ✅ | 🔒 | 🔒 | ✅ | ✅ | ✅ | ✅ | 🔒 | ❌ | ❌ | ❌ | 🔒 |
|
||
| `wazuh-soc` | ✅ | ✅ | 🔒 | 🔒 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | 🔒 | ✅ | ❌ | 🔒 |
|
||
| `leads` (abandono CRM) | ✅ | ✅ | ✅ | ❌ | 🔒 | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||
| `events` (webhooks) | ✅ | ✅ | 🔒 | 🔒 wazuh | 🔒 billing | 🔒 | 🔒 | 🔒 | 🔒 | ⚙️ | ⚙️ | 🔒 | ❌ | ⚙️ |
|
||
| `tenants` | ✅ | ✅ | ✅ | 🔒 | 🔒 | ✅ | 🔒 | 🔒 | 🔒 | 🔒 | 🔒 | 🔒 | ❌ | 🔒 |
|
||
| `messages` (cadastro) | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||
| `admin-users` | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||
| `billing-recurrence` (023) | ✅ | ✅ | 🔒 | ❌ | ✅ | ✅ | 🔒 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||
| `migration` (013) | ✅ | ✅ | ✅ | 🔒 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | 🔒 | ❌ | ❌ | ❌ |
|
||
| `assist` (010) | ✅ | ✅ | ✅ | 🔒 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||
| `modules` (toggle) | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||
|
||
### 3.2 Acções API críticas × função (extensão Spec 003)
|
||
|
||
| Acção | super_admin | ops_lead | technician | noc | finance | sales_admin | sales_support | marketing | seo | developer | devops | security_analyst | agentic_operator |
|
||
|-------|:-----------:|:--------:|:----------:|:---:|:-------:|:-----------:|:-------------:|:---------:|:---:|:---------:|:------:|:----------------:|:----------------:|
|
||
| Fechar ticket | ✅ | ✅ | ✅* | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||
| Assist takeover wizard | ✅ | ✅ | ✅* | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||
| Disparar audit manual | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||
| Purge domínio VM112 | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ⚙️ | ❌ | ❌ |
|
||
| Validar billing (`billing_state`) | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||
| Criar pedido FOSS (VM123) | ✅ | ✅ | ❌ | ❌ | 🔒 | ✅ | ✅ | ❌ | ❌ | ⚙️ | ❌ | ❌ | ❌ |
|
||
| Ver CNPJ / morada completa | ✅ | ✅ | ✅ | ❌ masc. | ✅ | ✅ | 🔒 | 🔒 | ❌ | ❌ | ❌ | 🔒 | ❌ |
|
||
| Gestão utilizadores Desk | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||
| PATCH módulos Desk | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||
| Deploy API/frontend | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
|
||
| Aprovar runbook agente | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ |
|
||
|
||
---
|
||
|
||
## 4. Matriz — Ambiente VM123 (Finance + Hosting)
|
||
|
||
**Componentes:** FOSSBilling · Odoo 16 · OpenPanel · SSH `:2523`
|
||
|
||
| Função | FOSSBilling Admin | FOSSBilling Cliente | Odoo 16 | OpenPanel | OpenAdmin | SSH VM123 |
|
||
|--------|:-----------------:|:-------------------:|:-------:|:---------:|:---------:|:---------:|
|
||
| `super_admin` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
|
||
| `ops_lead` | 🔗 | 🔒 | 🔗 | 🔗 | 🔗 | 🔗 |
|
||
| `technician` | ❌ | ❌ | ❌ | 🔗 site cliente | ❌ | ❌ |
|
||
| `noc` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||
| `finance` | ✅ | ✅ | ✅ | 🔒 | 🔒 | 🔗 |
|
||
| `sales_admin` | ✅ pedidos+clientes+staff RO | ✅ | ✅ Sales Manager | 🔗 | 🔗 Admin | ❌ |
|
||
| `sales_support` | ✅ pedidos+clientes | ✅ | ✅ Salesman | 🔗 autologin | ❌ | ❌ |
|
||
| `marketing` | 🔒 produtos | ✅ campanhas | ❌ | ✅ sites | 🔗 | ❌ |
|
||
| `seo` | ❌ | ❌ | ❌ | ✅ SEO/hosting | 🔗 | ❌ |
|
||
| `developer` | ⚙️ API | ❌ | ⚙️ API | ⚙️ bridge | ❌ | 🔗 |
|
||
| `devops` | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ |
|
||
| `security_analyst` | 🔒 logs | ❌ | ❌ | 🔒 | 🔒 | 🔗 |
|
||
| `content_editor` | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ |
|
||
| `agentic_operator` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||
| `api_service` | 🤖 webhook | ❌ | 🤖 | 🤖 provision | ❌ | ❌ |
|
||
|
||
### 4.1 Integração APIs VM123 — perfis de produto
|
||
|
||
**Documento completo:** [`contracts/vm123-product-roles.md`](contracts/vm123-product-roles.md)
|
||
|
||
| Produto | API | Auth | Mapeamento função Desk |
|
||
|---------|-----|------|------------------------|
|
||
| **FOSSBilling** | `POST /api/admin/{module}/{action}` | Basic `admin:API_KEY` | Staff groups: `ligbox-sales-admin`, `ligbox-sales-support`, `ligbox-finance-admin` |
|
||
| **Odoo 16** | XML-RPC `/odoo/xmlrpc/2/object` | login + API key | `group_sale_manager` → `sales_admin`; `group_sale_salesman` → `sales_support` |
|
||
| **OpenPanel** | Bridge `:18087` (Community) ou `:2087/api` (Enterprise) | Bearer JWT / bridge token | `sales_support` = autologin cliente; `devops` = OpenAdmin |
|
||
|
||
**Diferença Sales Admin vs Sales Support**
|
||
|
||
| Capacidade | sales_admin (Gerente) | sales_support (Analista) |
|
||
|------------|----------------------|--------------------------|
|
||
| Desk — validar billing | ✅ | ❌ |
|
||
| Desk — leads / funil | ✅ | ✅ |
|
||
| FOSS — criar/editar clientes | ✅ | ✅ |
|
||
| FOSS — criar pedidos / hosting | ✅ | ✅ |
|
||
| FOSS — faturas / preços / produtos | ✅ | 🔒 |
|
||
| FOSS — staff / settings | ❌ | ❌ |
|
||
| Odoo — CRM manager | ✅ | ❌ |
|
||
| Odoo — CRM user | ✅ | ✅ |
|
||
| OpenPanel — OpenAdmin | 🔗 | ❌ (só autologin) |
|
||
| Fechar tickets comerciais | ✅ | ✅ |
|
||
|
||
**Provisionamento automático (Fase 3):** ao aprovar cadastro Desk com função `sales_*`, API VM122 cria staff FOSS + user Odoo via `api_service` — ver fluxo no contrato.
|
||
|
||
**URLs VM123**
|
||
|
||
| Serviço | URL pública |
|
||
|---------|-------------|
|
||
| FOSSBilling Admin | `https://financeiro.ligbox.com.br/admin` |
|
||
| FOSSBilling Cliente | `https://financeiro.ligbox.com.br/login` |
|
||
| Odoo 16 | `https://financeiro.ligbox.com.br/odoo/web/login?db=ligbox` |
|
||
| OpenPanel | `https://openpanel.ligbox.com.br` |
|
||
| OpenAdmin | `https://openpanel.ligbox.com.br:2087` |
|
||
|
||
**Integração Desk → VM123 (fase 2–3):** ficha «Conta do cliente» (Spec 023) abre deep-link FOSS/Odoo; `finance`, `sales_admin` e `sales_support` com botões API no drawer.
|
||
|
||
---
|
||
|
||
## 5. Matriz — Consolas externas (deep-link a partir do Desk)
|
||
|
||
| Consola | super_admin | ops_lead | technician | noc | finance | sales_admin | sales_support | marketing | seo | developer | devops | security_analyst |
|
||
|---------|:-----------:|:--------:|:----------:|:---:|:-------:|:-----------:|:-------------:|:---------:|:---:|:---------:|:------:|:----------------:|
|
||
| Cloudflare DNS | ✅ | ✅ | 🔗 | ❌ | ❌ | 🔒 | 🔒 | 🔒 | ✅ | ❌ | ✅ | ❌ |
|
||
| Traefik CT114 | ✅ | 🔗 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | 🔗 | ✅ | ❌ |
|
||
| Proxmox host | ✅ | 🔗 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ |
|
||
| pfSense API | ✅ | 🔗 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | 🔗 |
|
||
| Wazuh VM104 | ✅ | ✅ | 🔒 | 🔒 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | 🔒 | ✅ |
|
||
| GitHub `itecnologys/*` | ✅ | 🔒 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ |
|
||
| Google Search Console | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | 🔗 | ✅ | ❌ | ❌ | ❌ |
|
||
| FOSSBilling Admin | ✅ | 🔗 | ❌ | ❌ | ✅ | ✅ | 🔒 | 🔒 | ❌ | ❌ | ❌ | ❌ |
|
||
| Odoo ligbox | ✅ | 🔗 | ❌ | ❌ | ✅ | ✅ | 🔒 | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||
|
||
---
|
||
|
||
## 6. Agentes IA (Agentics) — responsabilidades e governança
|
||
|
||
Os **7 agentes** (VISÃO_PLATAFORMA A0–A7) **não são utilizadores humanos**. Operam com role `agent_system` e token dedicado.
|
||
|
||
| Agente | ID | Responsabilidade | Dados que lê | Acções que executa | Aprovação humana |
|
||
|--------|-----|------------------|--------------|-------------------|------------------|
|
||
| Orchestrator | A0 | Roteamento e síntese multi-agente | Todos os feeds | Delegar tarefas | `agentic_operator` / `ops_lead` |
|
||
| Node Health | A1 | CPU, RAM, serviços Carbonio | VM112 metrics | Alertas, tickets | Auto para info; `ops_lead` para restart |
|
||
| Infra Mail | A2 | DNS, LE, Traefik, nginx | DNS, certs, SNI | Sugerir/fix DNS | `devops` ou `ops_lead` antes de aplicar |
|
||
| Deliverability | A3 | SPF/DKIM/DMARC | DNS mail | Relatórios | `seo` / `technician` revisão |
|
||
| Security Mail | A4 | amavis, spam, clamav | Filas, logs mail | Quarentena sugerida | `security_analyst` |
|
||
| Wazuh SOC | A5 | Correlação SIEM | VM104 Wazuh | Alertas Desk | `security_analyst` / `noc` |
|
||
| Support Copilot | A6 | Assistência tickets | Tickets, timeline | Rascunho resposta | `technician` envia |
|
||
| Remediation | A7 | Runbooks | Playbooks aprovados | Executar após OK | **`agentic_operator` obrigatório** |
|
||
|
||
### Quem gere agentes no Desk
|
||
|
||
| Função | Ver sugestões agente | Aprovar runbook A7 | Configurar prompts/modelos |
|
||
|--------|---------------------|-------------------|---------------------------|
|
||
| `super_admin` | ✅ | ✅ | ✅ |
|
||
| `ops_lead` | ✅ | ✅ | 🔒 |
|
||
| `agentic_operator` | ✅ | ✅ | ❌ |
|
||
| `security_analyst` | ✅ A4/A5 | ✅ scope segurança | ❌ |
|
||
| `developer` | ⚙️ | ❌ | ✅ |
|
||
| Demais | ❌ ou 🔒 resumo | ❌ | ❌ |
|
||
|
||
---
|
||
|
||
## 7. Cadastro e atribuição de função (fluxo)
|
||
|
||
Estende Spec **004**:
|
||
|
||
1. Candidato regista-se em `desk.ligbox.com.br/register.html` com `@ligbox.com.br`
|
||
2. `super_admin` aprova em **Mensagens** e escolhe **função** (lista secção 1 — incl. `sales_admin` / `sales_support`)
|
||
3. Ativação 2-de-3 (e-mail, telefone, TOTP)
|
||
4. Desk aplica módulos e permissões conforme matriz desta spec
|
||
5. Contas FOSS/Odoo/OpenPanel (VM123) criadas via **provisionamento Fase 3** (`api_service`) ou manualmente — **nunca** partilhar password root VM
|
||
|
||
### Mapeamento função → módulos default (activação)
|
||
|
||
| Função | Módulos ON por defeito |
|
||
|--------|------------------------|
|
||
| `sales_admin` | `core`, `leads`, `funnel-timing`, `overview-home`, `billing-recurrence`, `tenants` |
|
||
| `sales_support` | `core`, `leads`, `funnel-timing`, `overview-home`, `tenants` |
|
||
| `finance` | `core`, `overview-home`, `billing-recurrence`, `events` (billing) |
|
||
| `marketing` | `core`, `leads`, `funnel-timing`, `overview-home` |
|
||
| `seo` | `core`, `funnel-timing`, `overview-home`, `leads` |
|
||
| `developer` | `core`, `events`, `infra` (read), `overview` |
|
||
| `devops` | `core`, `infra`, `infra2-soc`, `overview-home`, `events` |
|
||
| `security_analyst` | `core`, `infra2-soc`, `wazuh-soc`, `events` |
|
||
| `content_editor` | `core` + acesso OpenPanel (fora Desk) |
|
||
| `agentic_operator` | `core`, `overview`, `events`, `infra2-soc` |
|
||
|
||
### Mapeamento função → VM123 (provisionamento)
|
||
|
||
| Função | FOSS group | Odoo | OpenPanel |
|
||
|--------|------------|------|-----------|
|
||
| `sales_admin` | `ligbox-sales-admin` | Sales Manager | OpenAdmin Admin |
|
||
| `sales_support` | `ligbox-sales-support` | Salesman | autologin apenas |
|
||
| `finance` | `ligbox-finance-admin` | Account Manager | read-only |
|
||
|
||
Ver [`contracts/vm123-product-roles.md`](contracts/vm123-product-roles.md).
|
||
|
||
---
|
||
|
||
## 8. Implementação técnica (fases)
|
||
|
||
### Fase 1 — Documentação + enum (esta spec) ✅
|
||
|
||
- Publicar matriz; alinhar Roger
|
||
- Actualizar `permissions.py` com constantes `ALL_FUNCTIONS`
|
||
|
||
### Fase 2 — RBAC Desk (VM122) ✅
|
||
|
||
- Expandir `ROLES` em `api/app/permissions.py`
|
||
- `ROLE_MODULES` map em `registry.py` (Spec 015)
|
||
- UI: labels pt-BR no cadastro (Spec 004)
|
||
- Testes: `verify-rbac-matrix.sh` por função
|
||
|
||
### Fase 3 — Deep-links + APIs VM123 ✅ (MVP)
|
||
|
||
- Drawer «Conta do cliente» → FOSS/Odoo via `/api/v1/vm123/links/client`
|
||
- Endpoints `/api/v1/vm123/*` (contrato vm123-product-roles.md)
|
||
- Provisionamento staff FOSS + user Odoo ao activar cadastro (`provision_desk_user`)
|
||
- **Pré-requisito Odoo:** instalar apps `sale` + `account` na VM123 para grupos standard existirem
|
||
|
||
### Fase 4 — Agentes
|
||
|
||
- Service account `agent_system` + fila aprovação `agentic_operator`
|
||
- Auditoria de cada acção A7
|
||
|
||
---
|
||
|
||
## 9. Requisitos funcionais
|
||
|
||
- **FR-027-001**: Sistema MUST suportar no mínimo **13 funções humanas** (secção 1) incluindo `sales_admin` e `sales_support`.
|
||
- **FR-027-002**: Cada função MUST ter módulos Desk activos por defeito conforme secção 7.
|
||
- **FR-027-003**: Nenhuma função excepto `super_admin` e `devops` MUST ter SSH root às VMs por defeito.
|
||
- **FR-027-004**: Função `noc` MUST continuar a mascarar CNPJ, morada e e-mails billing (Spec 003).
|
||
- **FR-027-005**: Função `finance` MUST poder transicionar `billing_state` (Spec 023).
|
||
- **FR-027-006**: Agentes A0–A7 MUST NOT autenticar como humanos; usam `agent_system`.
|
||
- **FR-027-007**: Acções A7 (remediação) MUST exigir aprovação `agentic_operator` ou `ops_lead`.
|
||
- **FR-027-008**: Cadastro MUST restringir e-mail a `@ligbox.com.br` para funções internas.
|
||
- **FR-027-009**: `sales_admin` MUST poder validar `billing_state` e criar pedidos FOSS; `sales_support` MUST NOT validar billing nem aceder OpenAdmin.
|
||
- **FR-027-010**: Provisionamento VM123 MUST usar APIs em `contracts/vm123-product-roles.md` — sem credenciais root partilhadas.
|
||
|
||
---
|
||
|
||
## 10. Fora de âmbito (esta spec)
|
||
|
||
- SSO Google/Azure
|
||
- Permissões por tenant isolado (multi-empresa Ligbox)
|
||
- Cliente final (`client_domain_admin`) — permanece no wizard VM112
|
||
- Criação automática de contas Linux nas VMs (usar contas app)
|
||
|
||
---
|
||
|
||
## 11. Documentos relacionados
|
||
|
||
| Spec | Relação |
|
||
|------|---------|
|
||
| **003** | RBAC base (4 roles) — **pai** |
|
||
| **004** | Cadastro e atribuição de perfil |
|
||
| **015** | Registry módulos Desk |
|
||
| **010** | Assist / takeover |
|
||
| **013** | Migração e-mail |
|
||
| **018** | Serviços / clientes |
|
||
| **023** | Billing Desk |
|
||
| **024** | VM123 finance stack + APIs produto |
|
||
| **021** | Telemetria / segurança wizard |
|
||
|
||
---
|
||
|
||
## 12. Critérios de aceite
|
||
|
||
- [ ] Roger valida matriz secções 2–6 e Sales Admin vs Support
|
||
- [ ] `permissions.py` inclui 13 funções + testes 403
|
||
- [ ] Cadastro Desk lista `sales_admin` e `sales_support` no approve
|
||
- [ ] Grupos FOSS `ligbox-sales-admin` e `ligbox-sales-support` criados na VM123
|
||
- [ ] `sales_admin` abre FOSS + Odoo a partir do Desk
|
||
- [ ] `sales_support` cria pedido FOSS sem OpenAdmin
|
||
- [ ] Contrato `vm123-product-roles.md` referenciado no deploy VM122
|
||
|
||
---
|
||
|
||
*Roger — validar secção 4.1 (APIs VM123) e limites Sales Admin vs Support antes da Fase 2.*
|