PROMPT PARA DISEÑAR Y DESARROLLAR UN SISTEMA WEB DE CONTROL DE MANTENIMIENTO PREVENTIVO Y CORRECTIVO

Actúa como arquitecto de software senior, analista funcional y desarrollador full-stack experto en Laravel, PHP, JavaScript y MariaDB. Necesito que diseñes un sistema web profesional para digitalizar y reemplazar un archivo Excel de control de mantenimiento preventivo llamado "libro.xls".Ademas especialista em mantenimiento mecanicoa en una planta de benefifio de minera  y  un ingeniero experto en costeo profecional 

El sistema debe funcionar en hosting cPanel, debe ser responsive y debe poder usarse correctamente desde celular, tablet y computadora. El sistema debe desarrollarse con Laravel 13, PHP 8.4, JavaScript y MariaDB, además de animacione . todo documento se exporta en Excel y Word , debe tener un cuadro de cofiguraciones  (para añadir  cada lista en caso de que los ítems aumentes o se agreguen nuevos estados , por ultimo  además de poder cambiar el nombre la empresa , el color de aplicacion : claro oscuro , el fondo del login, logo de empresa  ) - no tener ninguna  opciones envevidas (todo debe ser administrable )- debe tener una api para comunicarse con otros sistemas - debe gererara reportes - el menú debe ser en la parte superior  
Toda la base de datos debe esta en español(tablas etc )

las imágenes están en : C:\xampp\htdocs\mto\public\img
-favicon.svg -> para la pagina
-fondo.jpg -> fondo del login
-logo_largo.png -> para los informes 
-logo_cuadrado.png -> para el dashboard








1. CONTEXTO DEL EXCEL BASE (solo es informativo)

El Excel contiene un control de mantenimiento preventivo para una planta, organizado por áreas y equipos. La hoja es  son:

PLAN MANTENIMIENTO


El archivo maneja mantenimiento preventivo basado en condición y mantenimiento preventivo predeterminado, con referencia a la norma europea EN 13306 / UNE-EN 13306:2018.

El Excel usa campos como:

- AREA
- EQUIPO
- CONPONETES
- ITEM
- DESCRIPCION
- FRECUENCIA LUBRICACION
- CODIGO
- CANTIDAD 
- UNIDAD
- ANUAL
- MENSUAL
- QUINCENAL
- SEMESTRAL
- PM 01 - QUINCENAL (360 hrs)
- PM 02 - MENSUAL (720 hrs)
- PM 03 - SEMESTRAL (4320 hrs)
- PM 04 - ANUAL (8640 hrs)
- RESPONSABLES
- OBSERVACIONES
- COSTOS Promedio
- COSTOS Actual



También se usan abreviaturas tipo LILA las cuales deben ser CHecks  :

- L = Limpieza
- I = Inspección
- L = Lubricación
- A = Ajuste

Además, existen mantenimientos predeterminados como cambio de componentes.

Ejemplos de áreas/equipos presentes:

- Molinos de bolas
- Bombas de sello húmedo
- Chancadora cónica / chancado
- Tanques de agitación de lixiviación
- Área de polveo
- Laboratorio metalúrgico
- Área eléctrica

Ejemplos de frecuencias de Mantenimiento Preventivo es :

- Quincenal
- Mensual
- Semestral
- Anual


2. OBJETIVO GENERAL DEL SISTEMA

Crear un sistema web llamado "Sistema de Control de Mantenimiento Preventivo Y Correctivo MEDSURSA" que permita:

- Registrar áreas, sistemas, equipos y componentes.
- Registrar planes maestros de mantenimiento preventivo y correctivo.
- Programar automáticamente actividades de mantenimiento según frecuencia en horas PM.
- Generar órdenes de trabajo preventivas.
- Ejecutar mantenimientos desde celular.
- Registrar responsables, observaciones, costos, evidencias fotográficas y fechas.
- Controlar mantenimientos pendientes, vencidos, ejecutados y reprogramados.
- Importar información inicial desde Excel.
- Exportar reportes a Excel y PDF.
- Visualizar dashboards por área, equipo, responsable, frecuencia, costo y estado (Listado de ordener pendientes ) (10 estadísticas - 10 graficas ) el dashboar debe contener un buscados y varios filtros.

