Rewrite README.md, DOCUMENTATION.md, ESTADO_ACTUAL.md and CAMBIOS_SESION.md to accurately document the full-stack architecture, all modules, API endpoints, JWT auth, database schema, and features added in February 2026. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
5.4 KiB
Historial de Cambios - Proyecto GRH
Registro cronologico de cambios significativos realizados al proyecto.
2026-02-09: Actualizacion de documentacion
Resumen
Actualizacion completa de los 4 archivos de documentacion para reflejar el estado real del proyecto.
Archivos Modificados
| Archivo | Cambio |
|---|---|
README.md |
Reescrito completamente: arquitectura full-stack, backend Express, PostgreSQL, todos los modulos, endpoints API, variables de entorno, estructura de directorios actualizada |
DOCUMENTATION.md |
Reescrito completamente: documentacion tecnica con JWT real, todos los endpoints del backend, esquema relacional, hooks, sistema de temas, conectores, guia de desarrollo actualizada |
ESTADO_ACTUAL.md |
Actualizado con todas las funcionalidades implementadas en febrero 2026: Analytics, Conectores, Dark mode, Notificaciones, Auditoria, Upload Panel, historial de correcciones |
CAMBIOS_SESION.md |
Convertido a historial cronologico completo de cambios |
Motivo
La documentacion previa describia una version temprana del proyecto (solo frontend, API externa NocoDB, auth con token simple) y no reflejaba el backend Express propio, JWT con refresh tokens, ni los modulos agregados en febrero 2026.
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.tsxsrc/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 medidoresAnalyticsReportsPage.tsx- Dashboard de reportes y estadisticasAnalyticsServerPage.tsx- Metricas del servidor (CPU, memoria, requests)MapComponents.tsx- Componentes auxiliares del mapa
Seccion Conectores (3 paginas)
SHMetersPage.tsx- Conector para sistema SH-MetersXMetersPage.tsx- Conector para sistema XMetersTTSPage.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 CSVFileDropzone.tsx- Componente de dropzone para archivosResultsDisplay.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:75src/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:
- Validar formato de fecha con regex antes de usarla
- Agregar mapeos de columnas comunes (
device_s/n→serial_number, etc.) - 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