# _MAP: MAI-003 - Presupuestos y Control de Costos

**Epica:** MAI-003
**Nombre:** Presupuestos y Control de Costos
**Fase:** 1 - Alcance Inicial
**Presupuesto:** $30,000 MXN
**Story Points:** 46 SP
**Estado:** Completo
**Sprint:** Sprint 7-10 (Semanas 13-20)
**Ultima actualizacion:** 2025-11-17
**Prioridad:** P1

---

## Proposito

Sistema integral de presupuestos y control de costos para construccion que permite:
- Catalogo centralizado de 10,000+ conceptos reutilizables con APU (Analisis de Precios Unitarios)
- Presupuestos en 3 niveles (obra, etapa, prototipo) con generadores automaticos
- Control en tiempo real de costos con alertas proactivas
- Analisis de rentabilidad con simulaciones y proyecciones
- Explosion de insumos para optimizacion de compras
- Control presupuestal con desviaciones y planes de accion

**Problema que resuelve:** Las constructoras pierden entre 5-15% de margen por presupuestos imprecisos, falta de control sobre costos reales y desconocimiento de rentabilidad real por prototipo.

**Beneficios esperados:**
- Eficiencia: -80% tiempo elaboracion presupuestos (2h vs 10h)
- Precision: <3% desviacion presupuesto vs real
- Rentabilidad: +2 puntos de margen por mejor control
- Visibilidad: Dashboard actualizado en tiempo real

---

## Contenido

### Requerimientos Funcionales (4)

| ID | Archivo | Titulo | Estado |
|----|---------|--------|--------|
| RF-COST-001 | [RF-COST-001-catalogo-conceptos-precios.md](./requerimientos/RF-COST-001-catalogo-conceptos-precios.md) | Catalogo de Conceptos y Precios Unitarios | Completo |
| RF-COST-002 | [RF-COST-002-presupuestos-maestros.md](./requerimientos/RF-COST-002-presupuestos-maestros.md) | Presupuestos Maestros (Obra, Etapa, Prototipo) | Completo |
| RF-COST-003 | [RF-COST-003-control-costos-reales.md](./requerimientos/RF-COST-003-control-costos-reales.md) | Control de Costos Reales y Desviaciones | Completo |
| RF-COST-004 | [RF-COST-004-analisis-rentabilidad.md](./requerimientos/RF-COST-004-analisis-rentabilidad.md) | Analisis de Rentabilidad y Margenes | Completo |

### Especificaciones Tecnicas (4)

| ID | Archivo | Titulo | RF | Estado |
|----|---------|--------|-------|--------|
| ET-COST-001 | [ET-COST-001-implementacion-catalogo-conceptos.md](./especificaciones/ET-COST-001-implementacion-catalogo-conceptos.md) | Implementacion del Catalogo de Conceptos | RF-COST-001 | Completo |
| ET-COST-002 | [ET-COST-002-implementacion-presupuestos.md](./especificaciones/ET-COST-002-implementacion-presupuestos.md) | Implementacion de Presupuestos | RF-COST-002 | Completo |
| ET-COST-003 | [ET-COST-003-implementacion-control-costos.md](./especificaciones/ET-COST-003-implementacion-control-costos.md) | Implementacion de Control de Costos | RF-COST-003 | Completo |
| ET-COST-004 | [ET-COST-004-implementacion-analisis-rentabilidad.md](./especificaciones/ET-COST-004-implementacion-analisis-rentabilidad.md) | Implementacion de Analisis de Rentabilidad | RF-COST-004 | Completo |

### Historias de Usuario (8)

| ID | Archivo | Titulo | SP | Estado |
|----|---------|--------|----|--------|
| US-COST-001 | [US-COST-001-catalogo-conceptos.md](./historias-usuario/US-COST-001-catalogo-conceptos.md) | Catalogo de Conceptos y Busqueda | 5 | Completo |
| US-COST-002 | [US-COST-002-precios-compuestos.md](./historias-usuario/US-COST-002-precios-compuestos.md) | Precios Unitarios Compuestos | 5 | Completo |
| US-COST-003 | [US-COST-003-actualizacion-precios.md](./historias-usuario/US-COST-003-actualizacion-precios.md) | Actualizacion Masiva de Precios | 3 | Completo |
| US-COST-004 | [US-COST-004-presupuesto-obra.md](./historias-usuario/US-COST-004-presupuesto-obra.md) | Presupuesto de Obra Completo | 8 | Completo |
| US-COST-005 | [US-COST-005-presupuesto-prototipo.md](./historias-usuario/US-COST-005-presupuesto-prototipo.md) | Presupuesto de Prototipo con Generadores | 5 | Completo |
| US-COST-006 | [US-COST-006-dashboard-control-costos.md](./historias-usuario/US-COST-006-dashboard-control-costos.md) | Dashboard de Control de Costos Reales | 5 | Completo |
| US-COST-007 | [US-COST-007-analisis-desviaciones.md](./historias-usuario/US-COST-007-analisis-desviaciones.md) | Analisis de Desviaciones y Plan de Accion | 5 | Completo |
| US-COST-008 | [US-COST-008-analisis-rentabilidad.md](./historias-usuario/US-COST-008-analisis-rentabilidad.md) | Analisis de Rentabilidad y Simulaciones | 5 | Completo |

