Selo de estado:
Preview(teto atual do produto) · Curso ACD-420 — Analista de IA: relatórios, alertas, anomalias e previsões · Aula 4 de 9 · Atualizado em 2026-10-04.
Objetivo#
Ao final desta aula você vai configurar alerta e ler backtest — e nunca mais ligar uma regra sem saber quanto barulho ela faria.
Vídeo#
Identificador no manifesto: acd-420-04-alertas-de-limiar-e-historico · duração-alvo 7 min · tela do produto: /relatorios.
Roteiro de gravação (6 capítulos):
| # | Minutagem-alvo | Capítulo | Tela do produto |
|---|---|---|---|
| 1 | 0:00–0:40 | Abertura: título + selo Preview. Alerta é 100% determinístico: sem LLM, sem nada saindo do produto. | /dashboards/[id] |
| 2 | 0:40–2:20 | Alerta do visual: painel → visual → Alerta; "Avisar quando", Medida, "Resumir por", Canal, Destinatário. | /dashboards/[id] |
| 3 | 2:20–3:40 | Alerta do relatório ("Alertas inteligentes", Business+): drop_pct/spike_pct/below/above com janela mínima. | /relatorios/novo |
| 4 | 3:40–5:10 | Quando dispara: avaliação no refresh, rearme por transição, cooloff e a chave de idempotência. | /dashboards/[id] |
| 5 | 5:10–6:20 | Backtest: o teto de barulho, o que ele não simula e o aviso de que passado ≠ futuro. | /dashboards/[id] |
| 6 | 6:20–7:00 | Erros comuns e estado. Encerramento com o "faça você mesmo". | /relatorios/[id] |
Conteúdo#
Determinístico, do começo ao fim
Alerta não tem LLM. A avaliação da condição, o texto do motivo em português, a idempotência, o histórico e o webhook (Aula 5) são código puro: para avaliar, nada sai do produto — a comparação acontece localmente, sobre o snapshot já materializado. Custo de IA: zero. Isso importa na prática, porque significa que o alerta funciona com a IA desligada, com o orçamento de IA zerado e em qualquer plano que tenha o recurso.
Duas superfícies, dois tipos de regra
No painel, por visual. Abra o painel, selecione o visual e use o botão Alerta. Os campos são:
| Campo | Opções |
|---|---|
| Avisar quando | valor >, valor ≥, valor <, valor ≤ + o número do limiar |
| Medida | 1ª coluna numérica ou uma coluna escolhida (só quando o visual tem série) |
| Resumir por | soma, média, maior, menor, último ponto |
| Canal | E-mail, WhatsApp (e URL de webhook — Aula 5) |
| Destinatário | e-mail, número com DDD ou a URL https do seu sistema |
Visuais de valor único (KPI, medidor, termômetro, progresso) não pedem "Medida" nem "Resumir por" — o alerta olha o único valor que existe. O recurso é do plano Business+.
No relatório, por consulta. Na etapa 2 do wizard (/relatorios/novo), o bloco Alertas inteligentes monitora uma coluna numérica e dispara o relatório fora da agenda. São até 5 regras, cada uma com operador drop_pct (queda ≥ X%), spike_pct (pico ≥ X%), below (< valor) ou above (> valor) e uma janela mínima entre disparos em horas. Também Business+ — fora do plano, a action responde "Alertas inteligentes estão disponíveis no plano Business."
Quando o alerta dispara (e quando não)
- A avaliação acontece no refresh do painel. Não há cron dedicado de alerta: sem dado novo, não há reavaliação.
- Rearme por transição. O alerta dispara na passagem para violado e só repete depois de normalizar. É isso que evita um aviso por hora enquanto o número continua ruim.
- Cooloff. Uma janela mínima entre disparos, quando configurada, aperta ainda mais.
- Idempotência à prova de corrida. A chave é um hash de (painel, visual, hash da regra,
refreshedAtdo snapshot), comUNIQUEno banco. O mesmo snapshot nunca dispara a mesma regra duas vezes — nem com refresh reprocessado, nem com corrida de crons, nem com retry. Mudou a regra ou chegou snapshot novo? Chave nova, pode disparar de novo. - Regra percentual sem base não dispara. No primeiro refresh, sem snapshot anterior,
drop_pct/spike_pctnão têm com o que comparar — e o produto prefere o silêncio a um alarme inventado.
Cada disparo vira um evento de alerta escopado ao workspace, com o estado de entrega (fired/delivered/failed) — é o histórico que responde "quais alertas dispararam este mês" e que se conecta ao ledger de entrega da Aula 3.
Backtest: o teto de barulho
Antes de ligar a regra, backteste. O backtest conta em quantos pontos do seu histórico a condição valeria. Duas leituras honestas sobre ele:
- Ele não simula rearme por transição nem cooloff. De propósito: esses dois mecanismos só reduzem os envios, então o número do backtest é o teto de barulho. Se o teto já é aceitável, o real será melhor.
- Vale o aviso de sempre: passado não garante futuro.
A regra de bolso: se o backtest aponta dezenas de disparos no histórico, o limiar está frouxo e o alerta vai ser ignorado em duas semanas. Se aponta zero, o limiar está apertado e o alerta nunca vai avisar nada.
O alerta diz
que cruzou, não por quê
O motivo em português descreve o que foi medido — por exemplo "Receita" caiu 32% vs snapshot anterior (150→102), limite 20%. Ele não afirma causa. Para investigar o porquê você tem as Aulas 6 (anomalia), 7 (previsão) e 8 (decomposição de variação) — e nenhuma delas entrega causa tampouco.
Exemplo Aurora: receita contra a meta
A meta semanal de receita da Aurora é R$ 50 mil. maria quer avisar quando a semana fechar abaixo de 80% da meta, ou seja, R$ 40 mil. No painel "Vendas por filial", ela seleciona o KPI de receita semanal e configura Avisar quando valor < 40000, canal E-mail, destinatário maria@example.com.
O detalhe que todo mundo erra: o alerta não conhece a meta. Alerta ligado a uma meta cadastrada do painel é Roadmap — então é você que traduz a meta em um limiar absoluto e reajusta o número quando a meta mudar. Antes de ligar, maria roda o backtest: 3 disparos nas últimas 26 semanas. Aceitável. Com limiar em R$ 48 mil (96% da meta) o backtest apontava 14 — barulho garantido.
Erros comuns
| Erro | Por que é erro |
|---|---|
| Ligar o alerta sem backtest | você não sabe se vai receber um aviso por mês ou dez por semana |
| Esperar que o alerta "siga a meta" | alerta ligado a meta é Roadmap; hoje o limiar é absoluto e manual |
| Esperar disparo sem refresh | a avaliação acontece no refresh do painel, não num cron de alerta |
Esperar drop_pct no primeiro refresh | sem snapshot anterior não há base — não dispara |
| Ler o motivo do alerta como causa | ele descreve a medição; causa não |
| Reprocessar o refresh para "forçar" o alerta | a idempotência barra o mesmo snapshot duas vezes |
Estado e gates
A lógica de alerta é coberta por testes determinísticos (avaliação de limiar e percentual, disparo por transição, histórico, backtest fiel à avaliação ao vivo, webhook assinado) — mas o teto do produto é Preview e toda entrega externa é NÃO MEDIDO: o e-mail depende de domínio verificado (gate humano) e o WhatsApp de credencial e template aprovado sob allowlist (gate humano). Alerta ligado a meta cadastrada: Roadmap.
Faça você mesmo#
No workspace de treino Aurora Varejo (abra /dashboards e, depois, /relatorios no console):
- Abra o painel "Vendas por filial" e selecione o visual de Receita (KPI ou linha).
- No botão Alerta, configure Avisar quando
valor <40000 (80% da meta de R$ 50 mil), canalE-mail, destinatáriomaria@example.com. - Se o visual tiver série, escolha a Medida e o Resumir por (
somapara a semana fechada;último pontopara o dia corrente) e explique a diferença. - Rode o backtest da regra e anote quantos disparos ela teria tido no histórico.
- Aperte o limiar para R$ 48 mil, rode o backtest de novo e compare — escolha o limiar que você defenderia.
- Atualize os dados do painel para que a regra seja avaliada; confira o histórico de disparos.
- Atualize os dados de novo sem mudar nada e confirme que o mesmo snapshot não dispara um segundo alerta.
- Em
/relatorios/novo, etapa Analista de IA, adicione um alerta inteligentedrop_pct ≥ 20%com janela mínima de 24 h (se o seu plano permitir) e observe a mensagem do plano quando não permitir.
Atenção: este exercício depende de gate — a entrega real do aviso é gate humano; o que você precisa provar é o disparo, o histórico e o backtest.
Você terminou quando você tiver dois números de backtest para o mesmo alerta (limiar frouxo × limiar apertado) e um disparo registrado no histórico que não se repetiu no refresh seguinte.
Checagem rápida#
Três perguntas no final da aula, corrigidas no servidor. A aula só conta como concluída depois da checagem.
Documentação relacionada#
Capacidades ensinadas#
C08.5 — o selo exibido na aula é sempre o estado mais conservador entre as capacidades citadas; nada aqui é "GA".