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 HttpOnly apó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-rotaFuncionalidade
/usuariosCRUD completo de usuários (criar, editar, desativar)
/empresasCadastro e edição de empresas
/gruposGerenciamento de grupos de usuários
/perfisDefinição de perfis de acesso
/permissoesConfiguração de permissões por perfil
/navegacaoConfiguração dos itens do menu lateral
/credenciaisGerenciamento 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

EndpointDados
/api/wmnet/daily-consumptionConsumo diário por meter_id
/api/wmnet/hourly-consumptionConsumo horário
/api/wmnet/monthly-consumptionConsumo mensal
/api/wmnet/get-yearslistLista de anos disponíveis

Datapoints

EndpointDados
/api/ecoapi/datapoints/allTodos os datapoints de um equipamento
/api/ecoapi/datapoints/periodDatapoints por período (data início/fim)
/api/ecoapi/consumptionConsumo geral (diário, horário ou mensal via type)
/api/ecoapi/status-equip-wmnetStatus em tempo real de equipamentos WMNet

Módulo de Equipamentos

Rota: /api/equipamentos
Hook: useEquipamentos(options)

Parâmetros de filtro disponíveis:

ParâmetroTipoDescrição
tipoEquipamentoNomestringFiltra por tipo (ex: “macromedidor”)
companyIdnumberFiltra por empresa
groupIdnumberFiltra por grupo
pagenumberPágina atual (default: 1)
pageSizenumberItens por página (default: 25)
sortstringCampo de ordenação
statusstringStatus 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óduloDescrição
Tipos de EquipamentoCadastro dos tipos disponíveis
MateriaisCategorias e tipos de material
Unidades de MedidaCadastro 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óduloRotaConteú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

O menu lateral é completamente dinâmico:

  1. Cada item de menu é um NavigationItem armazenado no Strapi
  2. Cada item tem permissões associadas (permissions_users[])
  3. useNaviSidebar() busca apenas os itens autorizados para o perfil logado
  4. Ícones são mapeados de string ("Settings") para componente Lucide React
  5. 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
  • SiteHeader expõ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.