Files
PessoaandClaude Opus 5 9c7f2a0faa feat(casos): a tela do aviso no WhatsApp — configurar, testar e ver o que saiu
A tela vive em IA › Aviso no WhatsApp (admin), e o rótulo não é "Avisos" de
propósito: "Alertas" já é a Central, na mesma seção, e duas portas com nome
parecido na mesma lista é como se perde gente.

Ela faz três coisas: escolhe a conexão e o número, manda um aviso de teste DE
VERDADE, e mostra as 20 últimas entregas com destino mascarado, o motivo da
falha em português e o link para o caso. Sem a lista, o mecanismo seria
invisível — e mecanismo invisível é pior que ausente.

O seletor filtra por CAPACIDADE (aceita mensagem livre), nunca por nome de
provedor: é o que a doutrina de canais exige, e o gate confirma.

Onze estados de alerta, não sete: só canal oficial conectado, mesma conexão
que atende clientes, sem endereço público, casos desligados no agente, agente
assistido, atendimento externo, conexão arquivada, e o descarte de mensagens
do número interno ("é o esperado"). Cada um com texto de gente.

O aviso de teste paga no contador anti-banimento e NÃO escreve no registro de
entregas — a garantia é de tipo, provada por sabotagem contra o typecheck. E
a recusa volta 200 com o motivo traduzido, em vez de erro cru.

Segunda porta no fim do wizard de instalação: numa VPS nova a tela de Casos
está vazia, e ninguém descobriria o aviso por lá.

Duas correções ao plano, medidas: a frase do descarte não diz "nos últimos 7
dias" porque o contador é acumulado — esse número não existe no schema; e o
laço de retorno mede os dois grupos a partir da abertura do caso, porque medir
o grupo avisado a partir do envio enviesa a favor do aviso por construção.

Verificado: typecheck, lint (372 warnings — o mesmo número das ondas 1 a 7),
lint:channels e release:conferir zerados; suíte com 10.163 verdes; 10
sabotagens previstas antes e medidas, com as 2 previsões erradas declaradas.
Dois defeitos meus achados na releitura: um `||` que destravava o botão sem
endereço público, e a conexão arquivada que sumia da lista sem explicação.

PENDENTE, declarado: e2e e prova em tela (onda 12); o item na Central no
primeiro caso sem configuração precisa de um kind que ainda não existe.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PqKEskriDoLeY45kmFtCgE
2026-09-18 03:36:15 -03:00
..