14 KiB
_MAP: MAE-015 - Activos, Maquinaria y Mantenimiento
Épica: MAE-015 Nombre: Activos, Maquinaria y Mantenimiento Fase: 2 - Enterprise Básico Presupuesto: $40,000 MXN Story Points: 70 SP Estado: 📝 A crear Sprint: Sprint 8-9 (Semanas 15-18) Última actualización: 2025-11-17 Prioridad: P1
📋 Propósito
Gestión completa de activos fijos, maquinaria pesada, equipo y vehículos con control de mantenimiento:
- Catálogo de activos (maquinaria pesada, equipo, vehículos)
- Control de ubicación y asignación por obra
- Mantenimiento preventivo y correctivo programado
- Órdenes de trabajo de mantenimiento
- Costeo TCO (Total Cost of Ownership)
- Localización GPS en tiempo real (IoT opcional)
Integración clave: Se vincula con Proyectos (MAI-002), Finanzas (MAE-014), Compras (MAI-004) y RRHH (MAI-007).
📁 Contenido
Requerimientos Funcionales (Estimados: 6)
| ID | Título | Estado |
|---|---|---|
| RF-AST-001 | Catálogo de activos y registro | 📝 A crear |
| RF-AST-002 | Control de ubicación y asignación a obras | 📝 A crear |
| RF-AST-003 | Mantenimiento preventivo programado | 📝 A crear |
| RF-AST-004 | Órdenes de trabajo de mantenimiento correctivo | 📝 A crear |
| RF-AST-005 | Costeo por hora y TCO | 📝 A crear |
| RF-AST-006 | Rastreo GPS y telemetría (IoT) | 📝 A crear |
Especificaciones Técnicas (Estimadas: 6)
| ID | Título | RF | Estado |
|---|---|---|---|
| ET-AST-001 | Modelo de datos de activos y deprecación | RF-AST-001 | 📝 A crear |
| ET-AST-002 | Sistema de transferencias y asignaciones | RF-AST-002 | 📝 A crear |
| ET-AST-003 | Motor de programación de mantenimientos | RF-AST-003 | 📝 A crear |
| ET-AST-004 | Sistema de órdenes de trabajo | RF-AST-004 | 📝 A crear |
| ET-AST-005 | Cálculo de TCO y costeo | RF-AST-005 | 📝 A crear |
| ET-AST-006 | Integración con dispositivos GPS/IoT | RF-AST-006 | 📝 A crear |
Historias de Usuario (Estimadas: 14)
| ID | Título | SP | Estado |
|---|---|---|---|
| US-AST-001 | Registrar activo nuevo (maquinaria/vehículo) | 5 | 📝 A crear |
| US-AST-002 | Asignar activo a obra | 5 | 📝 A crear |
| US-AST-003 | Transferir activo entre obras | 5 | 📝 A crear |
| US-AST-004 | Configurar plan de mantenimiento preventivo | 5 | 📝 A crear |
| US-AST-005 | Generar orden de mantenimiento automática | 5 | 📝 A crear |
| US-AST-006 | Crear orden de trabajo correctivo | 5 | 📝 A crear |
| US-AST-007 | Ejecutar checklist de mantenimiento | 5 | 📝 A crear |
| US-AST-008 | Registrar costo de mantenimiento | 5 | 📝 A crear |
| US-AST-009 | Calcular costo por hora de uso | 5 | 📝 A crear |
| US-AST-010 | Calcular TCO de activo | 5 | 📝 A crear |
| US-AST-011 | Rastrear ubicación GPS de activo | 5 | 📝 A crear |
| US-AST-012 | Dashboard de activos y disponibilidad | 5 | 📝 A crear |
| US-AST-013 | Reporte de utilización de activos | 5 | 📝 A crear |
| US-AST-014 | Alertas de mantenimiento vencido | 5 | 📝 A crear |
Total Story Points: 70 SP
Implementación
📊 Inventarios de trazabilidad:
- TRACEABILITY.yml - Matriz completa de trazabilidad
- DATABASE.yml - Objetos de base de datos
- BACKEND.yml - Módulos backend
- FRONTEND.yml - Componentes frontend
Pruebas
📋 Documentación de testing:
- TEST-PLAN.md - Plan de pruebas
- TEST-CASES.md - Casos de prueba
🔗 Referencias
- README: README.md - Descripción detallada de la épica
- Fase 2: ../README.md - Información de la fase completa
- Módulo relacionado MVP: Módulo 15 - Activos y Maquinaria (MVP-APP.md)
📊 Métricas
| Métrica | Valor |
|---|---|
| Presupuesto estimado | $40,000 MXN |
| Story Points estimados | 70 SP |
| Duración estimada | 14 días |
| Reutilización GAMILIT | 10% (funcionalidad nueva) |
| RF a implementar | 6/6 |
| ET a implementar | 6/6 |
| US a completar | 14/14 |
🎯 Módulos Afectados
Base de Datos
- Schema:
assets - Tablas principales:
assets- Catálogo de activosasset_assignments- Asignaciones a obrasmaintenance_plans- Planes de mantenimientomaintenance_schedules- Programación de mantenimientoswork_orders- Órdenes de trabajomaintenance_history- Historial de mantenimientosasset_costs- Costos de operación y mantenimientoasset_locations- Ubicaciones GPS (histórico)
- ENUMs:
asset_type(heavy_machinery, light_equipment, vehicle, tool)asset_status(active, in_maintenance, inactive, retired)maintenance_type(preventive, corrective, predictive)work_order_status(scheduled, in_progress, completed, cancelled)
Backend
- Módulo:
assets - Path:
apps/backend/src/modules/assets/ - Services: AssetService, MaintenanceService, WorkOrderService, CostingService, GPSTrackingService
- Controllers: AssetController, MaintenanceController, WorkOrderController
- Middlewares: AssetAccessGuard, MaintenanceSchedulerJob
Frontend
- Features:
assets,maintenance - Path:
apps/frontend/src/features/assets/ - Componentes:
- AssetCatalog
- AssetForm
- AssetDetail
- AssignmentManager
- MaintenancePlanConfig
- WorkOrderList
- WorkOrderForm
- MaintenanceChecklistExecutor
- TCOCalculator
- AssetLocationMap
- AssetDashboard
- UtilizationReport
- Stores: assetStore, maintenanceStore, workOrderStore
🚜 Tipos de Activos
| Categoría | Ejemplos | Costo típico | Vida útil | Mantenimiento |
|---|---|---|---|---|
| Maquinaria pesada | Excavadoras, retroexcavadoras, grúas, revolvedoras | $500K-$2M | 10-15 años | Intensivo |
| Equipo ligero | Vibradores, cortadoras, compactadoras, andamios | $10K-$100K | 5-8 años | Moderado |
| Vehículos | Camiones, camionetas, pick-ups | $300K-$800K | 8-10 años | Regular |
| Herramienta especializada | Equipo topográfico, equipos eléctricos | $5K-$50K | 3-5 años | Bajo |
📋 Ficha de Activo
asset:
id: "AST-001"
code: "EXC-001"
name: "Excavadora Caterpillar 320D"
type: "heavy_machinery"
category: "Excavadoras"
status: "active"
acquisition:
purchase_date: "2023-05-15"
purchase_price: 1500000.00 # $1.5M MXN
supplier: "Maquinaria del Bajío SA"
invoice: "FAC-2023-5678"
financing: "own" # own, leased, rented
specifications:
brand: "Caterpillar"
model: "320D"
year: 2023
serial_number: "CAT320D2023001234"
engine: "Diesel C6.6"
capacity: "20 toneladas"
hours_rated: 10000 # Horas útiles estimadas
accounting:
asset_account: "1201-001" # Cuenta contable
depreciation_method: "straight_line" # Línea recta
useful_life_years: 10
salvage_value: 300000.00 # Valor de rescate
accumulated_depreciation: 225000.00 # $225K (18 meses)
book_value: 1275000.00 # $1.275M
current_assignment:
project_id: "PROJ-001"
location: "Fraccionamiento Los Pinos - Etapa 1"
assigned_date: "2025-10-01"
assigned_to_operator: "OP-045" # Operador
usage:
hours_worked: 1800 # Horas acumuladas
last_usage_date: "2025-11-17"
avg_hours_per_month: 100
maintenance:
last_preventive: "2025-10-15"
next_preventive: "2025-12-15" # Cada 200 horas
maintenance_plan_id: "PLAN-EXC-001"
hours_since_maintenance: 180
🔧 Mantenimiento Preventivo
Plan de Mantenimiento
Activo: Excavadora CAT 320D Código: PLAN-EXC-001
| Actividad | Frecuencia | Última | Próxima | Responsable |
|---|---|---|---|---|
| Cambio de aceite motor | 250 hrs | 1750 hrs | 2000 hrs | Mecánico |
| Cambio de filtros | 250 hrs | 1750 hrs | 2000 hrs | Mecánico |
| Revisión de orugas | 500 hrs | 1500 hrs | 2000 hrs | Mecánico |
| Lubricación general | 100 hrs | 1700 hrs | 1800 hrs | 🔴 Vencido |
| Inspección hidráulica | 1000 hrs | 1000 hrs | 2000 hrs | Mecánico |
Alertas:
- 🔴 Lubricación general vencida (1800 hrs alcanzadas)
- 🟡 Cambio de aceite próximo (faltan 20 horas)
Checklist de Mantenimiento
Orden de trabajo: WO-2025-123 Actividad: Mantenimiento preventivo 2000 horas Activo: EXC-001 - Excavadora CAT 320D Fecha: 2025-11-20
checklist:
- task: "Drenar aceite de motor"
completed: true
technician: "Juan Pérez"
time: "09:00"
- task: "Reemplazar filtro de aceite"
completed: true
part_used: "Filtro CAT 1R-0750"
quantity: 1
- task: "Llenar con aceite nuevo (25 litros)"
completed: true
part_used: "Aceite CAT 15W-40"
quantity: 25
- task: "Cambiar filtro de combustible"
completed: true
part_used: "Filtro CAT 1R-0749"
- task: "Cambiar filtro de aire"
completed: true
part_used: "Filtro CAT 6I-2503"
- task: "Lubricación de pivotes"
completed: true
notes: "Aplicados 10 puntos de grasa"
- task: "Inspección de orugas (tensión, desgaste)"
completed: true
notes: "Tensión OK, desgaste 40%, reemplazar en 3000 hrs"
- task: "Revisión de mangueras hidráulicas"
completed: true
notes: "Todas en buen estado"
- task: "Prueba de funcionamiento"
completed: true
notes: "Operación normal, sin ruidos anormales"
totals:
hours_worked: 3.5
parts_cost: 4500.00 # MXN
labor_cost: 1200.00 # MXN
total_cost: 5700.00 # MXN
💵 Costeo de Activos
Costo por Hora de Uso
Fórmula:
Costo/hora = (Depreciación + Mantenimiento + Combustible + Operador + Seguro) / Horas trabajadas
Ejemplo: Excavadora CAT 320D
| Concepto | Costo anual | Horas/año | Costo/hora |
|---|---|---|---|
| Depreciación | $120,000 | 1,200 | $100.00 |
| Mantenimiento | $36,000 | 1,200 | $30.00 |
| Combustible | $60,000 | 1,200 | $50.00 |
| Operador | $180,000 | 1,200 | $150.00 |
| Seguro | $24,000 | 1,200 | $20.00 |
| TOTAL | $420,000 | 1,200 | $350.00/hr |
Imputación a proyecto:
usage_record:
asset_id: "AST-001"
project_id: "PROJ-001"
date: "2025-11-17"
hours_worked: 8
cost_per_hour: 350.00
total_cost: 2800.00 # 8 hrs × $350
charged_to_account: "5104-001" # Maquinaria y equipo
cost_center: "Obra A - Excavación"
TCO (Total Cost of Ownership)
Análisis de TCO - 5 años
Activo: Excavadora CAT 320D
| Año | Depreciación | Mantenimiento | Combustible | Operador | Seguro | Total |
|---|---|---|---|---|---|---|
| 1 | $120,000 | $24,000 | $60,000 | $180,000 | $24,000 | $408,000 |
| 2 | $120,000 | $30,000 | $60,000 | $180,000 | $24,000 | $414,000 |
| 3 | $120,000 | $36,000 | $60,000 | $180,000 | $24,000 | $420,000 |
| 4 | $120,000 | $45,000 | $60,000 | $180,000 | $24,000 | $429,000 |
| 5 | $120,000 | $60,000 | $60,000 | $180,000 | $24,000 | $444,000 |
| Total 5 años | $600,000 | $195,000 | $300,000 | $900,000 | $120,000 | $2,115,000 |
Análisis:
- Costo inicial: $1,500,000
- TCO 5 años: $2,115,000
- TCO total: $3,615,000 (2.4× costo inicial)
- Horas trabajadas: 6,000 hrs
- Costo promedio/hora: $602.50
Decisión:
- ¿Comprar vs rentar? Si renta = $400/hr → Costo 5 años = $2.4M (más económico)
- ¿Mantener vs vender? Si valor de reventa año 5 = $600K → TCO neto = $3.015M
📍 Rastreo GPS y Telemetría
Datos de Localización
gps_tracking:
asset_id: "AST-001"
timestamp: "2025-11-17T14:30:00Z"
location:
latitude: 20.588818
longitude: -100.389880
address: "Fraccionamiento Los Pinos, Querétaro"
project: "PROJ-001"
geofence_status: "inside" # inside, outside, near
telemetry:
engine_status: "running"
rpm: 1800
fuel_level: 75 # %
engine_hours: 1850
oil_pressure: 45 # PSI
coolant_temp: 85 # °C
battery_voltage: 24.5 # V
alerts:
- type: "geofence_exit"
timestamp: "2025-11-17T08:15:00Z"
message: "Activo salió de geofence de proyecto"
acknowledged: true
- type: "idle_time"
timestamp: "2025-11-17T12:00:00Z"
message: "Motor encendido sin uso por 30 minutos"
acknowledged: false
Dashboard de Activos
Indicadores en tiempo real:
| Activo | Ubicación | Estado | Operador | Horas hoy | Combustible | Alertas |
|---|---|---|---|---|---|---|
| EXC-001 | Obra A | 🟢 Operando | Juan P. | 6.5 hrs | 75% | - |
| RET-002 | Obra A | 🟢 Operando | Pedro M. | 5.0 hrs | 60% | ⚠️ Mtto próximo |
| CAM-003 | En tránsito | 🟡 Moviendo | Carlos R. | 3.0 hrs | 40% | - |
| VIB-004 | Obra B | 🔴 Parado | - | 0 hrs | N/A | 🔴 Mtto vencido |
📊 Reportes de Utilización
Reporte Mensual - Octubre 2025
| Activo | Tipo | Hrs disponibles | Hrs trabajadas | Utilización | Costo/hora | Costo total |
|---|---|---|---|---|---|---|
| EXC-001 | Excavadora | 200 | 180 | 90% | $350 | $63,000 |
| RET-002 | Retroexcavadora | 200 | 150 | 75% | $300 | $45,000 |
| GRU-003 | Grúa | 200 | 80 | 40% | $450 | $36,000 |
| CAM-004 | Camión volteo | 200 | 160 | 80% | $200 | $32,000 |
| TOTAL | - | 800 | 570 | 71.3% | - | $176,000 |
Análisis:
- ✅ Excavadora: Alta utilización (90%)
- ⚠️ Grúa: Baja utilización (40%) → Evaluar renta vs propiedad
- ✅ Promedio general: 71% (meta: >70%)
🚨 Puntos Críticos
- Mantenimiento preventivo: No omitir para evitar fallas costosas
- Registro de horas: Captura diaria para costeo preciso
- Asignación clara: Siempre debe haber responsable del activo
- Alertas de mantenimiento: Atender a tiempo para evitar tiempos muertos
- Rastreo GPS: Prevenir robo y uso no autorizado
- Análisis TCO: Decisiones de compra vs renta basadas en datos
- Depreciación correcta: Impacto en estados financieros
🎯 Siguiente Paso
Crear documentación de requerimientos y especificaciones técnicas del módulo.
Generado: 2025-11-17 Mantenedores: @tech-lead @backend-team @frontend-team @maintenance-team Estado: 📝 A crear