2.5 KiB
2.5 KiB
PRD — Matriz de Acesso (MVP)
| Campo | Valor |
|---|---|
| Produto | Pizza Digital |
| Versão app auditada | v0.5.0 |
| Ambiente | https://pizza.itecnologys.com · VM125 · loja pizza-digital-piloto |
| Spec de origem | docs/SPEC-MATRIZ-ACESSO.md |
| Módulo | Capabilities admin por tenant |
| Rotas UI | /admin/acessos |
| APIs | /api/access/* |
| Data | 2026-11-09 |
| Estilo | PRD operacional detalhado (visão de desenvolvedor) |
| Audiência | Dev / QA / Product |
Como ler: cada seção descreve o processo real (o que o sistema faz hoje), com passos de usuário, chamadas de API, regras de negócio e estados. Status: ✅ construído · ⚠️ parcial · ⏳ especificado / não entregue · 🐛 gap observado.
1. Ideia central (dev)
Roles operacionais (gestor|pdv|kds|despacho) ≠ capabilities admin.
Capabilities vivem em UserCapability e são revalidadas no Core a cada ação sensível.
Caps
menu.view/manage · staff.view/manage · permissions.manage · owners.manage · finance.view
2. Processo — ver minhas permissões
- Login JWT (
sub,storeId,role) GET /api/access/me→ capabilities efetivas- Front esconde/mostra Admin conforme caps
3. Processo — editar matriz
- Usuário com
permissions.manage GET /api/access/matrixcarrega templates Perfil×Cap- Edita rascunho na UI
/admin/acessos PUT /api/access/matrixsalva definição do template (atômico)- Não propaga sozinho aos users
4. Processo — aplicar template a usuários
- Seleciona staff
GET /api/access/staff POST /api/access/apply-template{ userIds, templateKey }- Reescreve
UserCapability - Auditoria
AccessAuditLog(quando habilitada)
5. Dependências Core
menu.manage⇒menu.viewstaff.manage⇒staff.view- Normalização em
capabilities.ts
6. Aceite
- ✅ API matrix/me/staff/apply
- ✅ UI AccessMatrixPage
- ⚠️ Auditoria completa em todos writes
7. Camada de serviço (AccessService)
| Método | Fluxo |
|---|---|
ensureTemplates |
Garante templates default da loja |
getEffectiveCapabilities |
Resolve caps (+ fallback gestor) |
assertCapability |
Throws ForbiddenException |
getMatrix / saveMatrix |
CRUD definição |
applyTemplate |
Propaga para users |
listStaffForApply |
Alvos |
assertTenantKeepsOwner |
Não deixa loja sem owner |
setUserCapabilities |
Write direto |