- src/v2/sendGuard.js (novo): canSend() reduz SHADOW_MODE/DEV_MODE/
SEND_ENABLED/FORCE_SEND a uma formula unica testada exaustivamente
(secao 15 do ciclo final: matriz completa de guarda de seguranca).
computeMessageHash/buildSendKey/isDuplicate implementam a chave
logica de idempotencia da secao 13 (report_type+periodo+destino+hash).
- src/v2/config.js: SEND_ENABLED, FORCE_SEND, SLACK_DESTINATION.
- src/v2/pipeline.js: buildReport agora calcula envio.pode_enviar/
motivo_guarda/duplicata_bloqueada/send_key a partir de triggerType
(.mode) e sendLogRows (Data Table de log de envios).
- tools/build_v2_workflow*.js: novo Data Table 'Buscar Log de Envios',
troca do HTTP Slack com webhook placeholder por node Slack nativo
(credencial real lNqwBBrtLfkRqw2X, reaproveitada do projeto irmao
Coordenador GLPI), branches de sucesso/falha gravando o log de envio
so apos confirmacao real do Slack.
- test/sendGuard.test.js, test/workflowStructure.test.js (novos):
cobrem a matriz de guarda de seguranca e travam regressao do bug de
timeout (executeOnce=true nos 8 nodes de leitura em lote) e do bug
de sendGuard.js nao concatenado no Code node gerado.
- Corrigido bug real encontrado nesta sessao: sendGuard.js nao estava
na lista de modulos concatenados pelo gerador, deixando canSend/
computeMessageHash/buildSendKey undefined em runtime.
- Deployado e validado ao vivo no DEV (workflow 3x5kb58TeBCvirm6):
n8n_validate_workflow -> valid:true, 0 erros, executeOnce preservado
nos 9 nodes de leitura em lote.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>