Adds RBAC matrix API/UI behind feature flags, agent×role toggles with audit, and extends Agentic Ops with streaming chat, Kimi LLM support, and UI updates.
6.7 KiB
6.7 KiB
Spec 027-UI — Matriz de Acessos (Página Desk)
Criado: 2026-06-20
Solicitado por: Roger
Status: 🔄 Preview (read-only, feature flag)
Sistema: Desk VM122 · view access-matrix
Relacionado: Spec 027 (matriz) · Spec 004 (cadastro) · platform_role_catalog.py
Objetivo
Página visual estilo Odoo Groups + Permission Matrix para consultar a matriz de funções Ligbox (VM112 / VM122 / VM123 / externas / agentes), sem alterar produção até Roger aprovar as telas.
Princípios de entrega
| Regra | Implementação |
|---|---|
| Zero impacto produção | ACCESS_MATRIX_UI=0 (default) — menu oculto |
| Preview staging | ACCESS_MATRIX_UI=1 no compose staging (:8192) |
| Só leitura v1 | Sem PATCH de roles/módulos na matriz |
| Fonte de verdade | platform_role_catalog.py + tabelas Spec 027 §3 |
| Quem vê | super_admin apenas (preview) |
| Não substituir | Página Equipe Ligbox (admin-users) mantida |
Feature flag
# .env / docker-compose staging
ACCESS_MATRIX_UI=1 # staging preview
ACCESS_MATRIX_UI=0 # produção (default)
API:
GET /api/v1/config/features
→ { "access_matrix_ui": true, "preview_mode": true }
GET /api/v1/rbac/matrix
→ catálogo completo (roles, módulos Desk, bindings, agentes, legenda)
Referências UI (modelos a seguir)
GitHub — RBAC admin / permission matrix
| Repo | O que reutilizar | URL |
|---|---|---|
| rbac-admin-platform | Dashboard admin, tabela role×ação, audit, dark mode | https://github.com/bankotij/rbac-admin-platform |
| RBAC-UI (jagadish-pattanaik) | PermissionMatrix.js, sidebar roles, grouping |
https://github.com/jagadish-pattanaik/RBAC-UI |
| rbac-ui (balamuruganpm) | User/role tables, collapsible sidebar | https://github.com/balamuruganpm/rbac-ui |
shadcn/ui blocks (padrão visual da grelha)
| Block | O que reutilizar | URL |
|---|---|---|
| Tables Permission Matrix | Linhas agrupadas por módulo, colunas = roles, badges de nível | https://www.shadcn.io/blocks/tables-permission-matrix |
| Dashboard Permission Matrix | Grelha recurso×role, cores none/read/write/admin | https://www.shadcn.io/blocks/dashboard-permission-matrix |
Odoo (modelo conceptual — não fork)
| Conceito Odoo | Equivalente Ligbox |
|---|---|
res.users + groups_id |
desk_users.role + provisionamento VM123 |
res.groups |
PLATFORM_ROLE_CATALOG[*].bindings |
ir.model.access |
permissions.py + route guards |
ir.rule (record rules) |
mascaramento NOC, ticket assignee |
| Settings → Users → Groups UI | Página Matriz de Acessos |
Docs: https://www.odoo.com/documentation/16.0/developer/reference/backend/security.html
Desk Ligbox (consistência visual)
- Paleta existente:
styles.css(--accent,--ok,--warn,--sidebar-bg) - Padrão módulo isolado:
agentic-ops.js+ CSS scoped (#access-matrix-content) - Tabs admin: Equipe Ligbox | Matriz (quando flag ON)
Wireframe (Preview v1)
┌─ PREVIEW — read-only · Spec 027 ─────────────────────────────────────┐
│ [ Equipe Ligbox ] [ Matriz de Acessos ● ] │
├──────────────┬───────────────────────────────────────────────────────┤
│ Funções │ [ VM122 Desk ] [ VM112 ] [ VM123 ] [ Externas ] [A0-A7]│
│ ───────── │ │
│ ▶ Ops │ Grelha módulo × função (✅ 🔒 ❌ ⚙️ 🔗) │
│ super_admin│ ou painel bindings por serviço (Odoo groups) │
│ ops_lead │ │
│ ▶ Comercial │ Ao seleccionar função → detalhe bindings: │
│ sales_admin│ vm123_odoo: sales_team.group_sale_manager │
│ … │ vm123_foss: ligbox-sales-admin │
└──────────────┴───────────────────────────────────────────────────────┘
Fases
Fase UI-A — Preview (esta entrega) ✅
- Spec UI (este documento)
GET /api/v1/rbac/matrixread-onlyGET /api/v1/config/featuresaccess-matrix.js+ CSS scoped- Flag staging ON, produção OFF
- Tab Software em escopo (VM112 / VM123 / consolas externas — Spec 027 §2, §4, §5)
- Cartão por função (resumo SW ≠ none)
- Roger aprova layout
Fase UI-A2 — Melhorias sugeridas (backlog)
| Melhoria | Descrição | Prioridade |
|---|---|---|
| Visão unificada | Uma grelha Desk + SW (coluna «camada»: Desk / VM112 / VM123 / Externa) | Alta |
| Deep-links activos | Clicar 🔗 abre URL do serviço (Traefik, OpenPanel, etc.) se binding existir | Alta |
| Diff vs. realidade | Comparar matriz Spec 027 com desk_users.role + último login por SW |
Média |
| Export CSV/PDF | Matriz completa para auditoria / onboarding | Média |
| Filtro por produto | Chips FOSSBilling, Odoo, OpenPanel, Carbonio… | Baixa |
| Contas sistema | Linha 🤖 api_service / agentes com credenciais mascaradas |
Baixa |
| Histórico | Quem alterou role e quando (audit log Spec 004) | Futuro |
Fase UI-B — Pós-aprovação
- Tab integrada em Administradores (sem flag)
- Export CSV/PDF da matriz
- Link «Ver matriz» no drawer Equipe
Fase UI-C — Edição Agentics ✅ (staging)
- Tabela SQLite
agent_role_bindings+agent_governance_caps PATCH /api/v1/rbac/agent-bindings(UI / focus / approve)PATCH /api/v1/rbac/agent-governance(caps globais)GET /api/v1/rbac/agent-bindings/audit- Enforcement API Agentics (
can_use_agentics_ui,can_chat_agent,can_trigger_runs) - Toggles UI / OP / AP na matriz (flag
ACCESS_MATRIX_EDIT=1) - Bindings A7→agentic_operator locked (Spec FR-027-007)
- Roger valida em staging → activar produção
Critérios de aceite (Preview)
- Produção (
8091): menu Matriz invisível com flag default - Staging (
8192): Roger vê Matriz comosuper_admin - Página é 100% read-only (sem POST/PATCH)
- Dados batem com Spec 027 §3–6 e
platform_role_catalog.py - Equipe Ligbox / Mensagens / cadastro inalterados
Roger — revisar em http://10.10.10.122:8192 após deploy staging.