feat: item 11 do roadmap -- construtor de analytics customizado #62
Loading…
Reference in a new issue
No description provided.
Delete branch "feature/custom-analytics-builder"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Implementa o item 11 do roadmap: construtor de analytics customizado -- o usuario escolhe assunto/metrica/quebra/filtros em vez de um grafico fixo.
Escopo confirmado com o usuario: assuntos Report e Issue (reaproveita
apply_report_filtersja existente), graficos deliberadamente efemeros (nada persiste no backend -- so a ultima configuracao fica no localStorage do navegador, decisao explicita do usuario).GET /api/analytics/custom(novo, emmodules/reporting/-- mesmo modulo que ja tem/api/metrics):subject(report|issue),metric(count, e avg_score so pra report),breakdowne os mesmos filtros que/api/reports//api/issuesja aceitam. Decisao de design: category/severidade so valem como QUEBRA pro assunto Issue (campo proprio, sem ambiguidade) -- pro assunto Report, category/severidade continuam valendo como FILTRO (atravessa pra Issue, comportamento ja existente do ReportList), mas nao como quebra, porque um report com achados de categorias diferentes tornaria a contagem por report vs. por achado ambigua.Frontend: nova pagina
/analytics-customizado, reaproveitando recharts/vocabularios (CATEGORIES/SEVERITIES/STATUSES/etc.) ja existentes. AdicioneihtmlFor/idnos campos do formulario -- ganho real de acessibilidade que aproveitei pra corrigir enquanto construia a tela (o padrao.fieldusado no resto do app so tinha label/input como irmaos, sem associacao).Verificacao: 201 testes de backend (11 novos), 136 de frontend (5 novos), tsc/lint/build/build-storybook OK, walkthrough manual completo contra o banco de dev real (troca de assunto reports/achados, todas as quebras, os 4 tipos de grafico, e persistencia via localStorage confirmada com reload de pagina).