2026-09-16 - Julio - Sprint 0 REQ-003 a 007

Resumo em linguagem simples

O sistema agora sabe quem é quem: o administrador pode convidar pessoas, definir se podem ver dados financeiros sigilosos, e remover quem não deve ter acesso. Toda mudança de permissão fica gravada no histórico de auditoria — nenhuma alteração some. Quando a IA sugerir algo (uma mensagem, um preço, uma análise), a sugestão aparece numa inbox para revisão; o usuário decide aceitar, ajustar com edição ou rejeitar com justificativa — a IA nunca muda o estado por conta própria. Um guia visual (Design System) foi criado para manter a aparência do sistema consistente daqui para frente.

O que foi feito

  • REQ-003 — Página /configuracoes/usuarios: convite por e-mail, alteração de papel, toggle de acesso financeiro, desativação de membro.
  • REQ-004 — Permissões financeiras em duas camadas: função pura checkAcessoFinanceiro() + requireAcessoFinanceiro() server-only com verificação no banco.
  • REQ-005 — Tabela evidencia com 8 tipos canônicos de origem (fato, declaracao_cliente, hipotese_ia, lacuna, etc.) e rastreabilidade completa (fonte, data, autor, modelo IA).
  • REQ-006 — Tabela audit_log imutável (sem deletedAt), helper registrarEvento() plugado em todas as ações materiais, página /configuracoes/auditoria visível só para admins.
  • REQ-007 — Tabela sugestao_ia, ciclo completo aceitar / ajustar / rejeitar, inbox /sugestoes com badge de pendentes, histórico de revisões, guarda modeloIa e promptVersao em todo registro.
  • Design System — Documento docs/06 Construção/Design System.md com cores, tipografia, ícones e padrões de componente baseados no protótipo anterior (LCverum).
  • Visual — Sidebar navy escuro (MD3), topbar branca, Lato + Material Symbols. Conflito middleware/proxy do Next.js 16 corrigido.
  • Migrações — 4 migrações aplicadas no Neon (0001 a 0004).
  • Testes — 51 testes passando em 6 arquivos (REQ-002 a 007).

Arquivos alterados

  • src/app/(app)/configuracoes/usuarios/ — page, actions, dialogs
  • src/app/(app)/configuracoes/auditoria/page.tsx
  • src/app/(app)/sugestoes/ — page, actions, review-card
  • src/lib/permissions/index.ts + financeiro.ts
  • src/lib/audit/index.ts
  • src/lib/sugestao-ia/index.ts
  • src/lib/db/schema/evidencia.ts, audit-log.ts, sugestao-ia.ts
  • src/components/shell/sidebar.tsx, topbar.tsx, sign-out-button.tsx
  • src/app/globals.css, src/app/layout.tsx, src/app/(app)/layout.tsx, src/app/(auth)/layout.tsx
  • docs/06 Construção/Design System.md
  • drizzle/migrations/ (0001–0004)
  • tests/req-004.test.ts a tests/req-007.test.ts

Critérios de aceite cobertos

  • REQ-003 — usuário comercial não acessa gestão de usuários
  • REQ-003 — alteração de papel fica auditada
  • REQ-004 — requireAcessoFinanceiro() lança erro para usuário sem permissão
  • REQ-005 — 8 tipos de origem canônicos definidos e testados
  • REQ-006 — audit_log não tem deletedAt (imutável por design)
  • REQ-007 — sugestão criada sempre com status pendente; IA nunca auto-aprova

Pendências e dúvidas

  • ANTHROPIC_API_KEY ainda vazia no .env.local — necessária para REQ-008 em diante (chamadas reais à IA).
  • REQ-008 (Explicar recomendações relevantes da IA) é o próximo da fila.