**Total Story Points:** 46 SP

### Implementacion

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) - Modulos backend
- [FRONTEND.yml](./implementacion/FRONTEND.yml) - Componentes frontend

### Pruebas

Documentacion 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) - Descripcion detallada de la epica
- **RESUMEN:** [RESUMEN-EPICA-MAI-003.md](./RESUMEN-EPICA-MAI-003.md) - Resumen ejecutivo completo
- **Fase 1:** [../README.md](../README.md) - Informacion de la fase completa
- **Modulo relacionado MVP:** Modulo 3 - Presupuestos y Costos (MVP-APP.md)

---

## Metricas

| Metrica | Valor |
|---------|-------|
| **Presupuesto estimado** | $30,000 MXN |
| **Story Points estimados** | 46 SP |
| **Duracion estimada** | 16 dias (4 sprints x 2 semanas) |
| **Reutilizacion GAMILIT** | 5% (funcionalidad nueva) |
| **RF a implementar** | 4/4 |
| **ET a implementar** | 4/4 |
| **US a completar** | 8/8 |
| **Reduccion tiempo presupuestos** | 80% (2h vs 10h) |
| **Precision objetivo** | <3% desviacion presupuesto vs real |

---

## Modulos Afectados

### Base de Datos

- **Schema:** `budgets`
- **Tablas principales:**
  * `concept_catalog` - Catalogo de conceptos (materiales, mano de obra, maquinaria, compuestos)
  * `concept_components` - Componentes de conceptos compuestos (APU)
  * `concept_price_history` - Historial de precios
  * `regions` - Regiones para ajustes de precios
  * `budgets` - Presupuestos maestros (obra, etapa, prototipo)
  * `budget_items` - Partidas jerarquicas de presupuestos
  * `budget_versions` - Versionado de presupuestos
  * `actual_costs` - Costos reales registrados
  * `cost_variances` - Analisis de desviaciones
  * `cost_projections` - Proyecciones EAC
  * `profitability_analysis` - Analisis de rentabilidad por proyecto
  * `prototype_profitability` - Rentabilidad comparativa por prototipo
- **ENUMs:**
  * `concept_type` (material, labor, machinery, composite)
  * `budget_scope` (project, stage, prototype)
  * `budget_status` (draft, in_review, approved, baseline, closed)
  * `variance_type` (price, quantity, mixed)
  * `cost_classification` (direct, indirect, financing, overhead)
- **Funciones SQL:**
  * `calculate_composite_price()` - Calculo de PU compuestos
  * `calculate_variances()` - Analisis de desviaciones
  * `calculate_eac()` - Proyeccion de costo final (3 metodos)
  * `calculate_profitability()` - Analisis de rentabilidad

### Backend

- **Modulo:** `budgets`
- **Path:** `apps/backend/src/modules/budgets/`
- **Services:**
  * `ConceptCatalogService` - Gestion de catalogo de conceptos
  * `BudgetService` - Creacion y gestion de presupuestos
  * `CostControlService` - Control de costos reales
  * `ProfitabilityService` - Analisis de rentabilidad
  * `BudgetGeneratorService` - Generadores automaticos de volumetrias
  * `PriceUpdateService` - Actualizacion masiva de precios
- **Controllers:**
  * `ConceptCatalogController` (9 endpoints)
  * `BudgetController` (12 endpoints)
  * `CostControlController` (8 endpoints)
  * `ProfitabilityController` (6 endpoints)
- **Cron Jobs:**
  * `CostAnalysisTask.analyzeDailyCosts()` - Analisis diario 6:00 AM
  * `PriceIndexTask.updateNationalPrices()` - Actualizacion semestral INPC/CMIC
- **Middlewares:** BudgetAuthGuard, ProjectAccessGuard

### Frontend

