git-subtree-dir: gerenciador git-subtree-mainline:f4f546c928git-subtree-split:34cc9c75a5
3.2 KiB
Log: seções escondidas por padrão, com clique para abrir
Contexto
A tela /log mostra duas tabelas: "Ações no painel" (histórico de ações do
painel, já limitado aos 20 registros mais recentes) e "Envios automáticos de
chave (n8n)" (log dos envios automáticos de chave via WhatsApp, sem limite).
Como ambas aparecem sempre expandidas, a tela fica grande e atrapalha quando
o usuário só quer olhar rapidamente um dos dois logs.
Objetivo
Cada seção da tela /log deve começar escondida (fechada) ao carregar a
página, exigindo um clique para expandir. Isso facilita, por exemplo, olhar
só o log de envios de chave sem precisar rolar past o log inteiro do painel.
Design
Estrutura: cada seção (Ações no painel e Envios automáticos de chave (n8n)) é envolvida em um elemento <details class="secao-log"> HTML
nativo, fechado por padrão (sem o atributo open). A ordem das seções
não muda: Ações no painel primeiro, Envios automáticos de chave embaixo.
Controles (dois, redundantes, ambos alternam o mesmo estado):
- O título da seção (dentro de
<summary>) é clicável — clicar nele abre/fecha a seção. Uma seta (▸ fechado / ▾ aberto) ao lado do título indica visualmente o estado atual. - Um botão no estilo dos demais botões do painel (
Mostrar/Ocultar) fica ao lado do título, dentro do mesmo<summary>. Como ele está dentro do<summary>, clicar nele já aciona o toggle nativo do<details>— não precisa de lógica de toggle separada. Um script pequeno escuta o eventotogglede cada<details>e só atualiza o texto do botão (Mostrar↔Ocultar) e o atributoaria-expanded, para acessibilidade.
Estado não é persistido: toda vez que a página /log é carregada, as
duas seções começam fechadas — não guarda se o usuário tinha deixado aberta
antes (sem localStorage, sem cookie, sem parâmetro de URL). Simplicidade,
sem necessidade adicional hoje.
Sem mudança de comportamento: os dados carregados por seção (limite de 20 em "Ações no painel", botão "Limpar log" restrito a administradores dentro dessa seção, listagem de envios do n8n) continuam exatamente como estão hoje — só o wrapper de exibição (fechado/aberto) muda.
Fora de escopo
- Lembrar o estado aberto/fechado entre recarregamentos de página.
- Abrir automaticamente alguma seção por padrão (as duas começam fechadas).
- Qualquer mudança nos dados exibidos, na paginação, no limite de 20 ou no botão de limpar log.
Arquivos afetados
app/templates/log.html— envolver cada seção em<details>/<summary>, adicionar o botão Mostrar/Ocultar e a seta indicadora dentro dosummary.app/static/estilo.css— estilo do<details>/<summary>(remoção do marcador padrão do navegador, seta customizada que gira com[open], espaçamento do botão dentro dosummary).- Um pequeno
<script>inline (ou incluído no bloco já existente do template) para sincronizar o texto do botão com o eventotoggle.
Testes
- Teste de router (
tests/test_router_log.py) verificando que a resposta deGET /logcontém os elementos<details>para as duas seções, sem o atributoopen, confirmando que ambas carregam fechadas por padrão.