3. REQUISITOS TÉCNICOS OBLIGATORIOS

Stack requerido:

- Backend: Laravel con PHP.
- Base de datos: MariaDB.
- Frontend: Blade, JavaScript, HTML5 y CSS responsive.
- Puede usarse Bootstrap, Tailwind compilado o CSS propio, pero debe funcionar bien en cPanel.
- El sistema debe instalarse en cPanel sin Docker.
- Debe funcionar en subdominio o carpeta dentro de public_html.
- Debe usar archivo .env para conexión a MariaDB.
- Debe incluir migraciones, seeders, modelos, controladores, rutas, vistas y validaciones.
- Debe tener autenticación de usuarios.
- Debe tener roles y permisos.
- Debe tener diseño mobile-first para que los técnicos lo usen desde celular.
- Debe evitar dependencias que requieran procesos permanentes tipo Supervisor si no son indispensables.
- Para tareas programadas, usar Laravel Scheduler ejecutado mediante cron de cPanel.
- Para colas, si se usan, deben ser compatibles con database queue o ejecución simple desde cron.

4. ROLES DEL SISTEMA

Diseña como mínimo estos roles:

Administrador:
- Gestiona usuarios, roles, catálogos, áreas, equipos y configuración general.
- Puede importar Excel.
- Puede editar planes maestros.
- Puede ver todos los reportes.

Jefe de mantenimiento / supervisor:
- Programa mantenimientos.
- Asigna responsables.
- Aprueba, reprograma o cierra órdenes de trabajo.
- Revisa indicadores y reportes.

Técnico:
- Ve sus órdenes asignadas desde celular.
- Registra ejecución, observaciones, evidencias, costos y estado.
- Marca actividades LILA: limpieza, inspección, lubricación y ajuste. (tambien se puede añadir otras actividades)

Almacén / costos:
- Registra repuestos, materiales, consumos y costos.
- Consulta costos por equipo, área y orden de trabajo.

Consulta / auditor:
- Solo visualiza reportes e historial.

5. MÓDULOS FUNCIONALES

Diseña los siguientes módulos:

5.1. Autenticación y usuarios (no usar correos como ingreso )
- Login, logout, 
- Gestión de usuarios.
- Roles y permisos.
- Registro de responsable principal y responsables secundarios.

5.2. Catálogos
- Áreas de planta.
- Sistemas.
- Equipos.
- Componentes.
- Tipos de mantenimiento: preventivo basado en condición, preventivo predeterminado, cambio de componentes, inspección, lubricación, limpieza, ajuste.
- Frecuencias: quincenal, mensual, semestral, anual y combinadas.
- Unidades de medida.
- Estados de orden.
- Responsables.

5.3. Plan maestro de mantenimiento PREVENTIVO  (Cada plan debe poder exportarse en PDF)
Debe permitir crear registros con esta estructura:

- Área
- Sistema
- Equipo
- Ítem
- Descripción de actividad o componente
- Cambio / lubricación
- Componente y código
- Unidad
- Frecuencia
- PM 01 - 360 hrs - Quincenal
- PM 02 - 720 hrs - Mensual
- PM 03 - 4320 hrs - Semestral
- PM 04 - 8640 hrs - Anual
- Tipo de mantenimiento
- Responsable
- Observaciones
- Costo estimado
- Activo/inactivo

Debe permitir filtrar por área, equipo, sistema, frecuencia, responsable y tipo de mantenimiento.


5.3. Plan maestro de mantenimiento CORRECTIVO (Cada plan debe poder exportarse en PDF)

Debe poder crear  planer correctivos 

