# Chegoou - Modulos, CRUD e Permissoes

## Regras transversais

Todos os modulos administrativos e operacionais devem seguir o mesmo contrato funcional:

- `Novo`, `Editar`, `Excluir`, `Visualizar`, `Ativar/Inativar` quando aplicavel
- busca por nome, e-mail, telefone, documento, codigo ou status
- filtros avancados, ordenacao, paginacao e exportacao
- `soft delete` para cadastros sensiveis
- `created_at`, `updated_at`, `deleted_at`
- `created_by`, `updated_by`, `deleted_by` ou equivalente
- motivo obrigatorio para bloqueios, exclusoes logicas, cancelamentos e ajustes financeiros
- log de auditoria com usuario, IP, modulo, valor anterior, valor novo e horario

## Modulos ja refletidos na interface

### Admin

- `Clientes`: CRUD logico, bloqueio/desbloqueio, ajuste de carteira, historico de pedidos, suporte e auditoria
- `Entregadores`: CRUD logico, status operacional, documentos, bloqueio, suspensao, saques e auditoria
- `Restaurantes`: cadastro, aprovacao, reprovacao, suspensao, bloqueio, comissao, plano e auditoria
- `Pedidos`: listagem operacional, alteracao controlada de status, cancelamento com motivo, exportacao e auditoria

### Restaurante

- `Categorias`: CRUD logico, ordenacao, status, produtos vinculados e auditoria
- `Produtos`: CRUD logico, preco, promocao, estoque, destaque, duplicacao e auditoria
- `Pedidos`: aceite, preparo, cancelamento controlado, filtros por status e auditoria
- `Promocoes`: campanhas, cupons, vigencia, orcamento, desempenho e auditoria
- `Avaliacoes`: moderacao, resposta, ocultacao logica e trilha de auditoria

## Modulos previstos para backend

- `Usuarios`
- `Clientes`
- `Enderecos`
- `Entregadores`
- `Restaurantes`
- `Categorias de restaurante`
- `Categorias de produto`
- `Produtos`
- `Adicionais`
- `Variacoes`
- `Pedidos`
- `Entregas`
- `Localizacao e rotas`
- `Pagamentos`
- `Wallet`
- `Wallet transactions`
- `Ledger financeiro`
- `Saques`
- `Cupons`
- `Avaliacoes`
- `Suporte`
- `Notificacoes`
- `Anuncios patrocinados`
- `Planos e assinaturas`
- `Configuracoes`
- `Relatorios`
- `Auditoria`

## Matriz de permissao por perfil

### Cliente

- pode editar o proprio perfil
- pode gerenciar enderecos proprios
- pode criar pedidos
- pode visualizar apenas pedidos, pagamentos, notificacoes e suporte proprios
- nao pode editar registros financeiros diretamente

### Entregador

- pode editar dados proprios limitados
- pode alterar status online/offline
- pode aceitar ou recusar entregas
- pode visualizar ganhos, wallet e saques proprios
- nao pode editar entregas historicas nem localizacoes persistidas

### Restaurante

- pode gerenciar dados comerciais da propria loja
- pode gerenciar cardapio, categorias, produtos, adicionais e variacoes proprios
- pode operar pedidos da propria loja
- pode visualizar financeiro proprio
- nao pode alterar taxas globais, auditoria completa ou dados de outras lojas

### Admin

- pode operar cadastros e fluxos da plataforma
- pode aprovar, reprovar, suspender e bloquear cadastros
- pode ajustar status operacionais e financeiros conforme permissao
- pode responder suporte e consultar auditoria operacional

### Super Admin

- acesso total
- pode alterar configuracoes sistemicas
- pode criar administradores
- pode rever trilha completa de auditoria
- pode ajustar permissoes por modulo

## Regras de exclusao

- nunca excluir fisicamente: `pedidos`, `pagamentos`, `transacoes`, `ledger`, `saques`, `avaliacoes`, `suporte`, `entregas`
- usar `soft delete`: `usuarios`, `clientes`, `restaurantes`, `entregadores`, `produtos`, `categorias`, `cupons`, `anuncios`, `planos`
- registros gerados por telemetria, como `driver_locations`, devem ser somente leitura no painel

## Proximos passos de implementacao

1. ampliar o schema Prisma com `deletedAt`, `status`, `lastModifiedById` e tabelas de auditoria coerentes por modulo
2. implementar servicos reais de auditoria e autorizacao por perfil no backend
3. substituir dados mockados das telas por endpoints paginados
4. adicionar formularios de criacao/edicao com validacao e confirmacoes de exclusao logica
5. incluir exportacao CSV/PDF e filtros persistentes
