O que funciona
HTML único sem framework
Zero build, zero dependência — atualiza arrastando um arquivo
Audit-based para Zendesk
Único jeito correto de contar produção diária por agente. updated_at falha.
Gabarito com array de respostas
Aceitar múltiplas respostas corretas evita injustiça com o aluno
overflow-x auto no container do heatmap
width:fit-content no grid interno + overflow-x:auto no container
Correção retroativa via painel admin
Corrigir gabarito sem apagar histórico — doPost update no Apps Script
localStorage para estado leve
Preferências, login, gabarito alternativo — sem banco de dados
Ler dado exato de um endpoint em vez de OCR de print
action=alts do Apps Script devolve o JSON certo — nunca transcrever código de imagem pixelizada
Catálogo VTEX público pra conferir código real
/api/catalog_system/pub/products/search?ft= — código de verdade, sem inventar de cabeça
Prova difícil pelo cenário, fato só do treinamento
Cenário real do Mercado Livre + conteúdo limitado ao PDF do segmento. Sem Panelook, sem decorar código.
Round-robin com atribuição permanente
Genius no CRM: mede produtividade guardando o estado na hora da atribuição
Histórico "chumbado" quando a regra muda
Congela meses fechados em JSON — nunca recalcula o passado com o critério novo
Tabelas no visual do Painel Mensal
Cabeçalho agrupado por cor + heatmap por coluna — padrão preferido do usuário no CRM
Mês em andamento: dia 1 → ontem em todos os anos
Compara de igual pra igual com o mesmo período do ano passado (Histórico Orçamentos)
Página inteira no mesmo layout
Título + tabela simples + nota curta do que é. Cor só na exceção. Nada de quadro destoando.
Medir estudo só com aba visível
Teto de 1h por abertura, sendBeacon ao fechar, 1 gravação no KV por abertura (Hub)
Tela nova primeiro como preview só-leitura
Base real + controles desabilitados ("como seria"). Gestor decide antes de existir disparo (Carrinho WhatsApp)
Erros mapeados
Copiar Apps Script do chat
Caracteres invisíveis causam SyntaxError. Sempre usar o arquivo .gs salvo em disco.
Chamar script.google.com direto do navegador
Quem tem 2+ contas Google pode cair em 404 imprevisível. Sempre proxy via Cloudflare Pages Function.
wrangler kv get/list sem --remote
Lê o KV simulado local, não o de produção — parece vazio mesmo com dado real salvo.
updated_at do ticket Zendesk
Falsos positivos — conta tickets onde outro agente respondeu hoje
Vídeo Drive embutido em iframe de outro domínio
Capa carrega, reprodução falha com cookie de terceiros bloqueado. Preferir link direto como fallback.
Gabarito de prática em texto livre
Time treinado a responder com código — "DDR4 16GB" derrubou acerto pra 0-12%. Usar código BB.
GitHub Pages e Netlify
Conta excluída / confusão com domínio pago. Cloudflare é o padrão definitivo.
Modal ampliado só se TODAS as lições forem PDF
Treinamento com PDF+vídeo misturado nunca alargava — checar também o caso misto.
Sync sem trava contra resultado vazio
Planilha com #REF! leu 0 linhas e sobrescreveu o snapshot. Todo sync: "vazio não grava".
Prova com a certa sempre a mais longa
Bateria 30/Set: média 9,6 — gabaritável pelo tamanho. Rodar o verificador antes de publicar.
Setor novo só no código, fora do KV
Hub: setor ausente no config = null = libera todos os treinamentos.
Data do Tableau lida como D/M
Vem M/D/YYYY e valor "1,769.72". Conferir formato com amostra antes de filtrar.
Campo existe na API ≠ campo preenchido
Genius: custo/datas/transportadora vazios em 100%. Medir preenchimento antes de construir.
?force=1 logo após reiniciar o Flask
Respondeu 202 e não regenerou. Conferir o campo "gerado" do JSON e forçar de novo.
Mesmo texto de motivo em dois modos
"Sem estoque" em perda e em não faturado zerava o crédito da cobrança. Usar prefixo próprio.
"Fechou hoje" pelo Controle 04
Extract do Tableau atualiza 1×/dia de madrugada. Venda do dia só aparece amanhã → disparo D+1.
"A API não tem esse campo" sem testar versões antigas
Genius: comentário do cliente só existe no /v2/pvt/processo/{id}, fora do OpenAPI. Testar v2/v1 antes de dizer não.
// mostrando um recorte curado — a lista completa das 97 lições de erro, 48 do que funciona e 16 padrões vive em knowledge_lessons_learned.md / knowledge_stack_patterns.md (memória do Claude)