- Área
- Sistema
- Equipo
- Ítem
- Descripción de actividad o componente
- Cambio / lubricación
- Componente y código
- Unidad
- Frecuencia
- PM 01 - 360 hrs - Quincenal
- PM 02 - 720 hrs - Mensual
- PM 03 - 4320 hrs - Semestral
- PM 04 - 8640 hrs - Anual
- Tipo de mantenimiento
- Responsable
- Observaciones
- Costo estimado
- Activo/inactivo

5.4. Programación automática
El sistema debe generar programación de mantenimiento por:

- Frecuencia calendario: quincenal, mensual, semestral y anual.
- Frecuencia por horas PM: 360, 720, 4320 y 8640 horas.
- Fecha inicial  Y final del plan.
- Responsable  o responsables asignado.

Debe generar órdenes de trabajo preventivas automáticamente y evitar duplicados para la misma actividad, equipo y periodo.

5.5. Órdenes de trabajo PREVENTIVO
Cada orden debe contener:

- Código correlativo automático.
- Área.
- Equipo.
- Sistema.
- Actividades del plan maestro.
- Fecha programada.
- Fecha de inicio.
- Fecha de cierre.
- Estado: pendiente, en proceso, ejecutada, vencida, reprogramada, cancelada.
- Responsable asignado.
- Prioridad.
- Observaciones.
- Evidencias fotográficas.
- Firma (se pondrá una clave que al  colocarla se  pondrá la firma/imagen en el documento).
- Costo de mano de obra, repuestos y otros.

5.5. Órdenes de trabajo CORRECTIVO
Cada orden debe contener:

- Código correlativo automático.
- Área.
- Equipo.
- Sistema.
- Actividades del plan maestro.
- Fecha programada.
- Fecha de inicio.
- Fecha de cierre.
- Estado: pendiente, en proceso, ejecutada, vencida, reprogramada, cancelada.
- Responsable asignado.
- Prioridad.
- Observaciones.
- Evidencias fotográficas.
- - Firma (se pondrá una clave que al  colocarla se  pondrá la firma/imagen en el documento).
- Costo de mano de obra, repuestos y otros.


5.6. Ejecución desde celular
La pantalla móvil del técnico debe permitir:

- Ver órdenes asignadas.
- Buscar por área, equipo o código.
- Abrir checklist de actividades.
- Marcar actividad como realizada/no realizada/no aplica.
- Registrar LILA: limpieza, inspección, lubricación y ajuste.
- Registrar lectura o condición del equipo.
- Subir fotos antes y después.
- Registrar observaciones dictadas o escritas.
- Registrar repuestos utilizados.
- Finalizar orden.

La interfaz debe ser simple, con botones grandes, tarjetas por orden, filtros rápidos y carga rápida en celular.

5.7. Importación desde Excel
Crear un importador para cargar el Excel actual y convertirlo a la estructura de base de datos.

El importador debe:

- Leer las hoja.
- Detectar títulos de equipo.
- Detectar encabezados como ítem, descripción, componente, unidad, frecuencia, PM, responsables, observaciones y costos.
- Normalizar frecuencias.
- Crear áreas, equipos y componentes si no existen.
- Crear registros del plan maestro.
- Generar reporte de errores de importación.
- Permitir descargar un log de importación.

5.8. Reportes y dashboard
Crear dashboard con:

- Total de órdenes del mes.
- Pendientes.
- Ejecutadas.
- Vencidas.
- Reprogramadas.
- Cumplimiento porcentual.
- Costos por área.
- Costos por equipo.
- Mantenimientos por responsable.
- Próximos vencimientos.
- Historial por equipo.
- pudes añadir mas estadísticas  las cuales consideres reevantes 
- añadir 10  graficos  los cuales consideres mas importantes 

-alertas de proximos Ordenes de trabajos  
-listados de las ultimas 20 ordenes que se hicieron y 10 ordenes que estan pendientes  con enlace a la orden para imprimir



Reportes requeridos:

