Emergency Plants
Tag: emergency-plants
Descripción: Operaciones para gestión de plantas de emergencia asociadas a servicios de sucursal
1. Crear nueva planta de emergencia (POST /emergency-plants)
Sección titulada «1. Crear nueva planta de emergencia (POST /emergency-plants)»- Descripción: Registra una nueva planta de emergencia en el sistema
- Operation ID:
EmergencyPlantsController_create - Autenticación requerida: 🔒 Sí (ROLE_MAINTENANCE_MANAGER)
Request Body
Sección titulada «Request Body»{ "branchServiceId": 1, "brand": "Cummins", "model": "Diesel 500kVA", "serialNumber": "CMM-2023-001", "capacity": "500", "fuelType": "diesel", "lastMaintenanceDate": "2023-05-01", "nextMaintenanceDate": "2023-11-01", "isActive": true}Responses
Sección titulada «Responses»| Código | Descripción |
|---|---|
| 201 | Planta creada exitosamente |
| 400 | Datos de entrada inválidos |
| 401 | No autorizado |
| 404 | Servicio de sucursal no encontrado |
2. Listar todas las plantas de emergencia (GET /emergency-plants)
Sección titulada «2. Listar todas las plantas de emergencia (GET /emergency-plants)»- Descripción: Obtiene todas las plantas de emergencia con filtros avanzados
- Operation ID:
EmergencyPlantsController_findAll - Autenticación requerida: 🔒 Sí (ROLE_MAINTENANCE_TECH)
Query Parameters
Sección titulada «Query Parameters»| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| page | integer | ❌ No | Número de página (default: 1) |
| limit | integer | ❌ No | Límite por página (default: 20) |
| branchServiceId | integer | ❌ No | Filtrar por ID de servicio |
| brand | string | ❌ No | Filtrar por marca |
| activeOnly | boolean | ❌ No | Filtrar solo activas |
| needsMaintenance | boolean | ❌ No | Filtrar por mantenimiento pendiente |
Responses
Sección titulada «Responses»| Código | Descripción |
|---|---|
| 200 | Lista de plantas obtenida |
| 401 | No autorizado |
3. Obtener planta por ID (GET /emergency-plants/:id)
Sección titulada «3. Obtener planta por ID (GET /emergency-plants/:id)»- Descripción: Obtiene los detalles completos de una planta específica
- Operation ID:
EmergencyPlantsController_findOne - Autenticación requerida: 🔒 Sí (ROLE_MAINTENANCE_TECH)
Path Parameters
Sección titulada «Path Parameters»| Parámetro | Tipo | Descripción |
|---|---|---|
| id | integer | ID de la planta |
Responses
Sección titulada «Responses»| Código | Descripción |
|---|---|
| 200 | Planta obtenida exitosamente |
| 401 | No autorizado |
| 404 | Planta no encontrada |
4. Actualizar planta (PATCH /emergency-plants/:id)
Sección titulada «4. Actualizar planta (PATCH /emergency-plants/:id)»- Descripción: Actualiza los datos de una planta existente
- Operation ID:
EmergencyPlantsController_update - Autenticación requerida: 🔒 Sí (ROLE_MAINTENANCE_MANAGER)
Path Parameters
Sección titulada «Path Parameters»| Parámetro | Tipo | Descripción |
|---|---|---|
| id | integer | ID de la planta |
Request Body
Sección titulada «Request Body»{ "lastMaintenanceDate": "2023-06-15", "nextMaintenanceDate": "2023-12-15", "isActive": true}Responses
Sección titulada «Responses»| Código | Descripción |
|---|---|
| 200 | Planta actualizada exitosamente |
| 400 | Datos de entrada inválidos |
| 401 | No autorizado |
| 404 | Planta no encontrada |
5. Eliminar planta (DELETE /emergency-plants/:id)
Sección titulada «5. Eliminar planta (DELETE /emergency-plants/:id)»- Descripción: Desactiva una planta de emergencia (soft delete)
- Operation ID:
EmergencyPlantsController_remove - Autenticación requerida: 🔒 Sí (ROLE_MAINTENANCE_ADMIN)
Path Parameters
Sección titulada «Path Parameters»| Parámetro | Tipo | Descripción |
|---|---|---|
| id | integer | ID de la planta |
Responses
Sección titulada «Responses»| Código | Descripción |
|---|---|
| 204 | Planta desactivada exitosamente |
| 401 | No autorizado |
| 404 | Planta no encontrada |
6. Registrar prueba de funcionamiento (POST /emergency-plants/:id/tests)
Sección titulada «6. Registrar prueba de funcionamiento (POST /emergency-plants/:id/tests)»- Descripción: Registra una prueba de funcionamiento de la planta
- Operation ID:
EmergencyPlantsController_recordTest - Autenticación requerida: 🔒 Sí (ROLE_MAINTENANCE_TECH)
Path Parameters
Sección titulada «Path Parameters»| Parámetro | Tipo | Descripción |
|---|---|---|
| id | integer | ID de la planta |
Request Body
Sección titulada «Request Body»{ "testDate": "2023-06-01", "durationMinutes": 30, "result": "success", "technician": "John Doe", "notes": "Prueba rutinaria - todo en orden"}Responses
Sección titulada «Responses»| Código | Descripción |
|---|---|
| 201 | Prueba registrada exitosamente |
| 400 | Datos de entrada inválidos |
| 401 | No autorizado |
| 404 | Planta no encontrada |
Resumen de Endpoints de Emergency Plants
Sección titulada «Resumen de Endpoints de Emergency Plants»| Método | Endpoint | Descripción | Permiso Requerido |
|---|---|---|---|
| POST | /emergency-plants | Crear nueva planta | ROLE_MAINTENANCE_MANAGER |
| GET | /emergency-plants | Listar plantas | ROLE_MAINTENANCE_TECH |
| GET | /emergency-plants/:id | Obtener planta por ID | ROLE_MAINTENANCE_TECH |
| PATCH | /emergency-plants/:id | Actualizar planta | ROLE_MAINTENANCE_MANAGER |
| DELETE | /emergency-plants/:id | Desactivar planta | ROLE_MAINTENANCE_ADMIN |
| POST | /emergency-plants/:id/tests | Registrar prueba de funcionamiento | ROLE_MAINTENANCE_TECH |
Modelo de Datos
Sección titulada «Modelo de Datos»interface EmergencyPlant { id: number; branchServiceId: number; brand: string; model: string; serialNumber: string; capacity: number; fuelType: string; installationDate: string; // ISO 8601 lastMaintenanceDate?: string; // ISO 8601 nextMaintenanceDate?: string; // ISO 8601 isActive: boolean; createdAt: string; // ISO 8601 updatedAt: string; // ISO 8601 branchService?: BranchService; // Relación opcional tests?: PlantTest[]; // Relación opcional}
interface PlantTest { id: number; testDate: string; // ISO 8601 durationMinutes: number; result: 'success' | 'failed' | 'partial'; technician: string; notes?: string; plantId: number;}Tipos de Combustible Soportados
Sección titulada «Tipos de Combustible Soportados»| Valor | Descripción |
|---|---|
| diesel | Motor diésel |
| gasoline | Motor a gasolina |
| gas | Motor a gas |
| hybrid | Sistema híbrido |
Ejemplo de Respuesta Completa
Sección titulada «Ejemplo de Respuesta Completa»{ "id": 1, "branchServiceId": 1, "brand": "Cummins", "model": "Diesel 500kVA", "serialNumber": "CMM-2023-001", "capacity": 500, "fuelType": "diesel", "installationDate": "2023-01-15T00:00:00.000Z", "lastMaintenanceDate": "2023-06-15T00:00:00.000Z", "nextMaintenanceDate": "2023-12-15T00:00:00.000Z", "isActive": true, "createdAt": "2023-01-10T14:30:00.000Z", "updatedAt": "2023-06-16T09:15:00.000Z", "branchService": { "id": 1, "serviceType": "emergency_power" }, "tests": [ { "id": 1, "testDate": "2023-06-01T00:00:00.000Z", "durationMinutes": 30, "result": "success", "technician": "John Doe" } ]}Consideraciones de Seguridad
Sección titulada «Consideraciones de Seguridad»-
Control de acceso:
- Diferentes roles para operaciones técnicas vs administrativas
- Validar pertenencia a sucursal para técnicos
-
Datos técnicos:
- Números de serie deben ser únicos en el sistema
- Historial de pruebas debe ser inmutable
-
Notificaciones:
- Alertar cuando se acerque fecha de mantenimiento
- Registrar quién realiza cada prueba
-
Integridad de datos:
- Validar fechas coherentes (instalación < mantenimiento)
- No permitir desactivar plantas con mantenimientos pendientes