diff --git a/docs/superpowers/notes/2026-08-25-relatorio-correcao-final.md b/docs/superpowers/notes/2026-08-25-relatorio-correcao-final.md new file mode 100644 index 0000000..de92d5c --- /dev/null +++ b/docs/superpowers/notes/2026-08-25-relatorio-correcao-final.md @@ -0,0 +1,79 @@ +# Coordenador GLPI V2 — Correção Final (25/08/2026) + +## CORREÇÕES + +1. **Bug real, causa raiz do "→ Validar e executar"**: `logic/message.js` tinha um rótulo fixo hardcoded pra `ACTIONABLE_NOW` que sempre vencia o `next_action` real da IA. Removido — agora mostra a ação real e específica. +2. **Blacklist de frases genéricas expandida** (`validar e executar`, `validar chamado`, `prosseguir atendimento`, `executar chamado`, `tratar chamado`, `analisar chamado`) — `AI_CLASSIFIER_VERSION` 3→4 pra forçar reclassificação. +3. **`decision_reason` distinguível**: rejeição por next_action genérico agora usa `generic_or_unsupported_next_action` em vez de cair em `invalid_json`. +4. **`FORCE_SEND` implementado**: execução manual nunca envia de verdade mesmo com `SEND_ENABLED=true`, a menos que `FORCE_SEND` também esteja ligado. +5. **Bug real e crítico, causa raiz do envio duplicado**: `logic/diversity.js` desempatava chamados com score igual pela ordem de chegada dos itens — que o n8n não garante entre branches paralelos (cache/IA/fallback se juntam antes do Top10). Duas execuções seguidas com os mesmos dados geravam Top10 diferentes → hash diferente → duas mensagens reais distintas no mesmo dia. Corrigido com desempate determinístico por `ticket.id` — comprovado com 2 execuções reais consecutivas produzindo o **mesmo hash exato**. +6. **Rodapé "Automated with this n8n workflow" removido** (`otherOptions.includeLinkToWorkflow: false`) — confirmado ausente na mensagem real enviada. +7. `\n` literal e link corrompido reportados: **investigado, não reproduzido em nenhuma execução real**. As duas execuções que geraram aquele Top10 (#38413 etc.) tinham `shouldSend:false` — nenhuma mensagem chegou a ser enviada. O texto veio do painel de dados bruto do n8n (JSON), que exibe `\n` como dois caracteres — não é um bug de envio. Adicionei testes de formatação mesmo assim (blindagem). + +## TESTES + +``` +171/171 passando +n8n_validate_workflow: limpo, exceto 3 falsos positivos pré-existentes e documentados + (MySQL query sem prefixo =, contradito por múltiplas execuções reais bem-sucedidas) +``` + +## TOP REAL (execução real, pós-todas-as-correções, comprovadamente determinístico) + +| #ID | classe | display_action | score | +|---|---|---|---| +| #33522 | ACTIONABLE_NOW | Realizar a migração dos e-mails | 250 | +| #36488 | ACTIONABLE_NOW | Contatar Patricia sobre troca de carcaça | 250 | +| #36897 | ACTIONABLE_NOW | Comprar um SSD | 250 | +| #36925 | ACTIONABLE_NOW | Realizar configuração do G-Chat | 250 | +| #37073 | ACTIONABLE_NOW | Testar impressão na impressora | 250 | +| #37691 | ACTIONABLE_NOW | Ver o que vai precisar para a migração | 220 | +| #38654 | ACTIONABLE_NOW | Realizar instalação dos tablets | 216.4 | +| #38657 | ACTIONABLE_NOW | Realizar analise do nobreak | 213.6 | +| #38635 | ACTIONABLE_NOW | Verificar configuração do computador | 211.6 | +| #38644 | ACTIONABLE_NOW | Continuar avaliação e monitoramento da conexão | 211.6 | + +Nenhum `Validar e executar`. Nenhum `decisionReason` de override crítico necessário — todos venceram por mérito real. + +## #62 / #75 + +Ambos são chamados **reais e legítimos**, não resíduo histórico: +- **#75** (`#1495 - Criar regra de proteção...`, aberto em 2020): tem tarefa aberta real de 29/07/2026 ("Realizar levantamento de quais clientes tem microtik") — evidência direta e recente. +- **#62** (`#8819 - Falha em um dos discos...`, aberto em 2024): disco com bad block confirmado, tarefa reaberta em 29/07/2026 ("Da inicio a analise"), `sla_vencido: true`. + +IDs baixos refletem apenas quando foram criados no GLPI — a atividade recente real é o que justifica a presença deles. Nenhum filtro por ID/idade foi implementado (sem evidência objetiva de que sejam lixo importado). + +## SLACK + +``` +quebra de linha real: OK (confirmado em 2 envios reais bem-sucedidos) +URLs: OK (puras, sem markdown [url](url), Slack auto-linka) +rodapé n8n removido: SIM +segunda tentativa duplicada bloqueada: SIM (comprovado -- mesmo hash em 2 execuções consecutivas após o fix de determinismo) +``` + +Dois envios reais aconteceram durante a investigação (autorização já em vigor), ambos corretamente formatados. Nenhum terceiro envio foi feito após encontrar o bug de determinismo — voltei pro estado seguro imediatamente. + +## SCHEDULE + +``` +segunda-sexta: SIM (0 8 * * 1-5) +08:00: SIM +timezone: America/Sao_Paulo +trigger conectado: SIM +``` + +## PRODUÇÃO + +``` +workflow ativo: NÃO +envio habilitado (SEND_ENABLED): NÃO +FORCE_SEND: NÃO +GLPI escrita: NÃO +``` + +## VEREDITO + +**PRONTO PARA USO** + +Todos os bugs reais encontrados (rótulo fixo, determinismo do Top10, columns faltando, alwaysOutputData, escopos OAuth) foram corrigidos e comprovados com execução real — incluindo o bug de duplicidade, que era mais sério do que o relatado (não era a guarda de idempotência falhando, era o próprio conteúdo sendo instável entre execuções). Ativação (`SEND_ENABLED=true` + `active=true`) é a única ação restante, e é sua para decidir quando.