CL-186-wa-chat-cancelamento
Contexto operacional
- O BK-186 consolidou duas frentes:
- evolucao do
WA Chat/ historico do WhatsApp no admin - endurecimento do runtime para recuperar sessao presa apos QR/autenticacao
- No incidente real de 27/03/2026, o bot chegava em
AUTHENTICATED, mas nao emitiaREADY, mantendo o admin em loop de reconexao mesmo com QR aceito.
Ajustes entregues
1. WA Chat / historico
admin/modulos/bot/whatsapp.php- suporte a labels reais do WhatsApp Business no chat admin
- preservacao de apelidos manuais/fixacao sem conflitar com labels reais
- suporte a vinculo manual de numero -> cliente
- suporte a edicao de mensagem enviada quando houver
message_id bot/whatsapp/webhook.php- persistencia de
message_idno historico includes/whatsapp_helper.php- autocorrecao de schema para
whatsapp_mensagens - persistencia de
message_id/edited_at sql_updates/create_whatsapp_table.sql- schema base alinhado ao historico com
message_ideedited_at
2. Console de Cancelamento
admin/modulos/pecas/index.php- a primeira tela passou a preservar a mensagem editada na pre-visualizacao
3. Runtime / painel WhatsApp
bot/whatsapp/server.js- passou a expor
authenticated,client_state,last_auth_atelast_state_at - removeu o
user-agentlegado fixo - ganhou diagnostico de bootstrap do Puppeteer/page console
- ganhou recovery automatico pos-auth usando
ExposeStore + LoadUtils - promove o servico para
READYquando a pagina ja estiverCONNECTED, mesmo com a rotina padrao da biblioteca presa admin/whatsapp_qr.php- passou a devolver
authenticated/client_state admin/index.php- parou de insistir no QR antigo quando o pareamento ja foi aceito
includes/whatsapp_helper.php- passou a distinguir melhor
requires_qr,authenticatede sessao presa
RCA resumida do incidente
- O QR era aceito e o browser chegava a
AuthStore.AppState = CONNECTED. - A biblioteca
whatsapp-web.jsnao completava a injecao dewindow.Store/window.WWebJS, entao o servico ficava parado emAUTHENTICATED. - O recovery automatico recompõe
Store/WWebJSe destrava a transicao paraREADY.
Evidencias de validacao
node -c /www/wwwroot/rionoteatro.com.br/bot/whatsapp/server.jsphp -l /www/wwwroot/rionoteatro.com.br/admin/index.phpphp -l /www/wwwroot/rionoteatro.com.br/admin/whatsapp_qr.phpphp -l /www/wwwroot/rionoteatro.com.br/includes/whatsapp_helper.phpsystemctl restart rnt-whatsappcurl http://127.0.0.1:3033/status- retorno final:
{"status":"connected", ... "client_state":"READY"} curl -H 'apikey: ...' http://127.0.0.1:3033/me- retorno final:
connected=true,wid=5521999605790@c.us curl -X POST http://127.0.0.1:3033/check-number ...- retorno final:
exists=true
Observacao residual
- O console do WhatsApp Web ainda registra o ruido
Requiring unknown module "WAPhoneUtils", mas o bootstrap passou a se autocurar e o servico fecha comConectado com sucesso!.