Estructura de carpeta modulo mantenimiento
NOTAS_IMPORTANTES:
- Dado que el módulo de Mantenimiento está directamente relacionado con las plantas de tratamiento, es más práctico integrarlo en la misma API. Esto facilita el acceso a datos compartidos, reduce la sobrecarga de configuración y evita problemas de comunicación entre servicios. Además, como usas MVC con Node.js, TypeScript y Mongoose, puedes organizar el nuevo módulo en una carpeta separada dentro de la API actual, manteniendo la estructura limpia y modular.
ESTRUCTURAS DE CARPETAS A: OPCIONAL PARA CUANDO CREZCA EL PROYECTO... src/
├── maintenance/
│ ├── controllers/
│ │ ├── MaintenanceController.ts
│ │ ├── EquipmentController.ts
│ │ ├── MaintenancePlanController.ts
│ │ └── EventController.ts
│ ├── models/
│ │ ├── MaintenanceModel.ts
│ │ ├── EquipmentModel.ts
│ │ ├── MaintenancePlanModel.ts
│ │ └── EventModel.ts
│ ├── routes/
│ │ ├── maintenanceRoutes.ts
│ │ ├── equipmentRoutes.ts
│ │ ├── maintenancePlanRoutes.ts
│ │ └── eventRoutes.ts
│ └── index.ts # Archivo opcional para importar/exportar todas las rutas del módulo
├── controllers/
├── models/
├── routes/
├── db/
├── enums/
├── interfaces/
├── middlewares/
└── index.tsEstructura de carpetas B: (ACTUAL)
src/
├── controllers/
│ ├── MaintenanceController.ts
│ ├── EquipmentController.ts
│ ├── MaintenancePlanController.ts
│ └── EventController.ts
├── models/
│ ├── MaintenanceModel.ts
│ ├── EquipmentModel.ts
│ ├── MaintenancePlanModel.ts
│ └── EventModel.ts
├── routes/
│ ├── maintenanceRoutes.ts
│ ├── equipmentRoutes.ts
│ ├── maintenancePlanRoutes.ts
│ └── eventRoutes.tsDISEÑANDO MODELO - PLAN DE MANTENIMIENTO
let maintenancePlan = [
{
nombre: string, //REQUERIDO, MINIMO 5 CARACTERES, MAXIMO 100 CARACTERES, NO SE PERMITEN CARACTERES ESPECIALES
listadoActividades: [ //PUEDO AGREGAR TANTAS ACTIVIDADES COMO YO QUIERA, REQUERIDO, MINIMO 10 CARACTERES, MAXIMO 500 CARACTERES
{
titulo: string,
descripcion: string,
status: string // en proceso, terminada
}
],
tipo: string, // [preventivo o correctivo] - REQUERIDO
grupo: string // [ asignación de grupos ] - LISTA DE TODOS LOS LOS GRUPOS DE EQUIPOS EN EL SISTEMA - LISTA DESPLEGABLE CON TODOS LOS EQUIPOS DISPONIBLES EN EL SISTEMA. [ REQUERIDO ]
prioridad: string, // alta,media, baja - REQUERIDO
frecuenciaMantenimiento: string, // diario,semanal,anual [ OPCIONAL ]
}
]Informe de pruebas:
Estas pruebas se realizon para validar el funcionamiento de creación de equipos
- Se creo una planta [ PLANTA 07-11-2024 A] con 4 equipos. Se valido que no dejara crear la planta si los equipos a agregar ya existen y se envio un status code con un mensaje: El equipo o equipos NOMBRE O SERIAL ya existe
- Se inactivaron todos los equipos de la planta que se creo en el punto anterior desde el módulo de mantenimiento. Se valido que los equipos se inactivaran tambien en la planta a la que pertenecen. Se valido que al entrar a la vista mis plantas se pudieran visualizar de forma correcta los equipos que se inactivaron...
- Al editar un planta si el usuario quiere ingresar un equipo que ya existe se envia un mensaje de error indicando que el equipo ya estar registrado
- Al editar una planta se agregan 2 equipos una bomba y un filtro, el push se hace de forma exitosa y el equipo tambien se guarda en su propia colección equipment en mantenimiento.
Modulo - mantenimiento equipos (PRUEBAS EN PRODUCCIÓN)
SET PRUEBAS
Se crea una planta llamada PLANTA 8 NOV 2024 A. Con dos equipos uno con categoria filtro - FILTRO 10 Y bomba - BOMBA 10. Se valida que el software no deje crear la planta ni los equipos en mantenimiento porque ambos equipos ya existen. Se envia un mensaje de error indicando al usuario que ambos equipos ya existen.

