ligbox-ops-platform/specs/027-desk-rbac-function-matrix/ui-access-matrix.md
Ligbox Spec Hub 6c4b063f76 Implement Spec 027 access matrix preview and agent bindings enforcement.
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.
2026-06-20 22:02:03 +00:00

6.7 KiB
Raw Blame History

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/matrix read-only
  • GET /api/v1/config/features
  • access-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 como super_admin
  • Página é 100% read-only (sem POST/PATCH)
  • Dados batem com Spec 027 §36 e platform_role_catalog.py
  • Equipe Ligbox / Mensagens / cadastro inalterados

Roger — revisar em http://10.10.10.122:8192 após deploy staging.