Análisis_de_Requerimientos - camilo1691/proyecto_mantenimiento_automotor_bakend GitHub Wiki
5. ANÁLISIS DE REQUERIMIENTOS
5.1 Requerimientos Funcionales (RF)
Los requerimientos funcionales describen las capacidades específicas que el SMPA debe proporcionar, organizados por módulo.
5.1.1 Módulo: Gestión de Flota (Vehículos)
| ID | Requerimiento | Prioridad | Actor(es) |
|---|---|---|---|
| RF-001 | El sistema debe permitir el registro inicial de vehículos con campos: placa, marca, modelo, año, color, número de chasis, número de motor, tipo de combustible, capacidad de tanque | Alta | Administrador, Supervisor |
| RF-002 | El sistema debe permitir adjuntar documentos escaneados: SOAT, Revisión Técnico-Mecánica (RTM), tarjeta de operación, póliza de seguro, con fechas de vencimiento | Alta | Administrador, Supervisor |
| RF-003 | El sistema debe generar alertas automáticas 30, 15 y 7 días antes del vencimiento de documentos legales | Alta | Sistema (automático), Supervisor |
| RF-004 | El sistema debe permitir asignar un conductor principal y un conductor alterno a cada vehículo, con fechas de asignación | Media | Supervisor |
| RF-005 | El sistema debe registrar el kilometraje actual del vehículo, permitiendo actualización manual por supervisor o importación desde app móvil de conductor | Alta | Supervisor, Conductor |
| RF-006 | El sistema debe mostrar el historial médico completo del vehículo: todas las órdenes de trabajo, repuestos cambiados, costos acumulados, tiempo fuera de servicio | Alta | Supervisor, Administrador, Dueño de taxi |
| RF-007 | El sistema debe permitir dar de baja temporal o definitiva un vehículo, registrando motivo y fecha | Media | Administrador |
| RF-008 | El sistema debe permitir consultar vehículos por filtros: placa, marca, estado (activo/baja), conductor asignado, próximo mantenimiento vencido | Media | Supervisor, Administrador |
5.1.2 Módulo: Alertas y Programación Preventiva
| ID | Requerimiento | Prioridad | Actor(es) |
|---|---|---|---|
| RF-009 | El sistema debe permitir configurar parámetros de alerta por tipo de vehículo: kilometraje para cambio de aceite, filtros, frenos, sincronización, etc. | Alta | Administrador |
| RF-010 | El sistema debe calcular automáticamente el próximo mantenimiento preventivo basado en: kilometraje acumulado, fecha último servicio, o condición crítica reportada | Alta | Sistema (automático) |
| RF-011 | El sistema debe enviar notificaciones push a la app móvil del conductor cuando su vehículo esté próximo a un mantenimiento (umbral configurable, ej: 500 km antes) | Alta | Sistema → Conductor |
| RF-012 | El sistema debe enviar alertas por email al supervisor cuando un mantenimiento programado no se haya atendido 200 km después del umbral | Alta | Sistema → Supervisor |
| RF-013 | El sistema debe permitir escalar alertas no atendidas a niveles superiores: coordinador, gerente, según días de retraso | Media | Sistema (automático) |
| RF-014 | El sistema debe mostrar un calendario de mantenimientos programados por día, semana y mes, con vista tipo Gantt | Media | Supervisor, Mecánico |
| RF-015 | El sistema debe permitir reprogramar mantenimientos, registrando motivo de la postergación | Media | Supervisor |
| RF-016 | El sistema debe generar alertas de "código rojo" para condiciones críticas reportadas (frenos, dirección, motor), con notificación inmediata SMS al supervisor | Alta | Sistema → Supervisor |
5.1.3 Módulo: Gestión de Taller y Órdenes de Trabajo
| ID | Requerimiento | Prioridad | Actor(es) |
|---|---|---|---|
| RF-017 | El sistema debe permitir crear órdenes de trabajo (OT) con: vehículo, tipo de mantenimiento (preventivo/correctivo), descripción del servicio, prioridad, taller asignado | Alta | Supervisor |
| RF-018 | El sistema debe asignar automáticamente un número único correlativo a cada OT | Alta | Sistema (automático) |
| RF-019 | El sistema debe permitir al mecánico consultar sus OT asignadas, marcar inicio de trabajo, pausar (registrando motivo), y marcar finalización | Alta | Mecánico |
| RF-020 | El sistema debe permitir registrar mano de obra utilizada: tipo de servicio, horas trabajadas, mecánico responsable | Media | Mecánico, Supervisor |
| RF-021 | El sistema debe permitir agregar repuestos a la OT, seleccionando del inventario o registrando compra de emergencia | Alta | Mecánico, Supervisor |
| RF-022 | El sistema debe calcular automáticamente el costo total de la OT: suma de mano de obra + repuestos + otros insumos | Alta | Sistema (automático) |
| RF-023 | El sistema debe permitir adjuntar hasta 10 fotos por OT (antes, durante, después del servicio) | Media | Mecánico |
| RF-024 | El sistema debe generar acta digital de entrega del vehículo, con firma del mecánico y del conductor (captura de firma en pantalla o PIN de confirmación) | Alta | Mecánico, Conductor |
| RF-025 | El sistema debe permitir consultar estado de OT: pendiente, en proceso, pausada, finalizada, cancelada | Media | Supervisor, Mecánico |
| RF-026 | El sistema debe permitir reabrir una OT finalizada dentro de 24 horas si se detecta falla relacionada | Baja | Supervisor |
5.1.4 Módulo: Aplicación Móvil para Conductores
| ID | Requerimiento | Prioridad | Actor(es) |
|---|---|---|---|
| RF-027 | La app debe permitir autenticación con usuario y contraseña, con opción de mantener sesión activa (30 días) | Alta | Conductor |
| RF-028 | La app debe mostrar dashboard con: vehículo asignado, próximo mantenimiento programado, alertas pendientes, checklist del día | Alta | Conductor |
| RF-029 | La app debe permitir reportar novedades técnicas seleccionando categoría: motor, transmisión, frenos, suspensión, dirección, eléctrico, carrocería, otros | Alta | Conductor |
| RF-030 | La app debe permitir adjuntar hasta 3 fotos por novedad, con geolocalización automática (GPS) y fecha/hora | Alta | Conductor |
| RF-031 | La app debe permitir redactar descripción detallada de la novedad (mínimo 20 caracteres, máximo 500) | Media | Conductor |
| RF-032 | La app debe confirmar envío de novedad y mostrar estado: recibida por supervisor, asignada a taller, en revisión, resuelta | Media | Conductor |
| RF-033 | La app debe permitir validar kilometraje diario: ingreso manual o foto del tacómetro con reconocimiento OCR (opcional fase 2) | Alta | Conductor |
| RF-034 | La app debe obligar a completar checklist de inspección pre-operación antes de iniciar turno: niveles de aceite, refrigerante, líquido de frenos, estado de neumáticos, luces, espejos | Alta | Conductor |
| RF-035 | La app debe funcionar en modo offline: almacenar localmente novedades y checklists, sincronizar automáticamente al recuperar conexión | Alta | Conductor |
| RF-036 | La app debe permitir consultar historial de mantenimientos de su vehículo asignado (últimos 10 servicios) | Media | Conductor |
| RF-037 | La app debe enviar notificaciones push cuando una OT de su vehículo sea finalizada | Media | Sistema → Conductor |
| RF-038 | La app debe estar disponible en Android 8.0+ e iOS 14+, con diseño responsive adaptable a diferentes tamaños de pantalla | Alta | Sistema (técnico) |
5.1.5 Módulo: Control de Inventario y Repuestos
| ID | Requerimiento | Prioridad | Actor(es) |
|---|---|---|---|
| RF-039 | El sistema debe permitir crear catálogo de repuestos con: código interno, código OEM, nombre, descripción, categoría, proveedor principal, precio de referencia | Alta | Administrador, Supervisor |
| RF-040 | El sistema debe permitir gestionar múltiples bodegas/talleres con stock independiente | Media | Supervisor |
| RF-041 | El sistema debe registrar entradas de inventario: cantidad, proveedor, número de factura, fecha, precio unitario | Alta | Supervisor, Área compras |
| RF-042 | El sistema debe registrar salidas de inventario: asignación a OT específica, vehículo destino, cantidad, fecha | Alta | Mecánico, Supervisor |
| RF-043 | El sistema debe calcular stock disponible en tiempo real: entradas - salidas - reservas | Alta | Sistema (automático) |
| RF-044 | El sistema debe permitir configurar stock mínimo y máximo por repuesto y bodega | Media | Administrador |
| RF-045 | El sistema debe generar alerta automática cuando stock esté por debajo del mínimo, sugiriendo cantidad a ordenar | Alta | Sistema → Supervisor, Área compras |
| RF-046 | El sistema debe permitir generar orden de compra en PDF, con datos del proveedor y repuestos requeridos | Media | Supervisor |
| RF-047 | El sistema debe mostrar kardex de movimientos por repuesto: todas las entradas, salidas, fechas, documentos relacionados | Media | Supervisor, Administrador |
| RF-048 | El sistema debe permitir ajustes de inventario por pérdida, daño o vencimiento, registrando motivo y responsable | Media | Supervisor |
5.1.6 Módulo: Portal para Dueños de Taxi
| ID | Requerimiento | Prioridad | Actor(es) |
|---|---|---|---|
| RF-049 | El portal debe permitir registro de dueños de taxi con: nombre, cédula, teléfono, email, contraseña, validación por email | Media | Dueño de taxi (self-service) |
| RF-050 | El portal debe permitir asociar uno o varios vehículos al perfil del dueño (por placa y código de autorización de la empresa) | Alta | Dueño de taxi, Administrador |
| RF-051 | El portal debe mostrar dashboard con: vehículos asociados, estado de cada uno (activo/mantenimiento/baja), próximo mantenimiento, costos del último mes | Alta | Dueño de taxi |
| RF-052 | El portal debe permitir consultar historial completo de mantenimientos por vehículo: fechas, servicios realizados, repuestos cambiados, costos detallados | Alta | Dueño de taxi |
| RF-053 | El portal debe permitir descargar comprobantes de mantenimiento en PDF (facturas de taller, listas de repuestos) | Media | Dueño de taxi |
| RF-054 | El portal debe permitir filtrar información por rango de fechas (último mes, últimos 3 meses, último año, personalizado) | Media | Dueño de taxi |
| RF-055 | El portal debe ser de solo lectura: no permitir modificar datos, solo consultar y descargar | Alta | Sistema (seguridad) |
| RF-056 | El portal debe enviar alertas por email cuando su vehículo entre a mantenimiento o se genere costo superior a umbral configurable | Media | Sistema → Dueño de taxi |
5.1.7 Módulo: Reportes e Inteligencia de Negocios
| ID | Requerimiento | Prioridad | Actor(es) |
|---|---|---|---|
| RF-057 | El sistema debe mostrar dashboard ejecutivo con KPIs: total de vehículos activos, vehículos en mantenimiento hoy, costo total del mes, alertas pendientes | Alta | Administrador, Gerente |
| RF-058 | El sistema debe calcular y mostrar: costo de mantenimiento por vehículo, por kilómetro recorrido, por tipo de servicio (preventivo vs correctivo) | Alta | Administrador, Supervisor |
| RF-059 | El sistema debe generar reporte comparativo de proveedores: costo promedio por servicio, tiempo de entrega, calificación del mecánico | Media | Administrador, Supervisor |
| RF-060 | El sistema debe mostrar indicador de cumplimiento del plan preventivo: % de mantenimientos realizados en fecha vs. reprogramados vs. no realizados | Alta | Gerente, Administrador |
| RF-061 | El sistema debe permitir exportar cualquier reporte a Excel (.xlsx) y PDF | Alta | Todos los perfiles administrativos |
| RF-062 | El sistema debe permitir programar envío automático de reportes por email (diario, semanal, mensual) a destinatarios configurados | Media | Administrador |
| RF-063 | El sistema debe mostrar tendencia de costos de mantenimiento últimos 12 meses en gráfico de líneas | Media | Gerente, Administrador |
| RF-064 | El sistema debe permitir comparar desempeño de vehículos similares (mismo modelo/año) para identificar unidades con costos atípicos | Baja | Administrador, Analista |
5.1.8 Módulo: Administración del Sistema
| ID | Requerimiento | Prioridad | Actor(es) |
|---|---|---|---|
| RF-065 | El sistema debe permitir crear usuarios con datos: nombre, email, teléfono, rol asignado, bodega/taller asignado (si aplica) | Alta | Administrador de sistema |
| RF-066 | El sistema debe soportar roles predefinidos: Administrador, Supervisor, Mecánico, Conductor, Dueño de taxi, cada uno con permisos específicos | Alta | Administrador de sistema |
| RF-067 | El sistema debe permitir configurar permisos granulares: lectura, escritura, eliminación, aprobación, por módulo | Media | Administrador de sistema |
| RF-068 | El sistema debe permitir desactivar usuarios temporalmente o permanentemente, sin eliminar su historial de acciones | Media | Administrador de sistema |
| RF-069 | El sistema debe registrar auditoría completa: qué usuario realizó qué acción, en qué fecha/hora, desde qué IP, qué cambio específico | Alta | Sistema (automático), Administrador de sistema |
| RF-070 | El sistema debe permitir configurar parámetros de negocio: umbrales de alerta de kilometraje, horarios de taller, días de gracia para vencimientos | Alta | Administrador de sistema |
| RF-071 | El sistema debe permitir respaldo manual de base de datos y restauración a punto específico (rollback) | Alta | Administrador de sistema |
| RF-072 | El sistema debe mostrar log de errores del sistema y alertas técnicas al administrador | Media | Administrador de sistema |
5.2 Requerimientos No Funcionales (RNF)
Los requerimientos no funcionales definen las cualidades del sistema: rendimiento, seguridad, usabilidad, etc.
5.2.1 Rendimiento y Escalabilidad
| ID | Requerimiento | Prioridad | Métrica de Validación |
|---|---|---|---|
| RNF-001 | El sistema debe soportar 2,000 vehículos activos y 500 usuarios concurrentes sin degradación | Alta | Tiempo de respuesta < 3 segundos en consultas comunes |
| RNF-002 | El sistema debe permitir escalamiento horizontal hasta 5,000 vehículos sin rediseño arquitectónico | Media | Validación de arquitectura en documento de diseño |
| RNF-003 | La app móvil debe sincronizar datos en menos de 10 segundos con conexión 4G estándar | Alta | Pruebas de campo con 50 conductores piloto |
| RNF-004 | El sistema debe procesar reportes complejos (más de 10,000 registros) en menos de 30 segundos | Media | Pruebas de carga con datos de prueba |
| RNF-005 | El sistema debe mantener disponibilidad del 99.5% (máximo 3.6 horas de inactividad mensual) | Alta | Monitoreo con UptimeRobot o similar |
5.2.2 Seguridad
| ID | Requerimiento | Prioridad | Implementación |
|---|---|---|---|
| RNF-006 | Todas las comunicaciones cliente-servidor deben usar HTTPS con certificado SSL/TLS válido | Alta | Configuración en servidor y CDN |
| RNF-007 | Las contraseñas deben almacenarse encriptadas con bcrypt o algoritmo equivalente (mínimo factor de trabajo 10) | Alta | Implementación en backend |
| RNF-008 | El sistema debe implementar autenticación JWT con expiración de tokens (24 horas para web, 30 días para app móvil con opción de renovación) | Alta | Middleware de autenticación |
| RNF-009 | El sistema debe soportar autenticación multifactor (MFA) para usuarios administrativos (email o SMS) | Media | Integración con Twilio/SendGrid |
| RNF-010 | El sistema debe prevenir ataques comunes: SQL Injection (parametrización de queries), XSS (sanitización de inputs), CSRF (tokens de formulario) | Alta | Revisión de código y pentesting |
| RNF-011 | El sistema debe registrar intentos de acceso fallidos y bloquear cuenta tras 5 intentos fallidos consecutivos (bloqueo 30 minutos) | Alta | Middleware de seguridad |
| RNF-012 | Los datos personales de conductores y dueños deben cumplir Ley 1581 de 2012 (Colombia): consentimiento, finalidad, acceso, rectificación, supresión | Alta | Políticas de privacidad en registro, funciones de exportación/eliminación de datos |
5.2.3 Usabilidad y Accesibilidad
| ID | Requerimiento | Prioridad | Validación |
|---|---|---|---|
| RNF-013 | La interfaz web debe ser responsive: usable en resoluciones desde 1366x768 (laptop) hasta 1920x1080 (desktop) | Alta | Pruebas en Chrome DevTools |
| RNF-014 | La app móvil debe seguir lineamientos de Material Design (Android) y Human Interface Guidelines (iOS) | Media | Revisión de usabilidad con 5 usuarios piloto |
| RNF-015 | El sistema debe proporcionar mensajes de error claros, sin códigos técnicos, sugiriendo acción a tomar | Media | Revisión de copy en interfaz |
| RNF-016 | El tiempo de aprendizaje para un supervisor nuevo debe ser menor a 4 horas (sin manual, solo exploración) | Baja | Test de usabilidad con 3 supervisores nuevos |
| RNF-017 | El sistema debe soportar temas de alto contraste para usuarios con discapacidad visual leve | Baja | Cumplimiento WCAG 2.1 nivel AA |
5.2.4 Disponibilidad y Recuperación
| ID | Requerimiento | Prioridad | Implementación |
|---|---|---|---|
| RNF-018 | El sistema debe realizar respaldo automático de base de datos cada 24 horas (horario de baja demanda: 2:00 AM) | Alta | Cron job en servidor + notificación de éxito/falla |
| RNF-019 | Los respaldos deben almacenarse en ubicación geográfica diferente (región distinta del cloud provider) | Media | Configuración de replicación multi-zona |
| RNF-020 | El sistema debe permitir recuperación ante desastres (RPO máximo 24 horas, RTO máximo 4 horas) | Media | Documento de procedimientos de recuperación |
| RNF-021 | La app móvil debe operar en modo offline: almacenar localmente hasta 30 días de checklists y novedades | Alta | SQLite local + sincronización diferida |
5.2.5 Mantenibilidad y Soporte
| ID | Requerimiento | Prioridad | Implementación |
|---|---|---|---|
| RNF-022 | El código fuente debe seguir estándares de documentación: Javadoc (Java), JSDoc (JavaScript), con cobertura mínima del 80% de métodos públicos | Media | Revisión en pull requests |
| RNF-023 | El sistema debe permitir despliegue de actualizaciones sin downtime (blue-green deployment o rolling update) | Media | Configuración de Docker/Kubernetes |
| RNF-024 | El sistema debe generar logs estructurados (JSON) para monitoreo: errores, advertencias, eventos de negocio críticos | Alta | Integración con ELK Stack o similar |
| RNF-025 | El sistema debe permitir configuración de parámetros sin recompilación: variables de entorno, archivos de propiedades | Alta | Spring Boot Profiles o Quarkus Config |
5.2.6 Compatibilidad
| ID | Requerimiento | Prioridad | Validación |
|---|---|---|---|
| RNF-026 | La web debe funcionar en Chrome 90+, Firefox 88+, Safari 14+, Edge 90+ (últimas 2 versiones principales) | Alta | Pruebas automatizadas con Selenium |
| RNF-027 | La app móvil debe funcionar en Android 8.0+ (API 26) e iOS 14+ | Alta | Pruebas en emuladores y dispositivos físicos |
| RNF-028 | El sistema debe soportar base de datos PostgreSQL 13+ y MySQL 8.0+ (elegir una como primaria, la otra opcional) | Media | Pruebas de compatibilidad en CI/CD |
5.3 Matriz de Trazabilidad Requerimientos-Módulos
| Módulo | Cantidad de RF | Prioridad Alta | Prioridad Media | Prioridad Baja |
|---|---|---|---|---|
| Gestión de Flota | 8 | 5 | 2 | 1 |
| Alertas y Programación | 8 | 5 | 2 | 1 |
| Gestión de Taller | 10 | 6 | 3 | 1 |
| App Móvil Conductores | 12 | 9 | 2 | 1 |
| Control de Inventario | 10 | 5 | 4 | 1 |
| Portal Dueños de Taxi | 8 | 4 | 3 | 1 |
| Reportes y BI | 8 | 4 | 3 | 1 |
| Administración del Sistema | 8 | 6 | 2 | 0 |
| TOTAL | 72 RF | 44 (61%) | 21 (29%) | 7 (10%) |
5.4 Reglas de Negocio (RN)
Reglas que deben cumplirse independientemente de la tecnología:
| ID | Regla de Negocio | Módulo(s) Afectado(s) |
|---|---|---|
| RN-001 | Un vehículo no puede tener dos mantenimientos preventivos del mismo tipo programados para fechas superpuestas | Alertas, Taller |
| RN-002 | Un conductor solo puede estar asignado a un vehículo activo a la vez (no doble asignación) | Gestión de Flota |
| RN-003 | Una orden de trabajo no puede cerrarse sin al menos un servicio registrado o repuesto asignado | Taller |
| RN-004 | El stock de un repuesto no puede ser negativo; si una OT requiere más cantidad de la disponible, debe marcarse como "pendiente de compra" | Inventario, Taller |
| RN-005 | Un dueño de taxi solo puede ver información de vehículos que estén previamente asociados a su perfil con código de autorización | Portal Dueños |
| RN-006 | Las alertas de documentos vencidos deben generarse máximo 30 días antes, nunca después del vencimiento | Alertas |
| RN-007 | El costo de mano de obra se calcula multiplicando horas trabajadas por tarifa del tipo de servicio, definida por el administrador | Taller |
| RN-008 | Los conductores deben completar el checklist diario antes de las 8:00 AM; si no lo hacen, el sistema envía alerta al supervisor | App Móvil, Alertas |
| RN-009 | Las órdenes de trabajo con "código rojo" (seguridad) tienen prioridad máxima y deben aparecer primero en la lista del mecánico | Taller |
| RN-010 | Los reportes financieros solo pueden ser exportados por usuarios con rol de Administrador o Supervisor; Mecánicos y Conductores no tienen acceso | Reportes, Administración |