Error al crear un equipo que ya existeEn la plata PLANTA 8 NOV 2024 A se crean 4 equipos 2 filtros (PENTAIR TRITON II y HAYWARD PRO SERIE) y dos bombas (SER-1234-BP y BP-7890-WQ) - El flujo funciona de forma correcta.
Editamos la planta PLANTA 8 NOV 2024 A - sección equipos (FILTRO - PENTAIR TRITON II) Cambiamos altura de 4 a 8, vida util de 4 a 45, proveedor de XXX a MMCONTROL S.A.S, el manual de usuario cambiamos un pdf con el texto: corrigiendo error cloudinary por un pdf: Fake PDF- El cambio se hizo efectivo en plantas y en mantenimiento equipos...

Planta antes de actualizar
Planta actualizada
Equipo actualizado en mantenimientoEditamos la planta PLANTA 8 NOV 2024 A - validamos que no se pueda ingresar equipos que ya existan.

No se permiten ingresar equipos que ya existanEditamos la planta PLANTA 8 NOV 2024 A - agregamos dos equipos un filtro - Evoqua Vantage PTI y una bomba - VTX-9907-KQ34

Confirmación de que los equipos se agregaron de forma exitosaValidamos que en mantenimiento se hayan guardado los dos equipos que se agregaron desde plantas.

Confirmación de que el equipo se guardo en mantenimientoValidamos que en mantenimiento se hayan guardado los dos equipos que se agregaron desde plantas.

Confirmación de que el equipo se guardo en mantenimientoSe inactivan los equipos Evoqua Vantage PTI y VTX-9907-KQ34 desde mantenimiento

Equipos antes de inactivar
Equipos despues de inactivarValidamos que el equipo se inactive en plantas - RECOMENDACIÓN: En la vista mis plantas deberia colocarse una bolita de color verde o rojo que informe el status del equipo: activo, inactivo, fuera de servicio, etc...

Confirmación equipo inactivado en plantasNotas:Se formateo la data en backend en el endpoint listar equipos por ID de planta y listar equipos por categoria...
- El plan de mantenimiento correctivo no debe llevar el campo frecuency
- Existe el modelo Equipment pero no se esta usando como tal
equipment.save.Se esta usandoEquipment.insertMany(equipments)y este proceso de guardado se hace de forma automatica cuando se guarda un planta de tratamiento. Mientras se crea una planta de tratamiento se extraen los equipos se guardan en un variable y esos equipos son los que se le pasan alMétodo - insertMany
NOTAS_IMPORTANTES
- Los siguientes endpoints en equipos no se utilizan (En un principio si pero despues de reunirnos y realizar un revisión por parte de la directora del proyecto) se llego a la conclusión de que no se debe usar. Porque la inactivación de los equipos debe hacerse desde plantas y en cuanto al tema de los filtros desde mantenimiento el filtro debe funcionar filtrando por id de una planta y por la categoria las dos a la vez...
/equipment-by-category/:category - [ GET ]- Filtrar por categoria: filtros o bombas/equipment-change-status/:id - [ PUT ]- Inactivar un equipos/equipment-by-plant/:plantId - [ PUT ]- Filtrar equipos por id de planta
- El endpoint que permite inactivar un equipo desde plantas es:
/deactivate-equipment/:plantId/equipments - [ PUT ]el endpoint se creo en plantas al igual que su controller porque la inactivación se hace es desde plantas.NOTAS:Hay que establecer en que punto de la interfaz gráfica se va a realizar la inactivación... - Cuando se editan los equipos de una planta se puede agregar tantos equipos como yo considere...
Grabaciones importantes sobre plan de mantenimiento y reportes
- Se crearon dos grabaciones importantes sobre el módulo mantenimiento: 2024-10-03 14-11-31.ModuloInventario (ambas estan en el drive de la cuenta nlopez.treea)
Grabación: TareasAusenciaJeimy_IIinvestigar como hacer un calendario con frecuencia claras (Recurrencias, periodicidades)- Grabación-TestDeJarrasExplicación_A (2024-04-26 15:07 GMT): Explicación completa de test de jarras
- **Grabación_Reportes_Piscinas (2024-04-30) - Explicación de los reportes
- **Grabación_Reportes_Piscinas_II (2024-05-03) - Explicación de los reportes II