Observatório de Infrações, melhorias no CicloDados, Contagens, Sinistros Fatais e Vias Inseguras - #165
Open
dvalenca wants to merge 127 commits into
Open
Observatório de Infrações, melhorias no CicloDados, Contagens, Sinistros Fatais e Vias Inseguras#165dvalenca wants to merge 127 commits into
dvalenca wants to merge 127 commits into
Conversation
- Remove normalizações de dados (validos, por_sexo, por_faixa_etaria, por_categoria) que corrompiam dados já no formato correto - Usa display_name do backend para exibir nomes de municípios com acentos e capitalização correta - Remove fallback de mock data (lança erro se API falhar) - Adiciona accent normalization no matching do mapa coroplético - Adiciona ranking e rmr às interfaces de tipo
- Adiciona safeNormalize() para comparar nomes de cidades ignorando acentos (Jaboatão vs JABOATAO) - Aplica nas 3 funções de matching: RMR filter, evolução, perfis - Remove dependência da API externa SAMU_CALLS_PROFILES; agrega dados de perfil (sexo, idade, categoria) localmente somando os anos do intervalo selecionado
- Adiciona tentativa de chamar /v1/calls/profiles quando range é selecionado (selectedEndYear) - Se API falhar, cai no fallback de agregação local - Para ano único, continua usando dados locais (mais rápido)
…ros visível - Usa municipio_samu como id dos cards do ranking para matching correto com selectedCity inicial (RECIFE) - Adiciona selectedCityName (display_name) para exibição amigável - Adiciona getFilterSummary() mostrando cidade + período como subtítulo nas seções Ranking, Evolução e Perfis - Remove texto 'Período selecionado' redundante junto aos botões de ano
…ico e corrige filtro de modo nas causas secundárias
… com série única)
…iciona cards de tipologia no Observatório Cicloviário
…icloviaria, Vias Inseguras)
…filtros por categoria
…ve categorias e tooltip, corrige olho invertido
…ve busca para o mapa
…o por Infrações por classificação com subpáginas clicáveis por categoria
…ets por categoria
… endpoints - Corrige bug do SelectColumnFilter (controlled/uncontrolled switch) - Reordena colunas das tabelas de ruas e infrações com width customizado - Suporte a column.width no componente Table - Ajusta título 'Infrações registradas' dentro da tabela - Corrige endpoint do geojson de /v1/dashboard/geojson para /v1/streets/geojson - Remove colunas excedentes das tabelas de ruas
- layersConf agora usa useMemo com breakpoints calculados via quartis (Q1/Q2/Q3) dos total_violations reais do GeoJSON - interpolate no line-color (amarelo→laranja→vermelho→vinho) e line-width (2px→3px→5px→8px) - mesma gradação aplicada nos mapas principal e por categoria
…sca de ruas - searchStreets: usar GET /v1/streets/search em vez de Nominatim - getStreetDetails: usar GET /v1/streets/:id em vez de mock - getStreetDataSummary: usar GET /v1/streets/:id/data-summary em vez de mock - MapView: ao clicar na sugestao, buscar geometria via getStreetDetails para obter bounds quando indisponivel na busca
- pieMarker: adicionado parametro ringColor (5o), stroke deixa de ser white hardcoded - MapView: constante YEAR_COLORS mapeia 2018→teal, 2021→violet, 2024→purple - MapView: survey_year do ponto usado para obter ringColor - MapView: borda do wrapper div tambem usa a cor do ano + bg-white
- 2021: #7c3aed (violet) → #f97316 (orange) para diferenciar de 2024 - Slider: gradiente com 3 stops (#0d9488, #f97316 50%, #8B5CF6)
…slocamento noroeste
- Remove Marker com CSS transform (translate(-50%, -50%)) que causava deslocamento - Usa Source geojson + Layer circle com raio em pixels calculado do viewport.zoom - Posicionamento preciso via pipeline de renderizacao nativa do mapa
- servers.ts: POINT_CICLO_NEARBY aceita streetId opcional → /nearby?street= - useCicloDadosMap: autoOpenPopup inclui streetId, passado no handleZoomToStreet - MapView: showPointInfo inclui streetId, propagate no autoOpenPopup e PointInfoPopup - PointInfoPopup: usa POINT_CICLO_NEARBY(lat, lng, 200, streetId) - Remove selectedCircles (círculo hachurado redundante) de MapView e AmecicloMap
…dicional do MuralView - LeftSidebar: toggle Map/LayoutGrid acima de Camadas de dados - Route: viewMode e onViewModeChange passados a LeftSidebar - Route: renderiza MuralView quando viewMode === 'mural' - Route: MapView + RightSidebar so renderizam em viewMode === 'map'
… do /v1/nearby - PointData: adicionar interface traffic_tickets (total, by_year, top_violations, vulnerable_violations) - tabs: nova tab Infracoes com icone AlertTriangle - Render: total de infracoes, top violacoes com barra de progresso, infracoes contra ciclistas com Bike icon - Render: grafico SVG de evolucao anual + link para /dados/infracoes
- Evolucao anual movida para logo apos o total, com valores em cima das barras e ano completo embaixo - Periodo do total descrito (ex: 2007 a 2025) - Infracoes contra ciclistas renomeado para Infracoes contra Pedestres e ciclistas - Estado vazio quando total=0: explica que dados sao das top 250 vias
- SVG com width=100% e preserveAspectRatio centralizado - Barras proporcionais preenchendo todo o espaco disponivel
… nao cortar labels
…oPopup - Card com fundo vermelho claro, icone AlertTriangle, total de infracoes - Adicionado ao hasData check para exibicao condicional
…separada - Visao Geral agora inclui coordenadas, via mais proxima, nome popular, distancia e extensao - Tab Localizacao removida do array tabs e do bloco de renderizacao
…ireita - Contagem em text-lg font-bold com localeString e label infracoes embaixo - Mesmo padrao dos cards de top infracoes
… especifica - Cada card agora tem cursor-pointer e onClick que chama setActiveTab - Emergencias→safety, Contagens→counts, Perfis→profile, Infraestrutura/BikePE/Bicicletarios→infrastructure, Infracoes→violations - Card de Infracoes agora usa bg-white como os demais - Icones com cores distintas para cada card (vermelho, azul, verde, roxo, laranja, teal)
…es dos cards - Cada tab agora tem cor propria: Visao Geral azul, Seguranca vermelho, Infraestrutura teal, Contagens verde, Perfil roxo, Infracoes vermelho, Analises azul - Borda inferior e texto da tab ativa seguem a cor do card correspondente na Visao Geral - Icones das abas ativas tambem coloridos
…tagens e Perfil - useEffect auto-expande a contagem mais recente (por data) na tab Contagens - useEffect auto-expande a edicao mais recente (por ano) na tab Perfil - Usa refs separados para controlar se ja expandiu cada secao
…s do early return - useRef e useEffect de auto-expand movidos para antes de 'if (!data && !extraData) return null' - Remove duplicata das hooks que estava apos o early return - Usa 'data' em vez de 'finalData' pois finalData so e definido depois do early return
- useRef colocados junto aos outros useRef no topo do componente - useEffect colocado apos definicao de data, antes de todos os returns (loading, error, no-data) - Garante que todos os hooks sao registrados na mesma ordem em qualquer renderizacao
… PointInfoPopup - Seguranca: link atualizado para /dados/sinistros - Infraestrutura: link para /dados/execucao-cicloviaria - Contagens: link para /dados/contagens - Perfil: link para /dados/perfil - Analises: link para /dados/ciclodados - Infracoes: ja existia link para /dados/infracoes - Todos os links seguem o mesmo padrao visual (teal, ArrowRight)
…veis e faixa etaria ordenada
… ultimo dado na evolucao anual
…tes JSON e melhorias de UI
- parsePageData: use plataforma-cover.jpg as universal fallback for dados pages - dados.index: fallback cover when Strapi cover is null - PointInfoPopup: fix crash when nearest_street is null (outside Recife), show coordinates instead; add 'Dados brutos' copy/download bar - vite.config: use Cloudflare plugin only during build, not dev, fixing SSR fetch to localhost backends - ideciclo routes: remove redundant cover fallbacks
- Move infracoes overview data fetching from SSR to client-side lazy load - Add fetchOverviewClient and infracoesOverviewQueryOptions to queries - Lazy-load InfracoesClientSide component on infracoes page - Fix Tailwind/Maplibre CSS imports to use URL pattern (?url) - Show loading state while overview data loads on client
…tabela - Adiciona gráfico de evolução anual agregado para toda a RMR com tipos de desfecho - NumberCards (ranking RMR) agora reagem ao intervalo de anos selecionado - Tabela 'Lista completa das cidades' agora reflete o período selecionado no título e dados - Corrige subtítulo da evolução por cidade para mostrar apenas o nome da cidade - Adiciona indicador de período nos cards de ranking - Ajusta IS_DEV/STRAPI_DEV para usar variáveis de ambiente
Collaborator
Author
|
Resumo
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
O Observatório de Infrações vai ficar fora por enqunato que estamos finalizando os dados, mas há uma necessidade de atualização da contagem.
Observatório de Infrações de Trânsito (nova página)
CicloDados
Contagens
Sinistros Fatais
Vias Inseguras
Execução Cicloviária
LOA / DOM
Infraestrutura geral