Nesta aula
Painel que leva a uma ação.
Um painel bom não é o que tem mais gráficos. É o que leva alguém a agir. Aqui você monta um painel com Streamlit, uma biblioteca de Python que transforma um script em página web. A IA ajuda em três lugares, mas a decisão continua com uma pessoa.
- Dar a cada gráfico uma pergunta e uma ação
- Entender como o Streamlit usa cache e estado
- Publicar atrás de login, sem expor dados
Pergunta, ação e comparação
Cada elemento do painel precisa responder a uma pergunta e disparar uma ação. Se não dispara nada, sai da tela. "Quantos itens aguardam uma pessoa há mais de 24 horas?" dispara "realocar alguém". "Quantos e-mails entraram esta semana?" sozinho não dispara nada.
Todo número precisa de comparação: o período anterior, uma meta ou a mediana das últimas semanas. Um número solto é decoração.
Streamlit: o script roda de novo
A cada clique num filtro, o script inteiro roda de novo, de cima a baixo. Por isso, o que é caro de calcular precisa de cache, uma memória guardada entre as execuções. Todo cache deve ter prazo de validade, o ttl. Sem ele, uma consulta antiga pode ficar na tela por horas.
O que cada pessoa escolheu, como o período, mora em st.session_state. Cada aba tem a sua sessão. O erro comum é guardar a escolha numa variável global: ela é compartilhada por todos, e a tela de uma pessoa muda a de outra.
Dados só para leitura
O painel lê a fila e nunca escreve nela. No SQLite, abra o banco com um endereço terminado em mode=ro. Qualquer tentativa de escrita falha, e um bug no painel não corrompe a fila. A consulta traz só as colunas que a tela usa: o texto do e-mail, com dado pessoal, nem chega ao painel.
A fila grava a hora em UTC, e o painel mostra o horário de Brasília. Sem converter antes de agrupar, os itens das 21h às 23h59 caem no dia seguinte.
A IA em três lugares
A IA nunca soma, conta ou decide sozinha. O código calcula o que é exato.
- As colunas: categoria e confiança foram gravadas pela triagem. O painel só agrega.
- A explicação: o código calcula os totais, e a IA escreve um texto curto a partir deles. O código confere se cada número citado existe na entrada. Sem causas inventadas: quando não sabe, a IA faz perguntas.
- O alerta: uma regra simples compara cada dia com a mediana dos 28 anteriores. Se o desvio passa de três, o dia é marcado, e a pessoa decide se é incidente ou dado errado.
Coisa de profissional
Fazer login não é ter permissão. A documentação do Streamlit diz que o OpenID Connect suporta autenticação, mas não autorização. Ou seja: a conta do Google prova quem é a pessoa, mas quem decide quem pode ver o painel é a sua lista de e-mails permitidos. Quem publica painel de verdade monta as quatro camadas: servidor escutando só no endereço local, proxy com HTTPS na frente, login e lista de permitidos. Pular a última deixa os dados abertos para qualquer pessoa com uma conta.
LGPD: mostre só o agregado
Um painel com dados de e-mails de clientes trata dado pessoal, mesmo sem nome. Uma linha como "reembolso de 1.200 reais em 14/10" pode identificar alguém. Mostre contagens, taxas e medianas. O detalhe por item fica só com quem atende.
Cuidado
O arquivo de segredos, com a chave da API e o segredo do login, nunca vai para o repositório. Coloque-o no .gitignore. Se um segredo vazou, troque-o na hora.
Prática · 5 min
- Liste os elementos do seu painel e escreva a pergunta e a ação de cada um. Apague os que ficaram sem ação.
- Escreva o título de cada gráfico como pergunta e leia em voz alta para alguém de fora.
- Escolha um número e defina a comparação dele.
Resumo
- Sem pergunta e sem ação, o gráfico sai.
- Cache com prazo; escolhas na sessão, nunca em variável global.
- Painel só lê, e mostra o agregado.
- Login mostra quem é; a lista de permitidos diz quem entra.
Fontes
Lidas em 30 de outubro de 2026.
- Streamlit. Authentication and personalization: o OIDC e a autorização.
- Streamlit. Caching overview: cache de dados e ttl.
- Streamlit. Session State.
Quiz da aula
Três situações para aplicar o que viu.
Isaque Victor cursos gratuitos