- **Features:** `budgets`, `cost-control`, `profitability`
- **Path:** `apps/frontend/src/features/budgets/`
- **Componentes principales:**
  * `ConceptCatalogList` - Lista con busqueda y filtros
  * `ConceptForm` - Formulario de conceptos (simple/compuesto)
  * `APUEditor` - Editor de analisis de precios unitarios
  * `BudgetItemsTree` - Arbol jerarquico de partidas
  * `BudgetWizard` - Asistente de creacion de presupuestos
  * `VolumetryGenerator` - Generador automatico de volumetrias
  * `CurveSChart` - Grafica de curva S (Chart.js)
  * `CostDashboard` - Dashboard de control de costos
  * `VarianceAnalysis` - Analisis de desviaciones
  * `SensitivityMatrix` - Matriz de sensibilidad precio/costo
  * `ScenarioSimulator` - Simulador de escenarios
  * `PrototypeComparison` - Comparativa de rentabilidad por prototipo
- **Stores (Zustand):**
  * `useConceptCatalogStore`
  * `useBudgetStore`
  * `useCostControlStore`
  * `useProfitabilityStore`

---

## Flujo de Documentacion RF → ET → US → Codigo

### RF-COST-001: Catalogo de Conceptos y Precios Unitarios

```
RF-COST-001 (Requerimiento Funcional)
    ↓
ET-COST-001 (Especificacion Tecnica)
    ↓
├── US-COST-001: Catalogo de Conceptos y Busqueda (5 SP)
│   └── Codigo:
│       ├── DB: budgets.concept_catalog, budgets.regions
│       ├── Backend: ConceptCatalogService, ConceptCatalogController
│       └── Frontend: ConceptCatalogList, ConceptForm
│
├── US-COST-002: Precios Unitarios Compuestos (5 SP)
│   └── Codigo:
│       ├── DB: budgets.concept_components, calculate_composite_price()
│       ├── Backend: ConceptCatalogService.createComposite()
│       └── Frontend: APUEditor, ConceptForm
│
└── US-COST-003: Actualizacion Masiva de Precios (3 SP)
    └── Codigo:
        ├── DB: budgets.concept_price_history
        ├── Backend: PriceUpdateService, PriceIndexTask (cron)
        └── Frontend: PriceUpdateModal, PriceHistoryTimeline
```

### RF-COST-002: Presupuestos Maestros

```
RF-COST-002 (Requerimiento Funcional)
    ↓
ET-COST-002 (Especificacion Tecnica)
    ↓
├── US-COST-004: Presupuesto de Obra Completo (8 SP)
│   └── Codigo:
│       ├── DB: budgets.budgets, budgets.budget_items, budgets.budget_versions
│       ├── Backend: BudgetService, BudgetController
│       └── Frontend: BudgetWizard, BudgetItemsTree, BudgetDetail
│
└── US-COST-005: Presupuesto de Prototipo con Generadores (5 SP)
    └── Codigo:
        ├── DB: budgets.budget_items (con formulas)
        ├── Backend: BudgetGeneratorService
        └── Frontend: VolumetryGenerator, PrototypeBudgetForm
```

### RF-COST-003: Control de Costos Reales

```
RF-COST-003 (Requerimiento Funcional)
    ↓
ET-COST-003 (Especificacion Tecnica)
    ↓
├── US-COST-006: Dashboard de Control de Costos Reales (5 SP)
│   └── Codigo:
│       ├── DB: budgets.actual_costs, calculate_variances()
│       ├── Backend: CostControlService, CostAnalysisTask (cron)
│       └── Frontend: CostDashboard, CurveSChart
│
└── US-COST-007: Analisis de Desviaciones y Plan de Accion (5 SP)
    └── Codigo:
        ├── DB: budgets.cost_variances, budgets.cost_projections
        ├── Backend: CostControlService.analyzeVariances()
        └── Frontend: VarianceAnalysis, ActionPlanForm
```

### RF-COST-004: Analisis de Rentabilidad

```
RF-COST-004 (Requerimiento Funcional)
    ↓
ET-COST-004 (Especificacion Tecnica)
    ↓
└── US-COST-008: Analisis de Rentabilidad y Simulaciones (5 SP)
    └── Codigo:
        ├── DB: budgets.profitability_analysis, budgets.prototype_profitability
        ├── Backend: ProfitabilityService, ProfitabilityController
        └── Frontend: SensitivityMatrix, ScenarioSimulator, PrototypeComparison
```

---

## Quick Links

### Catalogo de Conceptos

**Objetivo:** Catalogo centralizado de 10,000+ conceptos reutilizables

