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