git-subtree-dir: coordenador git-subtree-mainline:facbe2e340git-subtree-split:ce7af94d55
5.7 KiB
Estado do Projeto — Coordenador GLPI
Última atualização: 2026-09-27 (revisão de documentação; último estado live verificado por execução real: 2026-08-25).
O que é
Workflow n8n que roda seg-sex 08:00 (America/Sao_Paulo), lê chamados abertos
do GLPI (MySQL, read-only), classifica cada um com IA e envia no Slack os 10
que precisam de ação humana hoje. Duas gerações no repo: V2 (ativo,
n8n/ + logic/) e V1 (legado, Coordenador GLPI - Chamados Abertos Slack.n8n.json na raiz — nunca foi importado no n8n de produção, existe só
como rollback).
Estado de produção (n8n instance, workflow id y6JFEnp7Z2IJEUe2)
Confirmado por n8n_get_workflow em 2026-08-25 após ativação explícita
autorizada pelo usuário ("pode ativar em produção"):
active: true- Config node:
ENVIRONMENT=production,SEND_ENABLED=true,FORCE_SEND=false - Schedule Trigger conectado, cron
0 8 * * 1-5,settings.timezone=America/Sao_Paulo - 43 nodes, nenhum webhook temporário de debug presente
- Credenciais live: MySQL
GLPI(iddsVj1nmOIXRvix9n), SlackSlack - Bot Coordenador (Chamados Suporte)(idlNqwBBrtLfkRqw2X), OpenAIOpenAI - Coordenador GLPI(idWUGriAn5FgCiLza2) - Slack destino: canal
chamados-suporte(idC0BJNBTPFT5)
Este arquivo não substitui uma verificação live. Se for tomar qualquer
decisão que dependa do estado atual (reativar, mudar config, investigar um
envio), reconfirme com n8n_get_workflow / n8n_executions antes — não
assuma que nada mudou desde 25/08 só porque este arquivo diz isso.
Limpeza pós-ativação (2026-08-25)
Durante a fase de correção final, execuções de teste reais enviaram mensagens
ao Slack para ~37 tickets, gravando last_sent_at/times_sent/
consecutive_days_sent na Data Table coordenador_glpi_memoria. Isso foi
resetado manualmente (last_sent_at, times_sent, times_sent_30d,
consecutive_days_sent → null para essas linhas) para que o primeiro envio
real de produção não sofresse penalidade de cooldown por causa do teste.
last_context_hash/ai_classification/next_action foram preservados (não
há motivo para reclassificar de novo o que não mudou no GLPI).
Arquitetura (resumo — detalhe completo no README.md)
GLPI (MySQL read-only) -> candidatos -> normalização -> cache de classificação
(Data Table, chave = hash do contexto + AI_CLASSIFIER_VERSION) -> IA (OpenAI,
só quem mudou) -> score determinístico -> Top10 com diversidade por grupo
(desempate por ticket.id — ver "bugs reais corrigidos") -> guard de envio
(SEND_ENABLED + FORCE_SEND + idempotência por hash da mensagem) -> Slack
-> shadow-diff contra query legada do V1 (auditoria, não bloqueia)
logic/*.js é lógica pura testável (node --test, 171/171 passando em
2026-09-27). n8n/nodes/*.node.js são drivers finos que tools/build-workflow.js
inlina dentro de n8n/workflow.template.json para gerar
n8n/deployed/coordenador-glpi-v2.n8n.json.
O template local (ENVIRONMENT=dev, SEND_ENABLED=false) diverge de
propósito do live (production/true) — ver README.md seção "Build" para
a tabela completa e o motivo (template = default seguro para reimportação;
promoção para produção é ato manual e auditável, não algo que rebuild reverte).
Bugs reais corrigidos (histórico — não reabrir sem nova evidência)
WAITING_*/bloqueados entrando no Top10 viacontextChanged— corrigido emlogic/cooldown.js.- Rótulo fixo "Validar e executar" sempre vencendo o
next_actionreal da IA — corrigido emlogic/message.js(shortActionLabel). - Crítico: Top10 não-determinístico (empate de score desempatado pela
ordem de chegada dos itens, que o n8n não garante entre branches
paralelos) causou envio real duplicado com conteúdo diferente no mesmo
dia. Corrigido com desempate por
ticket.idemlogic/diversity.js. Regressão emlogic/diversity.test.js. alwaysOutputDatafaltando emData Table - Buscar Envios Recentesquebraria o caminho feliz todo dia sem envio prévio (0 linhas = n8n não roda os nodes seguintes).columns.mappingModefaltando nos nodes de insert da Data Table de envio (Cannot convert undefined or null to object).- Rodapé de atribuição automática do n8n no Slack (
includeLinkToWorkflow) — desligado explicitamente. - Falta de escopo OAuth (
channels:join) causandonot_in_channelmesmo com o bot já no canal — resolvido reinstalando o app Slack com o escopo.
Detalhe completo de cada um, com execução real que provou a causa raiz, em
docs/superpowers/notes/2026-08-25-relatorio-correcao-final.md e
2026-08-25-relatorio-finalizacao-producao.md.
Restrições que continuam valendo (não renegociar sem pedido explícito do usuário)
- GLPI é estritamente somente leitura — nenhuma escrita, nunca.
- V1 nunca é apagado; é o rollback.
- Não recalibrar pesos de score/diversidade/pool sem bug real comprovado.
- Segredos só via credential store do n8n — nunca em arquivo do repo.
- Execução manual nunca envia de verdade sem
FORCE_SEND=true(proteção contra teste acidental em produção).
Onde olhar primeiro
- Dúvida sobre comportamento atual do workflow →
n8n_get_workflow(live), não os arquivos deste repo (o repo é a fonte de verdade da lógica, não necessariamente da config live, ver seção "Build" do README). - Dúvida sobre por que uma decisão de design foi tomada →
docs/superpowers/specs/2026-08-24-coordenador-glpi-v2-design.mdedocs/superpowers/plans/2026-08-24-coordenador-glpi-v2.md. - Dúvida sobre um bug específico já corrigido → notas datadas em
docs/superpowers/notes/, mais recente primeiro.