Files
GRH/CAMBIOS_SESION.md
Exteban08 da976b9003 Update all documentation for 3-level roles, organismos, and Histórico
Reflect current project state across all 8 docs: ADMIN/ORGANISMO_OPERADOR/OPERATOR
role hierarchy, scope filtering, organismos_operadores table, Histórico de Tomas
page, new SQL migrations, and updated API endpoints with auth requirements.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 10:44:16 +00:00

8.0 KiB

Historial de Cambios - Proyecto GRH

Registro cronologico de cambios significativos realizados al proyecto.


2026-02-09: Organismos Operadores + Historico de Tomas + Documentacion

Resumen

Implementacion completa del sistema de 3 niveles de roles (ADMIN → ORGANISMO_OPERADOR → OPERATOR), nueva pagina Historico de Tomas, y actualizacion de toda la documentacion.

Nuevas Funcionalidades

Rol ORGANISMO_OPERADOR (8 fases completas)

  • Nueva tabla organismos_operadores con migracion SQL
  • JWT actualizado con campo organismoOperadorId
  • Scope filtering en todos los servicios: meter, reading, project, user, concentrator, notification
  • Utility scope.ts para centralizar logica de filtrado
  • Pagina OrganismosPage.tsx para gestion de organismos (ADMIN only)
  • UsersPage actualizada con campo organismo y filtrado por scope
  • ProjectsPage con campo organismo_operador_id
  • Sidebar con visibilidad de 3 niveles por rol

Historico de Tomas

  • Nueva pagina HistoricoPage.tsx con selector de medidor searchable
  • Busqueda por nombre, serial, ubicacion, cuenta CESPT, clave catastral
  • Tarjeta de informacion del medidor seleccionado
  • Cards de consumo: Actual (diario), Pasado (1er dia mes anterior), Diferencial con tendencia
  • Grafica AreaChart (Recharts) con gradiente y eje Y ajustado al rango de datos
  • Tabla paginada de lecturas (10/20/50 por pagina)
  • Filtros de rango de fechas
  • Exportacion CSV
  • authenticateToken en rutas GET de medidores para scope filtering

Documentacion

  • Actualizacion completa de 8 archivos de documentacion

Archivos Nuevos

Archivo Descripcion
src/pages/OrganismosPage.tsx Pagina CRUD de organismos operadores
src/pages/historico/HistoricoPage.tsx Pagina de historico de tomas
src/api/organismos.ts Cliente API para organismos operadores
water-api/src/services/organismo-operador.service.ts Servicio backend organismos
water-api/src/controllers/organismo-operador.controller.ts Controlador organismos
water-api/src/routes/organismo-operador.routes.ts Rutas organismos
water-api/src/utils/scope.ts Utility de filtrado por scope
water-api/sql/add_organismos_operadores.sql Migracion SQL organismos
water-api/sql/add_user_meter_fields.sql Migracion campos usuario/medidor

Archivos Modificados (28+)

