docs: correção final report (Validar e executar fix, determinism bug, #62/#75 audit)
Compact final report per mission format: root cause + fix for the "Validar e executar" label bug, the critical Top10 non-determinism bug (real duplicate-send root cause, proven fixed with identical message hash across two consecutive real executions), #62/#75 real-data audit (both legitimate, no ID-based filter warranted), Slack formatting confirmation, schedule confirmation, production state confirmation. Verdict: PRONTO PARA USO. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
b11fcb8a7f
commit
2724b90cb4
@@ -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.
|
||||
Reference in New Issue
Block a user