diff --git a/memory/registro-otimizacoes-sessao-2026-08-26-aprimorar-ia.md b/memory/registro-otimizacoes-sessao-2026-08-26-aprimorar-ia.md new file mode 100644 index 0000000..c5d37f6 --- /dev/null +++ b/memory/registro-otimizacoes-sessao-2026-08-26-aprimorar-ia.md @@ -0,0 +1,33 @@ +# Registro de Otimizações da Sessão — Aprimoramento da IA + +**Data:** 26/08/2026 +**Sessão / Contexto:** Implementação do sistema de Alertas de Não Conformidade por Plano de Monitoramento, observância do enum `usuarioCategoria` / `usuario_categoria`, exclusão de usuários de sistema nos alertas, exibição de pontos e destinatários na tabela de planos, e otimizações de consultas na camada `info`. + +--- + +## 📌 Principais Decisões e Padrões Consolidados + +### 1. Destinatários de Alertas de Não Conformidade (`usuarios_notificacao`) +- **Padrão de Entidade**: Os destinatários configurados em `agendamentos_planos` seguem a estrutura padronizada com `codigo_origem`, `codigo_usuario` (UUID do sistema), `canais: { email: boolean, push: boolean }`, snapshot em `info` e campos padrão de auditoria. +- **Persistência JSONB**: Armazenados na coluna `usuarios_notificacao` de `agendamentos_planos`, indexados e consultáveis sem necessidade de tabela intermediária. + +### 2. Tratamento de Categorias de Usuários e Exclusão de Contas de Sistema +- **Enum Oficial**: A categoria de usuário do e-Licencie Drive segue o enum oficial `usuarioCategoria` (`zUsuarioCategoria`: `externo`, `suporte`, `usuario`). +- **Exclusão de Contas de Sistema**: Ao listar destinatários para planos de monitoramento, contas de sistema (`usuario_categoria === 'sistema'` ou `categoria === 'sistema'`) são estritamente filtradas tanto no backend (`obterUsuarios` / `_usuarios_listar.ts`) quanto no frontend (`useSeletorUsuariosNotificacao.ts`), impedindo que contas de serviço/robô recebam alertas de campo. + +### 3. Tabela de Planos de Monitoramento (`PaginaConsultaPlanos.tabela.ts`) +- **Coluna `Pontos`**: Exibe diretamente os identificadores amigáveis e nomes dos pontos de monitoramento associados ao plano (ex: `P-01, P-02`), substituindo a contagem genérica anterior. +- **Coluna `Destinatários`**: Exibe a lista dos nomes dos usuários configurados para receber alertas no plano com suporte a truncamento. + +### 4. Otimização de Performance e Consultas via Camada `info` +- **Busca Multifatorial Indexada**: O gerador de `info.texto_busca` em `_agendamentos_planos.ts` consolida o nome do plano, descrição, identificadores/nomes de pontos e nomes/e-mails de destinatários. Uma única busca `LIKE` sobre `info.texto_busca` resolve filtros em milissegundos sem JOINs. +- **Eliminação de Consultas N+1**: O snapshot `info.pontos` armazena `{ codigo, id, nome }` de cada ponto no plano, permitindo renderização imediata de tabelas com uma única requisição. + +--- + +## 🔍 Checklist de Verificação de Artefatos + +- [x] Regras de negócio documentadas em `DOCUMENTAÇÃO/regras-negocio/notificacao-nao-conformidade-plano.md` +- [x] Schemas Zod atualizados em `sigma-comuns` (`zUsuarioNotificacao`, `zInfoUsuarioNotificacao`, `zUsuarios`) +- [x] Regra de limite de linhas (máximo 250 linhas) respeitada em todos os arquivos Vue/TS +- [x] `tsc --noEmit` & `biome check` com 0 erros em todos os 4 pacotes (`comuns`, `migracao`, `back`, `front`) diff --git a/rules/drive-entidades-internas.md b/rules/drive-entidades-internas.md index ee0cb13..ea65f71 100644 --- a/rules/drive-entidades-internas.md +++ b/rules/drive-entidades-internas.md @@ -1,11 +1,11 @@ -# Regra: Consultar Entidades do e-Licencie via Drive Interno +# Regra: Consultar Entidades do e-licencie via Drive Interno ## Contexto Dentro de `sigma-back/src/INFO/` e `sigma-back/src/_FILAS/`, quando um gerador de info ou um worker de fila precisa dos dados de **empreendedor**, **empreendimento** ou **usuário**, esses dados **não existem localmente no banco do SIGMA** — eles vivem no -e-Licencie. A consulta deve ser feita via `eLicencieDrive` com token interno, +e-licencie. A consulta deve ser feita via `eLicencieDrive` com token interno, nunca retornando campos em branco (`nome: ""`, `documento: ""`). ## Regra