Archivo Cambio
src/App.tsx Agregados tipos "organismos" y "historico" al Page type
src/components/layout/Sidebar.tsx Visibilidad de 3 niveles por rol
src/api/auth.ts Helpers de rol actualizados (organismoOperadorId)
src/api/meters.ts Interfaces MeterReadingFilters, PaginatedMeterReadings, fetchMeterReadings con paginacion
src/api/users.ts Campo organismo_operador_id
src/api/projects.ts Campo organismo_operador_id
src/pages/Home.tsx Filtrado por scope
src/pages/UsersPage.tsx Campo organismo y filtrado
src/pages/projects/ProjectsPage.tsx Campo organismo
src/pages/meters/MetersModal.tsx Campo project_id
water-api/src/types/index.ts organismoOperadorId en tipos
water-api/src/utils/jwt.ts organismoOperadorId en JWT payload
water-api/src/middleware/auth.middleware.ts Extraccion de organismoOperadorId
water-api/src/services/*.ts Scope filtering en todos los servicios
water-api/src/controllers/*.ts requestingUser pass-through
water-api/src/routes/*.ts authenticateToken en rutas GET
water-api/src/validators/*.ts Campos de organismo

2026-02-09: Actualizacion de documentacion (anterior)

Resumen

Actualizacion de los 4 archivos de documentacion principales.

Motivo

La documentacion previa describia una version temprana del proyecto y no reflejaba el backend Express propio ni los modulos agregados.


2026-02-05: Sincronizacion de conectores

Cambio

Cambio de hora de sincronizacion de conectores de 2:00 AM a 9:00 AM.

Archivos Modificados (2)

  • src/pages/conectores/SHMetersPage.tsx
  • src/pages/conectores/XMetersPage.tsx

2026-02-04: Favicon y conectores

Cambios

  • Actualizacion de favicon del sistema
  • Mejoras en la visualizacion de tiempo de ultima conexion en paginas de conectores
  • Agregado plan de implementacion para rol ORGANISMOS_OPERADORES

Archivos Modificados (4+1)

  • Favicon actualizado
  • Paginas de conectores actualizadas
  • PLAN_ORGANISMOS_OPERADORES.md (plan de implementacion)

2026-02-03: Dark mode, Analytics, Conectores y CSV Upload

Resumen

Sesion mayor con multiples funcionalidades nuevas implementadas en una serie de 12 commits.

Nuevas Funcionalidades

Dark Mode Completo

  • Toggle dark/light/system en configuracion
  • Paleta Zinc de Tailwind aplicada a todas las paginas
  • Soporte en tablas, modales, formularios, sidebars
  • Cards de ConsumptionPage y tabla de AuditoriaPage

Seccion Analytics (3 paginas)

  • AnalyticsMapPage.tsx - Mapa Leaflet con ubicaciones de medidores
  • AnalyticsReportsPage.tsx - Dashboard de reportes y estadisticas
  • AnalyticsServerPage.tsx - Metricas del servidor (CPU, memoria, requests)
  • MapComponents.tsx - Componentes auxiliares del mapa

Seccion Conectores (3 paginas)

  • SHMetersPage.tsx - Conector para sistema SH-Meters
  • XMetersPage.tsx - Conector para sistema XMeters
  • TTSPage.tsx - Conector para The Things Stack (LoRaWAN)

Upload Panel (app separada)

  • Nueva aplicacion en upload-panel/ con React + Vite + Tailwind
  • MetersUpload.tsx - Carga de medidores via CSV (upsert)
  • ReadingsUpload.tsx - Carga de lecturas via CSV
  • FileDropzone.tsx - Componente de dropzone para archivos
  • ResultsDisplay.tsx - Visualizacion de resultados

Otros

  • Nuevos tipos de medidor: LORA, LORAWAN, GRANDES CONSUMIDORES
  • Documentacion completa del proyecto (6 archivos)

Archivos Modificados

Aproximadamente 50+ archivos en 12 commits.


2026-01-23: Fix pantalla blanca y carga masiva

Resumen

Correccion de errores criticos que causaban pantalla blanca y mejoras en el sistema de carga masiva.

Problema 1: Pantalla Blanca en Water Meters y Consumo

Sintoma: Al navegar a "Water Meters" o "Consumo", la pagina se quedaba en blanco.

Causa: PostgreSQL devuelve valores DECIMAL como strings (ej: "300.0000"). El codigo llamaba .toFixed() directamente sobre estos strings.

Solucion: Convertir a numero con Number() antes de .toFixed().

Archivos:

  • src/pages/meters/MetersTable.tsx:75
  • src/pages/consumption/ConsumptionPage.tsx:133, 213, 432

Problema 2: Modal de Carga Masiva se Cerraba sin Resultados

Sintoma: El modal se cerraba automaticamente despues de la carga sin mostrar resultados.

Causa: El callback onSuccess cerraba el modal automaticamente.

Solucion: Separar recarga de datos (onSuccess) del cierre del modal (onClose).

Archivo: src/pages/meters/MeterPage.tsx:332-340

Problema 3: Error de Fecha Invalida en Carga Masiva

Sintoma: Error invalid input syntax for type date: "Installed" al subir medidores.

Causa: Columnas con valores como "Installed" o "New_LoRa" se interpretaban como fechas.

Solucion:

  1. Validar formato de fecha con regex antes de usarla
  2. Agregar mapeos de columnas comunes (device_s/nserial_number, etc.)
  3. Normalizar status ("Installed" → ACTIVE, "New_LoRa" → ACTIVE, etc.)

Archivo: water-api/src/services/bulk-upload.service.ts

Archivos Modificados

Archivo Cambio
src/pages/meters/MetersTable.tsx Fix .toFixed() en lastReadingValue
src/pages/consumption/ConsumptionPage.tsx Fix .toFixed() en readingValue y avgReading
src/pages/meters/MeterPage.tsx Fix modal de carga masiva
water-api/src/services/bulk-upload.service.ts Validacion de fechas, mapeos, normalizacion

Verificacion

  • La pagina de Water Meters carga correctamente
  • La pagina de Consumo carga correctamente
  • El modal de carga masiva muestra resultados
  • Errores de carga masiva se muestran claramente
  • Valores como "Installed" no causan error de fecha