Skip to content

feat(dashboard): merge dev → main (US-06)#85

Merged
lucasbrentano merged 6 commits intomainfrom
dev
Apr 1, 2026
Merged

feat(dashboard): merge dev → main (US-06)#85
lucasbrentano merged 6 commits intomainfrom
dev

Conversation

@lucasbrentano
Copy link
Copy Markdown
Collaborator

Resumo

  • US-06 — Dashboard de Análise: implementação completa com backend (5 endpoints, 24 testes) e frontend (3 abas, gráficos Plotly, KPIs, tabela de bots)
  • Rotas reorganizadas: routes/AppRoutes.tsx centraliza definição de rotas, página 404 dedicada
  • Detalhes completos no PR feat(dashboard): implementar US-06 — Dashboard de Análise #84

Como testar

  • cd backend && pytest — 184 testes passando
  • cd frontend && npx tsc --noEmit — sem erros de tipo
  • Acessar /dashboard — 3 abas funcionando com gráficos e KPIs
  • Acessar URL inexistente — página 404 com botão de volta

lucasbrentano and others added 6 commits April 1, 2026 03:39
chore: sincronizar dev com main
- 5 endpoints: /dashboard/global, /dashboard/video, /dashboard/user,
  /dashboard/bots, /dashboard/criteria-effectiveness
- Schemas Pydantic para request/response de cada endpoint
- Service com agregações SQL batch (sem N+1) e geração de gráficos
  Plotly (donut, bar, timeline, concordância, eficácia por critério)
- Filtro por critério de limpeza (interseção) em global e video
- Tabela de bots paginada com concordância, anotadores e critérios
- Destaques por vídeo (autor mais ativo, mais respostas, mais likes,
  conta mais nova/antiga, média de likes)
- Plotly adicionado ao requirements.txt
- Router registrado no main.py

Co-Authored-By: Claude <noreply@anthropic.com>
- TestGlobalDashboard: KPIs, charts Plotly válidos, filtro por critério,
  agreement rate, banco vazio retorna zeros
- TestVideoDashboard: dados filtrados por vídeo, vídeo inexistente
  retorna zeros, filtro por critério
- TestUserDashboard: dados exclusivos do pesquisador autenticado,
  não expõe dados de outro, status completed/in_progress/not_started
- TestBotComments: concordância, busca por texto
- TestCriteriaEffectiveness: eficácia por critério, filtro por vídeo
- TestSeguranca: nenhum endpoint expõe username de outros pesquisadores

Co-Authored-By: Claude <noreply@anthropic.com>
- DashboardPage com abas: Visão Geral, Por Vídeo, Meu Progresso
- GlobalTab: 7 KPIs (progresso, concordância, pendentes), 6 gráficos
  Plotly (donut, comparativo, timeline, taxa de bots, concordância
  por dataset, eficácia por critério), tabela de bots paginada com
  filtro por critério de limpeza
- VideoTab: dropdown de vídeos, 7 KPIs, destaques (autor mais ativo,
  mais respostas, likes, contas mais nova/antiga), 4 gráficos,
  tabela de bots pré-filtrada por vídeo
- UserTab: 8 KPIs (incluindo humanos), 3 gráficos, tabela de
  progresso por dataset com barra visual e botão "Continuar"
- PlotlyChart genérico com ResizeObserver + ChartCard com título
- AbbreviatedChart: substitui nomes longos por D1/D2 com legenda
- KpiCards com cores contextuais (emerald, red, amber, blue, orange)
- CriteriaFilterBar com checkboxes numérico/comportamental
- BotCommentsTable com colunas Anotadores e Critérios
- api/dashboard.ts e hooks/useDashboard.ts
- plotly.js-dist-min + @types/plotly.js instalados
- Card do dashboard ativado na HomePage

Co-Authored-By: Claude <noreply@anthropic.com>
- Criar routes/AppRoutes.tsx centralizando todas as rotas
- Simplificar App.tsx para usar apenas providers + AppRoutes
- Criar pages/NotFound/NotFoundPage.tsx com mensagem e botão de volta
- Substituir redirect silencioso por página 404 dedicada

Co-Authored-By: Claude <noreply@anthropic.com>
feat(dashboard): implementar US-06 — Dashboard de Análise
@lucasbrentano lucasbrentano enabled auto-merge April 1, 2026 15:45
@lucasbrentano lucasbrentano merged commit 46c72d4 into main Apr 1, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant