Backend (water-api/): - Crear API REST completa con Express + TypeScript - Implementar autenticación JWT con refresh tokens - CRUD completo para: projects, concentrators, meters, gateways, devices, users, roles - Agregar validación con Zod para todas las entidades - Implementar webhooks para The Things Stack (LoRaWAN) - Agregar endpoint de lecturas con filtros y resumen de consumo - Implementar carga masiva de medidores via Excel (.xlsx) Frontend: - Crear cliente HTTP con manejo automático de JWT y refresh - Actualizar todas las APIs para usar nuevo backend - Agregar sistema de autenticación real (login, logout, me) - Agregar selector de tipo (LORA, LoRaWAN, Grandes) en concentradores y medidores - Agregar campo Meter ID en medidores - Crear modal de carga masiva para medidores - Agregar página de consumo con gráficas y filtros - Corregir carga de proyectos independiente de datos existentes Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
23 lines
603 B
TypeScript
23 lines
603 B
TypeScript
import { Router } from 'express';
|
|
import { uploadMeters, downloadMeterTemplate, upload } from '../controllers/bulk-upload.controller';
|
|
import { authenticateToken } from '../middleware/auth.middleware';
|
|
|
|
const router = Router();
|
|
|
|
// All routes require authentication
|
|
router.use(authenticateToken);
|
|
|
|
/**
|
|
* POST /api/bulk-upload/meters
|
|
* Upload Excel file with meters data
|
|
*/
|
|
router.post('/meters', upload.single('file'), uploadMeters);
|
|
|
|
/**
|
|
* GET /api/bulk-upload/meters/template
|
|
* Download Excel template for meters
|
|
*/
|
|
router.get('/meters/template', downloadMeterTemplate);
|
|
|
|
export default router;
|