Funcionalidades
Visão completa de todas as funcionalidades disponíveis no EcoWeb, organizadas por módulo.
Landing Page (Pública)
Rota: /
Acesso: público (sem autenticação)
- Hero section com apresentação da plataforma
- Contador animado de métricas (clientes, equipamentos, municípios)
- Mapa do Brasil com cobertura de atuação
- Seção de FAQ com accordion
- Efeitos de animação via Framer Motion (
FadeIn,StaggerContainer) - Marquee com logos de parceiros
Autenticação
Rota: /login
Acesso: público
- Formulário de login (email + senha) via
LoginForm(@ecoweb/auth-web) - Background com gradiente adaptado ao tema (claro/escuro)
- Troca de logo baseada no tema atual (
useTheme) - Rate limiting: 10 tentativas por IP em 15 minutos
- Sessão salva em cookies
HttpOnlyapós login bem-sucedido
Dashboard Principal
Rota: /dashboard
Acesso: autenticado
Mapa Interativo
- Renderizado com React Leaflet + ArcGIS / GISWater WMS
- Exibe equipamentos georreferenciados (
equ_lat,equ_long) - Clustering de marcadores para alta densidade
- Popup com detalhes do equipamento ao clicar
- Camadas configuráveis: WMS, WFS, KML, GeoJSON, ArcGIS Feature Service, WMTS
Filtros do Dashboard
- Filtro por empresa (
FilterCompanies) - Filtro por tipo de equipamento, status, grupo (
FilterMapHome) - Filtros armazenados em
MapContext
Cards de Estatísticas
- Cards com totais: equipamentos ativos, inativos, em manutenção
- Dados carregados via
useEquipamentos()+ TanStack Query
Módulo Admin
Rota: /dashboard/(admin)/...
Acesso: perfil administrador
| Sub-rota | Funcionalidade |
|---|---|
/usuarios | CRUD completo de usuários (criar, editar, desativar) |
/empresas | Cadastro e edição de empresas |
/grupos | Gerenciamento de grupos de usuários |
/perfis | Definição de perfis de acesso |
/permissoes | Configuração de permissões por perfil |
/navegacao | Configuração dos itens do menu lateral |
/credenciais | Gerenciamento de credenciais |
Ao editar um usuário via PUT /api/users/[id], os campos groups e role
são removidos automaticamente do payload. Eles devem ser gerenciados via
endpoints dedicados.
Módulo de Telemetria (WMNet / EcoAPI)
Rotas: /dashboard/(gestao-telemetria)/...
Acesso: perfis com permissão de telemetria
Leitura de Consumo
| Endpoint | Dados |
|---|---|
/api/wmnet/daily-consumption | Consumo diário por meter_id |
/api/wmnet/hourly-consumption | Consumo horário |
/api/wmnet/monthly-consumption | Consumo mensal |
/api/wmnet/get-yearslist | Lista de anos disponíveis |
Datapoints
| Endpoint | Dados |
|---|---|
/api/ecoapi/datapoints/all | Todos os datapoints de um equipamento |
/api/ecoapi/datapoints/period | Datapoints por período (data início/fim) |
/api/ecoapi/consumption | Consumo geral (diário, horário ou mensal via type) |
/api/ecoapi/status-equip-wmnet | Status em tempo real de equipamentos WMNet |
Módulo de Equipamentos
Rota: /api/equipamentos
Hook: useEquipamentos(options)
Parâmetros de filtro disponíveis:
| Parâmetro | Tipo | Descrição |
|---|---|---|
tipoEquipamentoNome | string | Filtra por tipo (ex: “macromedidor”) |
companyId | number | Filtra por empresa |
groupId | number | Filtra por grupo |
page | number | Página atual (default: 1) |
pageSize | number | Itens por página (default: 25) |
sort | string | Campo de ordenação |
status | string | Status do equipamento |
Resposta paginada:
{
"data": [ ...equipamentos ],
"meta": {
"pagination": { "page": 1, "pageSize": 25, "pageCount": 4, "total": 100 }
}
}Módulo de Manutenção
Rota: /dashboard/(manutencao)/...
| Sub-módulo | Descrição |
|---|---|
| Tipos de Equipamento | Cadastro dos tipos disponíveis |
| Materiais | Categorias e tipos de material |
| Unidades de Medida | Cadastro de unidades (m³, L/s, etc.) |
Módulo de Monitoramento
Rota: /dashboard/(monitoramento)/...
- Painel de Monitoramento: visão consolidada de todos os pontos monitorados
- Painel de Controle: ações operacionais em tempo real
Módulos de Relatório
| Módulo | Rota | Conteúdo |
|---|---|---|
| Relatório Comercial | (relatorio-comercial) | Indicadores comerciais por período |
| Relatório de Qualidade | (relatorio-qualidade) | Parâmetros de qualidade da água |
| Relatório Operacional | (relatorio_operacional) | Indicadores operacionais de campo |
Navegação Dinâmica
O menu lateral é completamente dinâmico:
- Cada item de menu é um
NavigationItemarmazenado no Strapi - Cada item tem permissões associadas (
permissions_users[]) useNaviSidebar()busca apenas os itens autorizados para o perfil logado- Ícones são mapeados de string (
"Settings") para componente Lucide React - Suporte a hierarquia: itens pai com filhos aninhados
Temas
- Suporte a dark mode, light mode e system
- Gerenciado por
ThemeProvider(@ecoweb/shared-web) - Persistido via
localStorage/ cookie SiteHeaderexpõe o toggle de tema para o usuário
Notificações
- Toasts via Sonner (registrado em
lib/providers.tsx) - Usados nos formulários de CRUD (sucesso, erro, validação)
Sessão Expirando
O SessionExpiryModal (@ecoweb/auth-web) monitora o tempo de expiração do JWT.
Quando o token está próximo do vencimento (isExpiringSoon = true), exibe um modal
perguntando se o usuário quer continuar ou fazer logout.