- **RF:** [RF-COST-001](./requerimientos/RF-COST-001-catalogo-conceptos-precios.md)
- **ET:** [ET-COST-001](./especificaciones/ET-COST-001-implementacion-catalogo-conceptos.md)
- **US:**
  * [US-COST-001: Catalogo base](./historias-usuario/US-COST-001-catalogo-conceptos.md)
  * [US-COST-002: Conceptos compuestos (APU)](./historias-usuario/US-COST-002-precios-compuestos.md)
  * [US-COST-003: Actualizacion masiva](./historias-usuario/US-COST-003-actualizacion-precios.md)
- **Codigo:**
  * DB: `budgets.concept_catalog`, `budgets.concept_components`
  * Backend: `ConceptCatalogService`
  * Frontend: `ConceptCatalogList`, `APUEditor`

**Funcionalidades clave:**
- 4 tipos de conceptos: material, mano de obra, maquinaria, compuesto
- Analisis de Precios Unitarios (APU) detallado
- Busqueda full-text por codigo/nombre/categoria (<200ms)
- Versionado y historial de precios
- Regionalizacion de precios
- Importacion/exportacion Excel, OPUS, Neodata
- Actualizacion masiva por indices INPC/CMIC

**Ejemplo APU:**
```
Concepto Compuesto "Cimentacion corrida":
├─ Materiales: $4,548 (concreto, acero, cimbra, alambre)
├─ Mano de Obra: $1,125 (oficial + ayudantes con FSR)
├─ Maquinaria: $226 (vibrador + herramienta menor)
├─ CD: $5,899
├─ Indirectos (12%): $708
├─ Financiamiento (3%): $177
├─ Utilidad (10%): $590
├─ Cargos (2%): $118
└─ PU Final: $7,492/m³ + IVA
```

### Analisis de Precios Unitarios (APU)

**Objetivo:** Desglose detallado de componentes de conceptos compuestos

