Agregar carga masiva de lecturas y corregir manejo de respuestas paginadas

- Implementar carga masiva de lecturas via Excel (backend y frontend)
- Corregir cliente API para manejar respuestas con paginación
- Eliminar referencias a device_id (columna inexistente)
- Cambiar areaName por meterLocation en lecturas
- Actualizar fetchProjects y fetchConcentrators para paginación
- Agregar documentación del estado actual y cambios

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Exteban08
2026-01-23 21:23:41 +00:00
parent c81a18987f
commit ab97987c6a
14 changed files with 1154 additions and 35 deletions

131
CAMBIOS_SESION.md Normal file
View File

@@ -0,0 +1,131 @@
# Cambios Realizados en Esta Sesión
**Fecha:** 2026-01-23
---
## Problema a Resolver
Pantalla en blanco al entrar a "Water Meters" y "Consumo" después de implementar carga masiva de lecturas.
---
## Cambios Realizados
### 1. `src/api/client.ts` (línea ~224-237)
**Cambio:** Modificado `parseResponse` para manejar respuestas con paginación
```typescript
// ANTES:
if ('success' in data) {
if (data.success === false) { throw... }
return data.data as T; // Solo devolvía data.data
}
// DESPUÉS:
if ('success' in data) {
if (data.success === false) { throw... }
// Si hay pagination, devolver objeto completo
if ('pagination' in data) {
return {
data: data.data,
pagination: data.pagination,
} as T;
}
return data.data as T;
}
```
### 2. `src/api/readings.ts`
**Cambios en interface `MeterReading`:**
```typescript
// ELIMINADO:
deviceId: string | null;
areaName: string | null;
// AGREGADO:
meterLocation: string | null;
concentratorId: string;
concentratorName: string;
projectName: string;
```
**Cambios en interface `ReadingFilters`:**
```typescript
// ELIMINADO:
areaName?: string;
// AGREGADO:
concentratorId?: string;
```
**Cambios en interface `ReadingInput`:**
```typescript
// ELIMINADO:
deviceId?: string;
```
**Cambios en función `createReading`:**
```typescript
// ELIMINADO de backendData:
device_id: data.deviceId,
```
### 3. `src/api/projects.ts` (función `fetchProjects`)
**Cambio:** Ahora maneja respuestas paginadas
```typescript
// ANTES:
const response = await apiClient.get<Record<string, unknown>[]>('/api/projects');
return transformArray<Project>(response);
// DESPUÉS:
const response = await apiClient.get<...>('/api/projects');
if (response && typeof response === 'object' && 'data' in response && Array.isArray(response.data)) {
return transformArray<Project>(response.data);
}
return transformArray<Project>(response as Record<string, unknown>[]);
```
### 4. `src/api/concentrators.ts` (función `fetchConcentrators`)
**Cambio:** Mismo patrón que projects.ts para manejar paginación
### 5. `src/pages/consumption/ConsumptionPage.tsx`
**Cambios:**
- Línea ~94: `r.areaName``r.meterLocation` (filtro de búsqueda)
- Línea ~127: `"Área"``"Ubicación"` (header CSV)
- Línea ~132: `r.areaName``r.meterLocation` (datos CSV)
- Línea ~365: `"Área"``"Ubicación"` (header tabla)
- Línea ~428: `reading.areaName``reading.meterLocation` (celda tabla)
### 6. `water-api/src/services/reading.service.ts`
**Cambios previos (ya aplicados):**
- Eliminadas todas las referencias a `device_id` en queries SQL
- La columna `device_id` no existe en la tabla `meter_readings`
---
## Estado de los Servidores
### Backend (puerto 3000) ✅ Funcionando
```bash
curl http://localhost:3000/api/readings?pageSize=1
# Devuelve datos correctamente
```
### Frontend (puerto 5173) ⚠️ Pantalla blanca
- El servidor está corriendo
- Las páginas no renderizan correctamente
- Se necesita revisar la consola del navegador para ver el error específico
---
## Para Debug
1. Abrir http://localhost:5173
2. F12 → Console
3. Navegar a "Water Meters" o "Consumo"
4. Copiar el error de la consola
El error más probable es:
- `Cannot read property 'map' of undefined` - si `transformArray` recibe undefined
- `TypeError: response.data is undefined` - si la respuesta no tiene la estructura esperada