Cerebro Studio · Backlog · Changelog
/www/wwwroot/edmundo10.com.br/docs/CHANGELOG.md • 2026-04-20T18:11:21.604Z

Projeto: Edmundo10. Fonte principal: /www/wwwroot/edmundo10.com.br/docs/CHANGELOG.md.

CHANGELOG.md - Edmundo10

2026-04-20

  • corrigido o bug de continuacao cruzada no runtime.php: quando duas enquetes diferentes apontam para o mesmo campaign_target_id, o runtime agora escolhe a continuacao da campanha de origem mais recentemente enviada ao contato, em vez de aceitar a primeira continuacao ativa encontrada;
  • a selecao nova foi validada localmente no caso real do contact 75, em que Sim passou a resolver para a continuacao 3/origin 8 e Nao para 4/origin 8, restaurando o fluxo QR1 Cabo Frio -> Nao -> Sim;
  • confirmado na auditoria que o runtime.php nao havia parado no meio; o diff contra backups/runtime.php.v1-20260420_140047 continha apenas o bypass anterior do cooldown de enquete;
  • reenviado manualmente o video da campanha 2 apenas para o contact 75, com HTTP 200, message_id persistido em wa_messages e trilha dedicada message_type=video_manual para nao contaminar a logica automatica;
  • atualizado contacts.display_name do contact 75 de . para Max apos a confirmacao manual da identidade;

2026-04-18

  • reduzido de 90% para 52% o threshold de similaridade dos gatilhos longos no runtime, com alteracao de uma unica condicao em painel-novo/includes/runtime.php; a frase real do cliente (55,56%) passou a casar com qr1 sem mexer em webhook, helper ou QR.
  • o runtime passou a tolerar 90% de similaridade para trigger_text longo, mantendo match exato nas campanhas curtas Sim e Não; isso cobre casos de LGPD com pequena variacao, sufixo curto ou erro leve de digitacao sem quebrar o fluxo principal;
  • protegidos com login do painel os endpoints auxiliares painel-novo/tools/debug_full.php, painel-novo/tools/debug_webhook.php e painel-novo/tools/log_view.php, retirando da web a leitura direta de payloads e logs internos sem tocar no fluxo principal dos QR codes;
  • bloqueado o acesso publico a /painel-novo/data/ no Nginx, fechando a exposicao direta de runtime.sqlite e webhook_debug.log;
  • implantada revogacao condicional da enquete original do QR1: no primeiro voto valido Sim, apos o envio da continuacao, o runtime passa a revogar a enquete enviada ao contato via messageId;
  • a versao anterior, que mantinha a enquete ativa apos o voto, foi preservada em backup versionado antes desta rodada para rollback rapido;
  • generalizada a protecao anti-reenvio para campanhas alem do QR1: campanhas diretas como lista, texto, audio e video agora passam a responder uma vez, avisar uma vez no primeiro replay e ficar silenciosas depois;
  • corrigida a comparacao de timestamps entre campaigns e wa_messages, com compatibilidade para campanhas antigas gravadas em UTC pelo SQLite; novos cadastros/edicoes passam a gravar created_at e updated_at em America/Sao_Paulo;
  • corrigido o fluxo de continuacao do QR1 para respeitar o ciclo mais recente da enquete: um novo QR1 enviado depois de um video antigo volta a liberar um unico Sim valido para a continuacao, em vez de bloquear pelo historico global do contato;
  • corrigido o dedupe_short_window para usar a mesma compatibilidade de timezone dos registros antigos, evitando que votos Sim/Não historicos em horario incorreto sejam lidos como eventos "do futuro" e descartem votos novos;
  • endurecido o helper WhatsApp do edmundo10 contra a oscilacao ERR_CERT_VERIFIER_CHANGED, com flags de Chromium mais tolerantes e subida revalidada apos restart;
  • adicionados retries e mensagens de erro mais honestas na rota retroativa /import-history do helper;
  • criada a ferramenta CLI painel-novo/tools/recover_recent_campaigns.php para auditoria e futura recuperacao segura de pendencias recentes;
  • isolado o impacto operacional do helper do legalizarj ao mover o runtime dele para codigo proprio, impedindo que restart/cleanup dele continue afetando o edmundo10;
  • incluido suporte a reply_type=video no painel-novo, com upload de video, legenda opcional e envio pelo helper via /send-video;
  • atualizado o modal de editar campanha para mostrar o video atual, com player e link para abrir o arquivo antes da substituicao;
  • implementada a regra anti-reenvio do QR1: a enquete passa a respeitar cooldown de 24h, e a continuacao Sim passa a ser enviada apenas uma vez por contato;
  • quando o cliente repetir o gatilho do QR1 ou voltar ao Sim depois de ja ter recebido a continuacao, o sistema envia a mensagem padrao para aguardar em vez de reenviar enquete ou video.
  • restaurado o nome do participante no fluxo do webhook: o helper volta a enviar display_name, o runtime volta a gravar esse valor em contacts, e messages.php passa a usar participant_key como fallback antes do telefone.
  • endurecida a camada anti-flood do repeat_notice: depois do primeiro aviso de ja respondeu, os replays seguintes da mesma campanha ficam silenciosos para reduzir superficie de abuso por script;
  • mantida a excecao operacional em que uma edicao posterior da campanha reabre o envio do conteudo atualizado para o contato.
  • normalizados os timestamps do runtime PHP para America/Sao_Paulo, com gravacao explicita via edmundo10_now_db() em vez de depender de CURRENT_TIMESTAMP do SQLite;
  • adicionada deduplicacao curta de mensagens recebidas por contato/texto em janela de 20s, retornando ignored/dedupe_short_window para replays identicos em burst;
  • quando a campanha e editada, o runtime ignora esse dedupe curto se o recebimento anterior for anterior ao novo updated_at, para liberar a entrega da versao atualizada.