- Plan maestro por área.
- Cronograma mensual.
- Órdenes pendientes.
- Órdenes vencidas.
- Historial de mantenimiento por equipo.
- Costos por área/equipo/responsable.
- Reporte anual de cumplimiento.
- Exportación a Excel y PDF.

5.9. Inventario y costos
Incluir módulo básico para:

- Repuestos.
- Materiales.
- Unidad.
- Stock.
- Cantidad 
- Costo unitario.
- Consumo por orden de trabajo.
- Costo total por orden.
- Costo acumulado por equipo y área.

5.10. Evidencias y archivos
Permitir adjuntar:

- Fotos. optimizadas y comprimidas(menor  1MB)   (puede subirse desde el celular  )
- Documentos PDF.
- Manuales.
- Imágenes de placas de equipo.
- Reportes firmados.

Guardar archivos en storage de Laravel y exponerlos con enlaces seguros.

6. MODELO DE BASE DE DATOS PROPUESTO

Diseña migraciones para las siguientes tablas(en español) como mínimo:

- users
- roles
- permissions
- role_user o model_has_roles si se usa paquete de permisos
- areas
- systems
- equipment
- components
- maintenance_types
- frequencies
- maintenance_plans
- maintenance_plan_items
- work_orders
- work_order_items
- work_order_logs
- work_order_photos
- spare_parts
- inventory_movements
- work_order_costs
- imports
- import_errors
- settings

Campos mínimos(en español) sugeridos:

areas:
- id, name, description, active, timestamps

systems:
- id, area_id, name, description, active, timestamps

equipment:
- id, area_id, system_id, code, name, description, location, active, timestamps

components:
- id, equipment_id, code, name, description, unit, active, timestamps

maintenance_plans:
- id, area_id, system_id, equipment_id, code, name, description, active, timestamps

maintenance_plan_items:
- id, maintenance_plan_id, component_id, item_number, description, change_lubrication, component_code, unit, frequency_id, pm_360, pm_720, pm_4320, pm_8640, maintenance_type_id, responsible_user_id, estimated_cost, observations, active, timestamps

work_orders:
- id, code, area_id, system_id, equipment_id, scheduled_date, start_date, end_date, status, priority, assigned_user_id, created_by, approved_by, closed_by, total_cost, observations, timestamps

work_order_items:
- id, work_order_id, maintenance_plan_item_id, status, l_limpieza, i_inspeccion, l_lubricacion, a_ajuste, condition_reading, observations, executed_at, timestamps

work_order_photos:
- id, work_order_id, work_order_item_id, file_path, photo_type, description, uploaded_by, timestamps

spare_parts:
- id, code, name, unit, stock, min_stock, unit_cost, active, timestamps

inventory_movements:
- id, spare_part_id, work_order_id, movement_type, quantity, unit_cost, total_cost, created_by, timestamps

imports:
- id, file_name, status, total_rows, imported_rows, error_rows, uploaded_by, timestamps

import_errors:
- id, import_id, sheet_name, row_number, message, raw_data, timestamps

7. FLUJOS PRINCIPALES

Flujo 1: Importar Excel inicial
- Administrador sube el archivo Excel.
- Sistema procesa hojas.
- Sistema crea catálogos y plan maestro.
- Sistema muestra resumen de importación.

Flujo 2: Crear programación por frecuencia
- Supervisor selecciona mes/año/quincenal /semestral.
- Sistema genera órdenes preventivas según frecuencia.
- Supervisor revisa y asigna responsables.

Flujo 3: Técnico ejecuta orden desde celular
- Técnico entra al sistema.
- Ve sus órdenes pendientes.
- Abre una orden.
- Marca actividades realizadas.
- Adjunta fotos.
- Agrega observaciones y repuestos.
- Finaliza la orden.

Flujo 4: Cierre y reporte
- Supervisor revisa la orden.
- Aprueba o devuelve para corrección.
- Sistema actualiza indicadores y costos.
- Se puede exportar PDF o Excel.

8. DISEÑO DE INTERFAZ

Solicito que el diseño sea:

- Responsive mobile-first.
- Claro, rápido y simple.
- Con menú lateral en escritorio y menú inferior o hamburguesa en celular.
- Dashboard con tarjetas KPI.
- Tablas con filtros y buscador.
- Formularios cortos y bien agrupados.
- Pantallas móviles tipo tarjetas para técnicos.
- Botones grandes para acciones principales.
- Colores recomendados: azul industrial, gris, blanco y alertas en rojo/amarillo/verde.

Pantallas mínimas:

- Login.
- Dashboard.
- Áreas.
- Equipos.
- Componentes.
- Plan maestro.
- Importar Excel.
- Programación.
- Órdenes de trabajo.
- Mis órdenes móvil.
- Ejecutar orden/checklist.
- Repuestos y costos.
- Reportes.
- Usuarios y roles.
- Configuración.

9. REQUISITOS PARA CPANEL

Diseña el sistema pensando en cPanel:

- Laravel instalado fuera de public_html cuando sea posible.
- public de Laravel apuntando al directorio público del subdominio o public_html.
- Configuración correcta de .htaccess.
- Conexión a MariaDB mediante variables .env.
- Comandos de instalación con Composer.
- Migraciones y seeders.
- Storage link.
- Permisos para storage y bootstrap/cache.
- Cron job de cPanel para Laravel Scheduler.
- Backup automático de base de datos y archivos.
- Manejo de logs sin llenar el hosting.
- Optimización de rutas, vistas y configuración para producción.

10. SEGURIDAD

Incluir:

- Validación en backend y frontend.
- Protección CSRF.
- Autorización por roles.
- Sanitización de entradas.
- Control de archivos permitidos.
- Límite de tamaño de fotos.
- Logs de auditoría para cambios importantes.
- Backups.
- Contraseñas cifradas.
- Sesiones seguras.

11. ENTREGABLES QUE DEBES GENERAR

Genera una propuesta completa que incluya:

A. Análisis funcional del sistema.
B. Arquitectura técnica.
C. Módulos del sistema.
D. Modelo entidad-relación explicado.
E. Migraciones Laravel.
F. Modelos Laravel con relaciones.
G. Controladores principales.
H. Rutas web.
I. Vistas Blade responsive.
J. JavaScript necesario para filtros, checklists y carga móvil.
K. Importador de Excel.
L. Generador de órdenes preventivas.
M. Dashboard y reportes.
N. Roles y permisos.
O. Manual de instalación en cPanel.
P. Recomendaciones para producción.
Q. Estructura de carpetas del proyecto.
R. Plan de pruebas.

12. CRITERIOS DE ACEPTACIÓN

El sistema será aceptado si cumple con lo siguiente:

- Permite digitalizar el Excel completo por áreas, equipos y actividades.
- Permite importar el Excel inicial.
- Permite crear y editar el plan maestro.
- Genera órdenes automáticamente según frecuencia.
- Permite ejecutar órdenes desde celular.
- Registra fotos, observaciones, responsables, costos y fechas.
- Tiene dashboard e indicadores.
- Exporta reportes en Excel y PDF.
- Funciona en hosting cPanel con MariaDB.
- Usa Laravel, PHP, JavaScript y MariaDB.
- Tiene roles, permisos y seguridad básica.
- Es responsive y usable desde celular.

13. INSTRUCCIÓN FINAL PARA LA IA O EQUIPO DESARROLLADOR

Con base en todo lo anterior, diseña el sistema completo paso a paso. Primero entrega el análisis funcional y técnico. Luego entrega la base de datos y migraciones. Después entrega el backend Laravel, las vistas responsive, el importador de Excel, el generador de órdenes y el manual de instalación en cPanel.

No propongas tecnologías que no funcionen en cPanel compartido. Prioriza una solución práctica, mantenible y fácil . El código debe estar organizado, comentado y listo para adaptarse al Excel real de mantenimiento preventivo MEDSURSA 2026.
Ademas debes de Considerara buenas practicas de seguridad
