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 mesmocampaign_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 queSimpassou a resolver para a continuacao3/origin 8eNaopara4/origin 8, restaurando o fluxoQR1 Cabo Frio -> Nao -> Sim; - confirmado na auditoria que o
runtime.phpnao havia parado no meio; o diff contrabackups/runtime.php.v1-20260420_140047continha apenas o bypass anterior do cooldown de enquete; - reenviado manualmente o video da campanha
2apenas para ocontact 75, comHTTP 200,message_idpersistido emwa_messagese trilha dedicadamessage_type=video_manualpara nao contaminar a logica automatica; - atualizado
contacts.display_namedocontact 75de.paraMaxapos a confirmacao manual da identidade;
2026-04-18
- reduzido de
90%para52%o threshold de similaridade dos gatilhos longos no runtime, com alteracao de uma unica condicao empainel-novo/includes/runtime.php; a frase real do cliente (55,56%) passou a casar comqr1sem mexer em webhook, helper ou QR. - o runtime passou a tolerar
90%de similaridade paratrigger_textlongo, mantendo match exato nas campanhas curtasSimeNã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.phpepainel-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 deruntime.sqliteewebhook_debug.log; - implantada revogacao condicional da enquete original do
QR1: no primeiro voto validoSim, apos o envio da continuacao, o runtime passa a revogar a enquete enviada ao contato viamessageId; - 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 comolista,texto,audioevideoagora passam a responder uma vez, avisar uma vez no primeiro replay e ficar silenciosas depois; - corrigida a comparacao de timestamps entre
campaignsewa_messages, com compatibilidade para campanhas antigas gravadas em UTC pelo SQLite; novos cadastros/edicoes passam a gravarcreated_ateupdated_atemAmerica/Sao_Paulo; - corrigido o fluxo de continuacao do
QR1para respeitar o ciclo mais recente da enquete: um novoQR1enviado depois de um video antigo volta a liberar um unicoSimvalido para a continuacao, em vez de bloquear pelo historico global do contato; - corrigido o
dedupe_short_windowpara usar a mesma compatibilidade de timezone dos registros antigos, evitando que votosSim/Nãohistoricos em horario incorreto sejam lidos como eventos "do futuro" e descartem votos novos; - endurecido o helper WhatsApp do
edmundo10contra a oscilacaoERR_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-historydo helper; - criada a ferramenta CLI
painel-novo/tools/recover_recent_campaigns.phppara auditoria e futura recuperacao segura de pendencias recentes; - isolado o impacto operacional do helper do
legalizarjao mover o runtime dele para codigo proprio, impedindo que restart/cleanup dele continue afetando oedmundo10; - incluido suporte a
reply_type=videonopainel-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 continuacaoSimpassa a ser enviada apenas uma vez por contato; - quando o cliente repetir o gatilho do QR1 ou voltar ao
Simdepois 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 emcontacts, emessages.phppassa a usarparticipant_keycomo fallback antes do telefone. - endurecida a camada anti-flood do
repeat_notice: depois do primeiro aviso deja 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 viaedmundo10_now_db()em vez de depender deCURRENT_TIMESTAMPdo SQLite; - adicionada deduplicacao curta de mensagens recebidas por contato/texto em janela de
20s, retornandoignored/dedupe_short_windowpara 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/webhookcomo 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 =
302paraindex.php https://edmundo10.com.br/painel-novo/index.phpautenticado =200https://edmundo10.com.br/painel-novo/painel2.phpautenticado =200https://edmundo10.com.br/painel-novo/qrcode.php?slug=qr1=302- documentado em
docs/painel-novo-mapa.mdo mapa persistente de login, dashboard e QR do runtime novo para evitar remapeamento recorrente. ARCHITECTURE.mdagora aponta paradocs/painel-novo-mapa.mdcomo leitura operacional rápida.- ajustado o helper Node que alimenta
painel-novo/whatsapp_qr.phppara gerar QR comerrorCorrectionLevel: M(ECC médio), visando leitura melhor em câmeras com menor nitidez. - protegido
painel-novo/whatsapp_qr.phpcomedmundo10_require_auth(), impedindo acesso público direto à tela de pareamento do helper. - aumentado o QR do helper para
width: 420emargin: 2, mantendoECC M, para deixar os módulos visualmente maiores e mais fáceis de ler. - alterado o QR do helper de
ECC MparaECC Lpara 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
Edmundono 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
j838qmYuJYopor rejeicao manual do usuario e registrada blacklist minima de IDs excluidos emGUIDELINES.mdpara nao voltar no scraper futuro.