erp-construccion/docs/02-definicion-modulos/MAE-015-activos-maquinaria/_MAP.md

458 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# _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](./implementacion/TRACEABILITY.yml) - Matriz completa de trazabilidad
- [DATABASE.yml](./implementacion/DATABASE.yml) - Objetos de base de datos
- [BACKEND.yml](./implementacion/BACKEND.yml) - Módulos backend
- [FRONTEND.yml](./implementacion/FRONTEND.yml) - Componentes frontend
### Pruebas
📋 Documentación de testing:
- [TEST-PLAN.md](./pruebas/TEST-PLAN.md) - Plan de pruebas
- [TEST-CASES.md](./pruebas/TEST-CASES.md) - Casos de prueba
---
## 🔗 Referencias
- **README:** [README.md](./README.md) - Descripción detallada de la épica
- **Fase 2:** [../README.md](../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 activos
* `asset_assignments` - Asignaciones a obras
* `maintenance_plans` - Planes de mantenimiento
* `maintenance_schedules` - Programación de mantenimientos
* `work_orders` - Órdenes de trabajo
* `maintenance_history` - Historial de mantenimientos
* `asset_costs` - Costos de operación y mantenimiento
* `asset_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
```yaml
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 | Operador |
| **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
```yaml
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:**
```yaml
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
```yaml
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
1. **Mantenimiento preventivo:** No omitir para evitar fallas costosas
2. **Registro de horas:** Captura diaria para costeo preciso
3. **Asignación clara:** Siempre debe haber responsable del activo
4. **Alertas de mantenimiento:** Atender a tiempo para evitar tiempos muertos
5. **Rastreo GPS:** Prevenir robo y uso no autorizado
6. **Análisis TCO:** Decisiones de compra vs renta basadas en datos
7. **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