- **RF:** [RF-COST-001, seccion APU](./requerimientos/RF-COST-001-catalogo-conceptos-precios.md#analisis-de-precios-unitarios-apu)
- **ET:** [ET-COST-001, seccion APU](./especificaciones/ET-COST-001-implementacion-catalogo-conceptos.md#calculo-de-precios-compuestos)
- **US:** [US-COST-002](./historias-usuario/US-COST-002-precios-compuestos.md)
- **Codigo:**
  * DB: `budgets.concept_components`, funcion `calculate_composite_price()`
  * Backend: `ConceptCatalogService.createComposite()`
  * Frontend: `APUEditor`

**Componentes de un APU:**
1. **Costo Directo (CD):**
   - Materiales
   - Mano de obra (con FSR: Factor de Salario Real)
   - Maquinaria y equipo
2. **Costos Indirectos:** 12% sobre CD
3. **Financiamiento:** 3% sobre (CD + Indirectos)
4. **Utilidad:** 10% sobre subtotal
5. **Cargos adicionales:** 2% sobre subtotal
6. **IVA:** 16% sobre precio final

**Formula de calculo:**
```
CD = Materiales + Mano de Obra + Maquinaria
Indirectos = CD * 0.12
Financiamiento = (CD + Indirectos) * 0.03
Subtotal = CD + Indirectos + Financiamiento
Utilidad = Subtotal * 0.10
Cargos = Subtotal * 0.02
PU sin IVA = Subtotal + Utilidad + Cargos
PU con IVA = PU sin IVA * 1.16
```

### Explosion de Insumos

**Objetivo:** Desglose de todos los insumos necesarios para el proyecto

- **RF:** [RF-COST-002, seccion Explosion](./requerimientos/RF-COST-002-presupuestos-maestros.md#explosion-de-insumos)
- **ET:** [ET-COST-002](./especificaciones/ET-COST-002-implementacion-presupuestos.md)
- **US:** [US-COST-004](./historias-usuario/US-COST-004-presupuesto-obra.md)
- **Codigo:**
  * DB: Vista materializada `budgets.budget_materials_explosion`
  * Backend: `BudgetService.explodeMaterials()`
  * Frontend: `MaterialsExplosionTable`

**Funcionalidades:**
- Desglose automatico de materiales desde conceptos compuestos
- Agregacion por tipo de material
- Cantidad total necesaria por proyecto/etapa
- Valor total por material
- Exportacion a Excel para compras
- Optimizacion de lotes de compra

**Ejemplo:**
```
Proyecto: 150 viviendas
└─ Cimentacion (150 viviendas × 14.40 m³/viv = 2,160 m³)
    ├─ Concreto f'c=150: 2,160 m³ × 1.05 = 2,268 m³
    ├─ Acero fy=4200: 2,160 m³ × 80 kg/m³ = 172,800 kg
    ├─ Cimbra: 2,160 m³ × 5.2 m²/m³ = 11,232 m²
    └─ Alambre recocido: 2,160 m³ × 1.5 kg/m³ = 3,240 kg

Total Materiales Cimentacion: $9,826,560
```

### Control Presupuestal

**Objetivo:** Control en tiempo real de costos vs presupuesto

- **RF:** [RF-COST-003](./requerimientos/RF-COST-003-control-costos-reales.md)
- **ET:** [ET-COST-003](./especificaciones/ET-COST-003-implementacion-control-costos.md)
- **US:**
  * [US-COST-006: Dashboard control](./historias-usuario/US-COST-006-dashboard-control-costos.md)
  * [US-COST-007: Analisis desviaciones](./historias-usuario/US-COST-007-analisis-desviaciones.md)
- **Codigo:**
  * DB: `budgets.actual_costs`, `budgets.cost_variances`, `budgets.cost_projections`
  * Backend: `CostControlService`, `CostAnalysisTask` (cron diario 6:00 AM)
  * Frontend: `CostDashboard`, `CurveSChart`, `VarianceAnalysis`

**Indicadores clave:**
- **CPI (Cost Performance Index):** Valor Ganado / Costo Real
  * CPI > 1.0: Bajo presupuesto
  * CPI = 1.0: En presupuesto
  * CPI < 1.0: Sobre presupuesto
- **SPI (Schedule Performance Index):** Valor Ganado / Valor Planificado
  * SPI > 1.0: Adelantado
  * SPI = 1.0: A tiempo
  * SPI < 1.0: Retrasado
- **EAC (Estimate at Completion):** Proyeccion de costo final
  * Metodo 1: Presupuesto / CPI
  * Metodo 2: Costo Real + (Presupuesto - Valor Ganado)
  * Metodo 3: Costo Real + ((Presupuesto - Valor Ganado) / (CPI × SPI))

**Tipos de desviacion:**
1. **Desviacion de precio:** (Precio Real - Precio Presupuestado) × Cantidad Real
2. **Desviacion de cantidad:** (Cantidad Real - Cantidad Presupuestada) × Precio Presupuestado
3. **Desviacion mixta:** (Precio Real - Precio Presupuestado) × (Cantidad Real - Cantidad Presupuestada)

**Alertas automaticas:**
- Alerta amarilla: Desviacion >3%
- Alerta roja: Desviacion >5%
- Plan de accion obligatorio para desviaciones >5%

### Presupuestos por Nivel

**Objetivo:** Presupuestos en 3 niveles jerarquicos

- **RF:** [RF-COST-002](./requerimientos/RF-COST-002-presupuestos-maestros.md)
- **ET:** [ET-COST-002](./especificaciones/ET-COST-002-implementacion-presupuestos.md)
- **US:**
  * [US-COST-004: Presupuesto obra](./historias-usuario/US-COST-004-presupuesto-obra.md)
  * [US-COST-005: Presupuesto prototipo](./historias-usuario/US-COST-005-presupuesto-prototipo.md)
- **Codigo:**
  * DB: `budgets.budgets`, `budgets.budget_items`
  * Backend: `BudgetService`, `BudgetGeneratorService`
  * Frontend: `BudgetWizard`, `BudgetItemsTree`

**Niveles de presupuesto:**

1. **Presupuesto de Obra:**
   - Presupuesto maestro completo del proyecto
   - Desglose por division CMIC (16 capitulos)
   - Suma de todos los prototipos × cantidades
   - Curva S de distribucion temporal
   - Versionado completo (baseline, ajustes)

2. **Presupuesto de Etapa:**
   - Presupuesto por fase constructiva
   - Ej: Cimentacion, Estructura, Albañileria, Instalaciones, Acabados
   - Se vincula con cronograma de obra
   - Permite control por avance fisico

3. **Presupuesto de Prototipo:**
   - Costo unitario por tipo de vivienda
   - Generadores automaticos de volumetrias
   - Plantilla reutilizable
   - Base para calculo de presupuesto de obra

**Ejemplo jerarquia:**
```
Proyecto: Conjunto 150 viviendas
├─ Prototipo A (80 viviendas): $1,105,000 c/u
│   ├─ Cimentacion: $65,472
│   ├─ Estructura: $220,500
│   ├─ Albañileria: $198,450
│   └─ ...
├─ Prototipo B (50 viviendas): $890,000 c/u
└─ Prototipo C (20 viviendas): $750,000 c/u

Presupuesto Obra Total: $165,750,000
```

### Analisis de Rentabilidad

**Objetivo:** Analisis financiero y simulaciones de escenarios

- **RF:** [RF-COST-004](./requerimientos/RF-COST-004-analisis-rentabilidad.md)
- **ET:** [ET-COST-004](./especificaciones/ET-COST-004-implementacion-analisis-rentabilidad.md)
- **US:** [US-COST-008](./historias-usuario/US-COST-008-analisis-rentabilidad.md)
- **Codigo:**
  * DB: `budgets.profitability_analysis`, `budgets.prototype_profitability`
  * Backend: `ProfitabilityService`
  * Frontend: `SensitivityMatrix`, `ScenarioSimulator`, `PrototypeComparison`

**Analisis incluidos:**
1. **Analisis financiero por proyecto:**
   - Ingresos totales
   - Costos totales (directos + indirectos)
   - Margen bruto y neto
   - ROI (Return on Investment)
   - TIR (Tasa Interna de Retorno)

2. **Punto de equilibrio:**
   - Numero de unidades para cubrir costos fijos
   - Margen de seguridad
   - Grafica visual

3. **Rentabilidad por prototipo:**
   - Comparacion de margenes entre prototipos
   - Identificacion de prototipos mas rentables
   - Optimizacion de mix de producto

4. **Simulador de escenarios:**
   - Escenario optimista: Costos -5%, Precio +3%
   - Escenario base: Valores actuales
   - Escenario pesimista: Costos +8%, Precio -2%
   - Impacto en margen y rentabilidad

5. **Matriz de sensibilidad:**
   - Impacto de variacion de precio (±10%)
   - Impacto de variacion de costos (±10%)
   - Mapa de calor de rentabilidad

**Ejemplo analisis:**
```
Proyecto: 150 viviendas
Ingresos: $165.75M (150 × $1,105,000 promedio)
Costos: $153.70M
Margen: $12.05M (7.3%)
ROI: 7.8%
TIR: 12.4%

Punto de Equilibrio:
- Unidades: 110 viviendas (73%)
- Margen de seguridad: 27% ✓

Rentabilidad por prototipo:
- Prototipo A: 8.2% margen
- Prototipo B: 7.1% margen
- Prototipo C: 5.8% margen
```

---

## Flujo de Trabajo Completo

### 1. Setup Inicial (Sprint 7)

**Paso 1: Crear catalogo de conceptos**
- Importar catalogo base (OPUS/Neodata/Excel)
- Crear conceptos personalizados
- Definir APU de conceptos compuestos
- Configurar regionalizacion de precios

**Paso 2: Configurar parametros**
- Definir % indirectos (default: 12%)
- Definir % financiamiento (default: 3%)
- Definir % utilidad esperada (default: 10%)
- Definir % cargos adicionales (default: 2%)

### 2. Presupuesto de Prototipo (Sprint 8)

**Paso 1: Crear prototipo en MAI-002**
- Definir caracteristicas: area, perimetro, altura, etc.
- Asignar tipo de vivienda

**Paso 2: Generar presupuesto con generadores**
- Seleccionar plantilla de prototipo
- Ejecutar generadores automaticos de volumetrias
- Revisar y ajustar cantidades
- Aprobar presupuesto de prototipo

**Ejemplo generador:**
```javascript
// Excavacion para cimentacion
formula: "desplantDepth * buildingPerimeter * 0.60 * 0.80"
inputs: {
  desplantDepth: 0.80m,
  buildingPerimeter: 30m
}
result: 14.40 m³
```

### 3. Presupuesto de Obra (Sprint 8)

**Paso 1: Crear presupuesto maestro**
- Seleccionar proyecto
- Asignar prototipos y cantidades
- Generar presupuesto automaticamente

**Paso 2: Crear baseline**
- Revisar presupuesto generado
- Ajustar si es necesario
- Aprobar como baseline

**Paso 3: Gestionar versiones**
- Crear nueva version por cambios de alcance
- Comparar versiones
- Mantener historial completo

### 4. Control de Costos (Sprint 9)

**Paso 1: Registro automatico de costos reales**
- Desde ordenes de compra (MAI-004)
- Desde nomina (MAI-007)
- Desde subcontratos (MAI-012)

**Paso 2: Analisis diario (cron 6:00 AM)**
- Calcular desviaciones
- Actualizar proyecciones EAC
- Generar alertas

**Paso 3: Gestion de desviaciones**
- Revisar dashboard de control
- Analizar desviaciones >5%
- Crear plan de accion obligatorio
- Dar seguimiento

### 5. Analisis de Rentabilidad (Sprint 10)

**Paso 1: Dashboard de rentabilidad**
- Ver margen actual vs objetivo
- Comparar prototipos
- Analizar tendencias

**Paso 2: Simulaciones**
- Ejecutar escenarios optimista/base/pesimista
- Analizar matriz de sensibilidad
- Tomar decisiones informadas

**Paso 3: Reportes ejecutivos**
- Generar reporte financiero
- Exportar a Excel/PDF
- Presentar a direccion

---

## Integraciones

### Modulos que Consume (Input)

- **MAI-002 (Proyectos):**
  - Estructura de proyectos/etapas
  - Prototipos de vivienda y caracteristicas
  - Datos para generadores de volumetrias
- **MAI-004 (Compras):**
  - Ordenes de compra → Costos reales de materiales
  - Precios reales de proveedores
- **MAI-007 (RR.HH.):**
  - Nomina → Costos reales de mano de obra
  - Factores de salario real (FSR)
- **MAI-012 (Contratos):**
  - Subcontratos → Costos reales de subcontratistas
- **MGN-005 (Catalogos):**
  - Unidades de medida
  - Clasificaciones CMIC

### Modulos que Alimenta (Output)

- **MAI-002 (Proyectos):**
  - Costo unitario por prototipo
  - Presupuesto total del proyecto
- **MAI-004 (Compras):**
  - Explosion de insumos
  - Presupuesto de materiales
  - Alertas de precios fuera de presupuesto
- **MAI-005 (Control de Obra):**
  - Presupuesto por partida
  - Valor ganado por avance
- **MAI-008 (Estimaciones):**
  - Montos presupuestados por concepto
  - Volumetrias para estimaciones
- **MAE-014 (Finanzas):**
  - Datos de rentabilidad
  - Proyecciones de costos
  - Indicadores financieros (CPI, SPI, EAC)
- **MAI-009 (Reportes):**
  - Analisis de desviaciones
  - Curva S
  - Reportes de rentabilidad

---

## Puntos Criticos

1. **Precision de APU:**
   - APU mal calculados → Presupuestos imprecisos → Perdida de margen
   - Validar todos los componentes (materiales, MO, maquinaria)
   - Considerar desperdicios y factores de abundamiento

2. **Actualizacion de precios:**
   - Precios desactualizados → Desviaciones no detectadas
   - Actualizar catalogo cada 6 meses (minimo)
   - Usar indices INPC/CMIC para ajustes

3. **Registro oportuno de costos:**
   - Retrasos en registro → Dashboard no refleja realidad
   - Integracion automatica desde compras/nomina/subcontratos
   - Validacion diaria

4. **Gestion de desviaciones:**
   - Desviaciones no atendidas → Problemas mayores
   - Plan de accion obligatorio para >5%
   - Seguimiento semanal

5. **Versionado de presupuestos:**
   - Cambios sin control → Perdida de baseline
   - Siempre crear nueva version (no editar aprobados)
   - Documentar razon de cambio

---

## Casos de Uso Reales

### Caso 1: Constructora con Desarrollo de 150 Viviendas

**Contexto:**
- 3 prototipos: A (80 unidades), B (50 unidades), C (20 unidades)
- Precio venta promedio: $1,105,000
- Ingresos totales: $165.75M

**Flujo completo:**

1. **Setup inicial (Semana 1):**
   - Importar catalogo OPUS con 5,000 conceptos
   - Crear 150 conceptos personalizados
   - Configurar 3 regiones de precios
   - Tiempo: 8 horas (vs 20 horas manual)

2. **Presupuesto prototipos (Semana 2):**
   - Prototipo A: 247 partidas, $1,105,000, 2 horas
   - Prototipo B: 223 partidas, $890,000, 1.5 horas
   - Prototipo C: 198 partidas, $750,000, 1.5 horas
   - Tiempo total: 5 horas (vs 30 horas manual)

3. **Presupuesto obra (Semana 2):**
   - Generacion automatica desde prototipos
   - 658 partidas totales
   - Presupuesto: $153.7M
   - Tiempo: 30 minutos (vs 10 horas manual)

4. **Control mensual (Meses 1-18):**
   - Dashboard actualizado diariamente
   - 3 alertas criticas detectadas y resueltas
   - Desviacion final: 2.1% (excelente)

5. **Resultado final:**
   - Costo real: $155.9M
   - Margen real: 6.0% (vs 7.3% objetivo)
   - Razon: Cambio de alcance no presupuestado
   - Sin sistema: Margen hubiera sido 3.5% (perdida $6M)

### Caso 2: Actualizacion Semestral de Precios

**Contexto:**
- Catalogo de 2,000 conceptos
- INPC semestre: +3.2%
- CMIC construccion: +4.8%

**Proceso:**
1. Seleccionar conceptos a actualizar (1,500 usan indices)
2. Aplicar incremento diferenciado:
   - Materiales: +4.8%
   - Mano de obra: +3.2%
   - Maquinaria: +3.5%
3. Recalculo automatico de APU compuestos
4. Generar reporte de cambios
5. Tiempo total: 15 minutos (vs 8 horas manual)

### Caso 3: Deteccion y Correccion de Desviacion

**Contexto:**
- Partida "Estructura de concreto": $2.5M presupuestado
- Semana 8: Costo real $1.8M, Avance 60%
- Proyeccion EAC: $3.0M (desviacion +20%)

**Alerta generada:**
- Tipo: Critica (desviacion >5%)
- CPI: 0.83 (bajo presupuesto)
- SPI: 1.05 (adelantado en programa)

**Accion tomada:**
- Analisis: Precio de acero +15% vs presupuesto
- Plan: Negociar con proveedor, buscar alternativas
- Resultado: Descuento 8%, desviacion final +5%

**Ahorro:** $375K por deteccion temprana

---

## Criterios de Exito

### Metricas de Adopcion
- 100% de proyectos con presupuesto formal
- 90% de presupuestos usan catalogo estandar
- <5% de conceptos duplicados en catalogo

### Metricas de Eficiencia
- Reduccion 80% tiempo de elaboracion (-8h por presupuesto)
- Busqueda de conceptos <200ms
- Actualizacion masiva de precios <5 seg para 500 conceptos
- Generacion de presupuesto <2 seg para 100 partidas

### Metricas de Calidad
- Precision presupuesto vs real <3% de desviacion
- 100% de alertas criticas con plan de accion en 48h
- Proyeccion EAC vs costo final <2% de error

### Metricas de Rentabilidad
- 80% de proyectos con margen ≥ target
- Incremento de margen promedio +2 puntos anuales
- ROI portafolio ≥ 12% anual

---

## Distribucion de Sprints

### Sprint 7 (2 semanas) - 13 SP: Catalogo de Conceptos
- US-COST-001: Catalogo de Conceptos y Busqueda (5 SP)
- US-COST-002: Precios Unitarios Compuestos (5 SP)
- US-COST-003: Actualizacion Masiva de Precios (3 SP)

**Entregables:**
- Catalogo de conceptos funcionando
- CRUD completo con busqueda
- Editor de APU
- Importacion/exportacion Excel

### Sprint 8 (2 semanas) - 13 SP: Presupuestos
- US-COST-004: Presupuesto de Obra Completo (8 SP)
- US-COST-005: Presupuesto de Prototipo con Generadores (5 SP)

**Entregables:**
- Wizard de creacion de presupuestos
- Generadores automaticos de volumetrias
- Arbol jerarquico de partidas
- Versionado de presupuestos
- Explosion de insumos

### Sprint 9 (2 semanas) - 10 SP: Control de Costos
- US-COST-006: Dashboard de Control de Costos Reales (5 SP)
- US-COST-007: Analisis de Desviaciones y Plan de Accion (5 SP)

**Entregables:**
- Dashboard con curva S
- Integracion con compras/nomina/subcontratos
- Calculo automatico de desviaciones
- Sistema de alertas
- Gestion de planes de accion

### Sprint 10 (2 semanas) - 5 SP: Rentabilidad
- US-COST-008: Analisis de Rentabilidad y Simulaciones (5 SP)

**Entregables:**
- Analisis financiero por proyecto
- Comparacion de prototipos
- Simulador de escenarios
- Matriz de sensibilidad
- Punto de equilibrio visual

**Duracion total:** 8 semanas (4 sprints × 2 semanas)

---

## Siguiente Paso

Comenzar implementacion en Sprint 7 con la documentacion completa.

Equipo de desarrollo puede iniciar con:
1. Setup de schema `budgets` en base de datos
2. Implementacion de `ConceptCatalogService`
3. Componente `ConceptCatalogList` en frontend

---

**Generado:** 2025-11-17
**Mantenedores:** @tech-lead @backend-team @frontend-team @database-team
**Estado:** Completo