2026-04-16

  • iniciado o bootstrap documental e tecnico do runtime novo em painel-novo/;
  • mantido o runtime legado ativo em /opt/edmundo-campanha/webhook como contingencia.
  • criado runtime novo em PHP 8.3 + SQLite dentro de painel-novo/, inspirado na base do helper do LegalizarJ;
  • implementados:
  • login/logout
  • painel principal de campanhas
  • painel 2 de continuacoes
  • endpoint de webhook
  • endpoint de qrcode
  • endpoint de status do transporte
  • migrations e runtime helper desacoplado
  • importadas do legado as campanhas ativas e o audio atual para painel-novo/storage/audio/;
  • smoke validado:
  • https://edmundo10.com.br/painel-novo/login.php = 200
  • login no painel novo = 302 para index.php
  • https://edmundo10.com.br/painel-novo/index.php autenticado = 200
  • https://edmundo10.com.br/painel-novo/painel2.php autenticado = 200
  • https://edmundo10.com.br/painel-novo/qrcode.php?slug=qr1 = 302
  • documentado em docs/painel-novo-mapa.md o mapa persistente de login, dashboard e QR do runtime novo para evitar remapeamento recorrente.
  • ARCHITECTURE.md agora aponta para docs/painel-novo-mapa.md como leitura operacional rápida.
  • ajustado o helper Node que alimenta painel-novo/whatsapp_qr.php para gerar QR com errorCorrectionLevel: M (ECC médio), visando leitura melhor em câmeras com menor nitidez.
  • protegido painel-novo/whatsapp_qr.php com edmundo10_require_auth(), impedindo acesso público direto à tela de pareamento do helper.
  • aumentado o QR do helper para width: 420 e margin: 2, mantendo ECC M, para deixar os módulos visualmente maiores e mais fáceis de ler.
  • alterado o QR do helper de ECC M para ECC L para priorizar módulos menos densos e facilitar leitura em câmeras com pouca nitidez.
  • removidos da home pública os cards/atalhos dos QR codes de campanhas.
  • home pública reescrita para exibir links dos 10 vídeos mais vistos encontrados na busca Edmundo no YouTube, mantendo apenas o acesso administrativo como CTA interno.
  • adicionadas thumbnails oficiais do YouTube nos cards da home pública para melhorar leitura visual da lista.
  • curadoria da home refinada para o contexto Edmundo ex-jogador do Vasco / futebol, removendo resultados ambíguos que não pertençam a esse recorte.
  • removido da home o video j838qmYuJYo por rejeicao manual do usuario e registrada blacklist minima de IDs excluidos em GUIDELINES.md para nao voltar no scraper futuro.