mirror of
https://github.com/melgarafael/DeskcommCRM.git
synced 2026-10-02 01:28:34 +08:00
Pergunta de produto, não de defeito: com a entrega de postgres_changes morta, o que o usuário vê? Ela sobrevive a qualquer conserto da raiz de hoje. INSTRUMENTO: proxy de WebSocket que engole SÓ os quadros de dados e deixa passar join, phx_reply e heartbeat — o canal continua confirmando e o app continua achando que está vivo. Fechar o socket seria outro defeito, visível, e mediria a tela errada. Tudo rodado no pipeline SAUDÁVEL: medir no CRM Vivo empilharia as duas mortes e a rodada de controle não teria como passar. MEDIDO (controle positivo em toda superfície, na mesma execução): board controle: muda em ~2-4s │ MORTA: 3/3 nunca em 30s, nem ao voltar à aba dossiê controle: muda em ~2s │ MORTA: 3/3 nunca em 30s, nem ao voltar à aba inbox controle: muda em ~2s │ MORTA: 2/4 nunca · 1/4 só ao voltar à aba · 1/4 sozinha em ~4s AVISO AO USUÁRIO: NENHUM, em nenhuma superfície, em nenhuma rodada — procurando por um vocabulário largo de propósito (offline, sem conexão, desatualizado, reconectando, tempo real, pausado…). O critério é "a tela diz ALGUMA coisa", não "a tela diz do meu jeito". E O ESTADO EXPOSTO MENTE: board e dossiê publicam `data-realtime-status` e ele diz `subscribed` com a entrega morta — porque descreve a ASSINATURA, não a ENTREGA. É o não sei renderizado como saudável. O inbox nem expõe. AUDITORIA DOS CONSUMIDORES (10 usos de useRealtimeChannel): 8 descartam o status; 2 capturam (useBoard, useLeadTimeline) e o depositam num atributo `data-*` que existe para teste. Zero mostram qualquer coisa a um humano. A dívida herdada falava em 7 de 9; o número medido é 8 de 10 ignorando, e os 2 que leem não mostram — na prática, 10 de 10 invisíveis. O INBOX É O PIOR CASO E NÃO O MELHOR: quatro rodadas idênticas deram três resultados diferentes. Uma tela que às vezes se recupera é pior que uma que nunca se recupera, porque o usuário não tem como saber em qual caso está. SEGUNDA CORREÇÃO DO MESMO CONTADOR NO APARATO DA WAVE 6, e a primeira estava errada também. Ele casava a substring "postgres_changes" e contava RECIBO de inscrição como entrega; eu "consertei" exigindo `"event":"postgres_changes"` e troquei falso positivo por falso NEGATIVO — o quadro do Phoenix é um ARRAY, `[join_ref, ref, topic, event, payload]`, e não existe chave `"event":`. O contador passou a marcar zero SEMPRE, inclusive onde a entrega funciona, e essa linha estava dentro do vermelho do D21. Agora lê a posição. Ressalva registrada: numa das três rodadas do board não houve quadro para engolir (0 de 3). O resultado visto é o mesmo, mas aquela rodada não provou o mecanismo — provou o efeito.
91 KiB
1440x900px
91 KiB
1440x900px