Relatório técnico do estado atual do módulo HydrologicalNetworks no client (React/Vite).
O módulo já consome a API real para a camada de estações no mapa e o painel de detalhe de cada estação. Os agregados da aba "Visão geral" (gráficos por rede, por país, por variável e histórico de nível) ainda são mockados no front via queryFn com valores fixos — mesmo havendo, em vários casos, endpoint pronto no backend ainda não conectado.
Como funciona: o QueryProvider tem uma queryFn padrão que faz api.get('/' + queryKey[0]). Logo, todo hook que não define queryFn própria bate na API real; os que definem queryFn retornando array fixo (com setTimeout de 500ms) são mock.
| Widget / recurso | Hook | Origem dos dados | Status |
|---|---|---|---|
| Camada de estações no mapa, filtros e lista de cards | useHydroStations |
GET /hydro/stations (GeoJSON) |
API real |
| Painel da estação — metadados | useHydroStationDetail |
GET /hydro/stations/:id |
API real |
| Painel da estação — última observação | useHydroStationLatestObservation |
GET /hydro/stations/:id/latest/observation |
API real |
| Visão geral da estação (composição) | useHydroStation |
compõe detail + latest observation | API real |
| Histórico de precipitação | useHydroStationSeries |
GET /hydro/stations/:id/series/rain/month |
API real |
| Cards de resumo (Total / Seca / Cheia) | useHydrologicalNetworksCount |
GET /hydro/stations/count → só o total; seca e cheia são 0 fixos (MOCKED_STATE_COUNTS) |
Parcial |
| Total de estações por variável (donut) | useHydrologicalNetworksTotalByVariable |
Array fixo no front · backend já tem GET /hydro/stations/count-by-variable |
Mock |
| Estações por tipo de rede (barras) | useHydrologicalNetworksStationsByNetwork |
Array fixo no front · backend já tem GET /hydro/stations/count-by-type |
Mock |
| Distribuição de estações por países (ranking) | useHydrologicalNetworksStationsRanking |
Array fixo no front · backend já tem GET /hydro/territories/:group/stations-ranking |
Mock |
| Histórico do nível médio (seca/cheia) | useHydrologicalNetworksAverageLevelHistory |
Constante DEFAULT_DATA no front · sem endpoint no backend |
Mock |
hydrologicalNetworks.underConstruction.descriptionOrdem dos slots arrastáveis: under-construction → hydro-overview-cards → total-by-variable → stations-by-network → stations-ranking → average-level-history. Abaixo, a reprodução visual de cada slot com seus valores atuais.
Aberta ao selecionar uma estação. Ordem: under-construction → station-overview → precipitation-history. Aqui os dados são reais.
Fora da sidebar, três peças compartilham a mesma fonte real useHydroStations (GET /hydro/stations):
useHydroStationsLayer) — marcadores coloridos por rede, anel pulsante para estados de seca/cheia. API realStationFilters) — chips de rede e de estado da água derivados dinamicamente dos properties de cada feature. API realStationCard) — filtra a FeatureCollection real; trata isLoading/error/retry. API realconfig/hydroStations.ts): Amazônica #2E90FA (ANA) · HYBAM #09BC0F · Qualidade da Água #F65C05 (ANA). Anéis: seca #F4842A, cheia #FF6C7B.Endpoints de hydro existentes na API (controllers NestJS) que o front ainda não consome:
| Endpoint | O que resolveria |
|---|---|
GET /api/hydro/stations/count-by-variable | Substituiria o mock do donut "Total por variável" |
GET /api/hydro/stations/count-by-type | Substituiria o mock de "Estações por tipo de rede" |
GET /api/hydro/territories/:group/stations-ranking | Substituiria o mock do "Ranking por países" |
GET /api/hydro/stations/:id/water-level-permanence | Sem consumidor no front (nenhum hook) |
GET /api/hydro/series/variables | Sem consumidor no front (nenhum hook) |
queryFn fixa); seca/cheia dos cards e o histórico de nível médio ainda dependem de novos endpoints; e 2 endpoints existentes ainda não têm hook no client.client/src/hooks/api/hydrologicalNetworks/*, client/src/pages/Dashboard/Sidebar/Content/modules/HydrologicalNetworks/*, client/src/providers/QueryProvider.tsx, api/src/infra/http/controllers/hydro/*.