Sistema NEXUS v3.4 migrado con: Estructura principal: - core/orchestration: Sistema SIMCO + CAPVED (27 directivas, 28 perfiles) - core/catalog: Catalogo de funcionalidades reutilizables - shared/knowledge-base: Base de conocimiento compartida - devtools/scripts: Herramientas de desarrollo - control-plane/registries: Control de servicios y CI/CD - orchestration/: Configuracion de orquestacion de agentes Proyectos incluidos (11): - gamilit (submodule -> GitHub) - trading-platform (OrbiquanTIA) - erp-suite con 5 verticales: - erp-core, construccion, vidrio-templado - mecanicas-diesel, retail, clinicas - betting-analytics - inmobiliaria-analytics - platform_marketing_content - pos-micro, erp-basico Configuracion: - .gitignore completo para Node.js/Python/Docker - gamilit como submodule (git@github.com:rckrdmrd/gamilit-workspace.git) - Sistema de puertos estandarizado (3005-3199) Generated with NEXUS v3.4 Migration System EPIC-010: Configuracion Git y Repositorios
651 lines
30 KiB
Markdown
651 lines
30 KiB
Markdown
# MAI-003: Presupuestos y Control de Costos
|
||
|
||
**ID:** MAI-003
|
||
**Fase:** 1 - Alcance Inicial
|
||
**Presupuesto:** $30,000 MXN
|
||
**Story Points:** 46 SP
|
||
**Sprint:** Sprint 7-10 (Semanas 13-20)
|
||
**Prioridad:** P1
|
||
**Estado:** En documentacion
|
||
|
||
---
|
||
|
||
## Resumen Ejecutivo
|
||
|
||
Este modulo gestiona el ciclo completo de presupuestos de construccion, desde el catalogo de conceptos base hasta el control de costos reales y analisis de rentabilidad. Incluye gestion de Analisis de Precios Unitarios (APU), explosion de insumos, presupuestos multinivel (obra, etapa, prototipo), control presupuestal con curva S, y analisis de desviaciones con proyecciones.
|
||
|
||
### Problema que Resuelve
|
||
|
||
Las constructoras **pierden entre 5-15% de margen** debido a:
|
||
- Presupuestos desactualizados o imprecisos elaborados en Excel
|
||
- Falta de control sobre costos reales vs presupuestados
|
||
- Desconocimiento de rentabilidad real por prototipo/proyecto
|
||
- Reaccion tardia ante desviaciones de costos
|
||
- Dificultad para reutilizar conceptos y precios entre proyectos
|
||
- Analisis de precios unitarios manuales propensos a errores
|
||
|
||
**Sin este modulo:** Elaboracion manual en Excel (8-10 horas por presupuesto), errores de calculo, imposibilidad de controlar costos en tiempo real, perdida de margen por desviaciones no detectadas.
|
||
|
||
**Con este modulo:** Catalogo centralizado de 10,000+ conceptos reutilizables, presupuestos generados en 2 horas con precision <3%, control de costos en tiempo real, alertas proactivas de desviaciones, +2 puntos de margen por mejor control.
|
||
|
||
---
|
||
|
||
## Objetivos
|
||
|
||
1. **Catalogar conceptos** reutilizables con APU detallados por especialidad
|
||
2. **Generar presupuestos** rapidos y precisos en 3 niveles (obra, etapa, prototipo)
|
||
3. **Controlar costos reales** vs presupuestados con curva S y alertas automaticas
|
||
4. **Analizar rentabilidad** por proyecto/prototipo con simulaciones de escenarios
|
||
5. **Visibilidad total** del estado financiero del portafolio de proyectos
|
||
|
||
---
|
||
|
||
## Alcance Funcional
|
||
|
||
### 1. Catalogo de Conceptos y Precios Unitarios
|
||
|
||
**Catlogo maestro de conceptos reutilizables:**
|
||
- 4 tipos de conceptos: Material, Mano de Obra, Maquinaria, Compuesto
|
||
- Organizacion jerarquica por division CMIC (16 capitulos estandar)
|
||
- Analisis de Precio Unitario (APU) detallado para conceptos compuestos
|
||
- Versionado y historial de precios con trazabilidad
|
||
- Regionalizacion de precios por zona geografica
|
||
- Importacion/exportacion desde/hacia Excel, OPUS, Neodata
|
||
|
||
**Analisis de Precios Unitarios (APU):**
|
||
- Explosion de insumos: materiales + mano de obra + maquinaria
|
||
- Factor de Salario Real (FSR) para mano de obra
|
||
- Cargos por indirectos (12%), financiamiento (3%), utilidad (10%)
|
||
- Calculo automatico de Precio Unitario (PU) final
|
||
|
||
**Ejemplo de concepto compuesto:**
|
||
```
|
||
Concepto: "Cimentacion corrida de concreto f'c=200 kg/cm2"
|
||
├─ Materiales:
|
||
│ ├─ Concreto premezclado f'c=200: 1.05 m3 × $1,850 = $1,943
|
||
│ ├─ Acero de refuerzo 3/8": 25 kg × $18 = $450
|
||
│ ├─ Cimbra de madera: 6 m2 × $125 = $750
|
||
│ └─ Alambre recocido: 0.5 kg × $25 = $13
|
||
│ Subtotal Materiales: $3,156
|
||
│
|
||
├─ Mano de Obra:
|
||
│ ├─ Oficial albanil: 0.8 jornadas × $450 = $360
|
||
│ ├─ Ayudante general: 1.6 jornadas × $280 = $448
|
||
│ ├─ FSR (1.65×): $808 × 1.65 = $1,333
|
||
│ Subtotal Mano de Obra: $1,333
|
||
│
|
||
├─ Maquinaria:
|
||
│ ├─ Vibrador de concreto: 2 hrs × $80 = $160
|
||
│ ├─ Herramienta menor (3%): $3,156 × 3% = $95
|
||
│ Subtotal Maquinaria: $255
|
||
│
|
||
├─ Costo Directo (CD): $4,744
|
||
├─ Indirectos (12%): $569
|
||
├─ Financiamiento (3%): $142
|
||
├─ Utilidad (10%): $474
|
||
├─ Cargos adicionales (2%): $95
|
||
│
|
||
└─ Precio Unitario Final: $6,024/m3 + IVA
|
||
```
|
||
|
||
### 2. Presupuestos Maestros (Obra, Etapa, Prototipo)
|
||
|
||
**Presupuesto de Obra:**
|
||
- Desglose completo por capitulos CMIC
|
||
- Volumetrias totales del proyecto
|
||
- Distribucion temporal (Curva S)
|
||
- Versionado completo (baseline, ajustes, cambios de alcance)
|
||
|
||
**Presupuesto de Etapa:**
|
||
- Subdivision por fases constructivas
|
||
- Programacion de recursos por etapa
|
||
- Validacion de suma = presupuesto de obra
|
||
|
||
**Presupuesto de Prototipo:**
|
||
- Presupuesto detallado por modelo de vivienda
|
||
- Generadores automaticos basados en caracteristicas:
|
||
- Superficie de construccion
|
||
- Perimetro de desplante
|
||
- Numero de niveles
|
||
- Tipo de acabados
|
||
- Explosion de insumos por prototipo
|
||
- Costo unitario por m2 de construccion
|
||
|
||
**Ejemplo de generador automatico:**
|
||
```javascript
|
||
// Excavacion para cimentacion
|
||
formula: "desplantDepth * buildingPerimeter * 0.60 * 0.80"
|
||
inputs: {
|
||
desplantDepth: 0.80m, // Profundidad de desplante
|
||
buildingPerimeter: 30m, // Perimetro de construccion
|
||
widthFactor: 0.60m, // Ancho de cepa
|
||
wasteFactorr: 0.80 // Factor de abundamiento
|
||
}
|
||
result: 14.40 m3 de excavacion
|
||
```
|
||
|
||
### 3. Control de Costos Reales y Desviaciones
|
||
|
||
**Registro automatico de costos reales:**
|
||
- Integracion con modulo de Compras (MAI-004) - materiales
|
||
- Integracion con modulo de Nomina (MAI-007) - mano de obra
|
||
- Integracion con modulo de Subcontratos (MAI-012) - subcontratistas
|
||
- Registro manual de otros costos
|
||
|
||
**Dashboard de control con Curva S:**
|
||
- Costo Presupuestado (baseline)
|
||
- Costo Real acumulado
|
||
- Valor Ganado (Earned Value)
|
||
- Proyeccion de costo final (EAC)
|
||
|
||
**Analisis de desviaciones:**
|
||
- Desviacion en precio: (Precio Real - Precio Presupuestado) × Cantidad Real
|
||
- Desviacion en cantidad: (Cantidad Real - Cantidad Presupuestada) × Precio Presupuestado
|
||
- Desviacion mixta: (Precio Real - Precio Presupuestado) × (Cantidad Real - Cantidad Presupuestada)
|
||
|
||
**Indicadores de desempeno:**
|
||
```
|
||
CPI (Cost Performance Index) = Valor Ganado / Costo Real
|
||
CPI > 1.0: Proyecto bajo presupuesto
|
||
CPI < 1.0: Proyecto sobre presupuesto
|
||
|
||
SPI (Schedule Performance Index) = Valor Ganado / Valor Planificado
|
||
SPI > 1.0: Proyecto adelantado
|
||
SPI < 1.0: Proyecto retrasado
|
||
|
||
EAC (Estimate at Completion) = Presupuesto / CPI
|
||
Proyeccion de costo final del proyecto
|
||
```
|
||
|
||
**Alertas automaticas configurables:**
|
||
- Desviacion >5% en capitulo especifico
|
||
- Desviacion >3% en presupuesto total
|
||
- Proyeccion EAC excede presupuesto autorizado
|
||
- Plan de accion obligatorio para desviaciones >5%
|
||
|
||
### 4. Analisis de Rentabilidad y Margenes
|
||
|
||
**Analisis financiero por proyecto:**
|
||
- Ingresos totales (precio de venta × unidades)
|
||
- Costos totales (presupuesto + desviaciones)
|
||
- Margen bruto y margen neto
|
||
- Punto de equilibrio (unidades minimas a vender)
|
||
- Margen de seguridad
|
||
|
||
**Comparacion de rentabilidad por prototipo:**
|
||
- Costo unitario por m2
|
||
- Precio de venta por m2
|
||
- Margen por prototipo
|
||
- Rentabilidad relativa entre modelos
|
||
|
||
**Simulador de escenarios:**
|
||
- Escenario optimista (-5% costos, +3% precio)
|
||
- Escenario base (valores actuales)
|
||
- Escenario pesimista (+8% costos, -2% precio)
|
||
|
||
**Matriz de sensibilidad:**
|
||
- Impacto de variaciones de precio de venta (-10% a +10%)
|
||
- Impacto de variaciones de costo (-10% a +10%)
|
||
- Mapa de calor de rentabilidad
|
||
|
||
**Ejemplo de analisis:**
|
||
```
|
||
Proyecto: Residencial Los Pinos (150 viviendas)
|
||
Ingresos: $165.75M (150 × $1.105M)
|
||
Costos: $153.70M
|
||
Margen Bruto: $12.05M (7.3%)
|
||
Punto de Equilibrio: 110 viviendas (73%)
|
||
Margen de Seguridad: 27%
|
||
Resultado: Proyecto viable con margen saludable
|
||
```
|
||
|
||
---
|
||
|
||
## Reutilizacion del Core ERP (30%)
|
||
|
||
Este modulo aprovecha la infraestructura del ERP Core:
|
||
|
||
| Componente Core | Uso en MAI-003 | % Reutilizacion |
|
||
|-----------------|----------------|-----------------|
|
||
| **MGN-001 (Usuarios)** | Gestion de usuarios con permisos | 100% |
|
||
| **MGN-002 (RBAC)** | Roles: Presupuestista, Director de Costos, Analista | 100% |
|
||
| **MGN-003 (Multi-tenant)** | Aislamiento de catalogos por constructora | 100% |
|
||
| **MGN-005 (Catalogos)** | Base para catalogo de conceptos | 70% |
|
||
| **MGN-007 (Auditoria)** | Trazabilidad de cambios en precios y presupuestos | 100% |
|
||
| **MGN-008 (Notificaciones)** | Alertas de desviaciones criticas | 100% |
|
||
|
||
**Total estimado de reutilizacion:** 30% del codigo proviene del core, 70% es especifico del modulo.
|
||
|
||
---
|
||
|
||
## Lista de Requerimientos Funcionales
|
||
|
||
### Requerimientos Funcionales (4)
|
||
|
||
1. **[RF-COST-001: Catalogo de Conceptos y Precios Unitarios](./requerimientos/RF-COST-001-catalogo-conceptos-precios.md)**
|
||
- Catalogo maestro de conceptos (material, mano de obra, maquinaria, compuesto)
|
||
- Analisis de Precios Unitarios (APU) detallado
|
||
- Versionado y historial de precios
|
||
- Regionalizacion de precios
|
||
- Importacion/exportacion Excel, OPUS, Neodata
|
||
|
||
2. **[RF-COST-002: Presupuestos Maestros (Obra, Etapa, Prototipo)](./requerimientos/RF-COST-002-presupuestos-maestros.md)**
|
||
- Presupuesto de obra con desglose CMIC
|
||
- Presupuesto de etapa por fase constructiva
|
||
- Presupuesto de prototipo con generadores automaticos
|
||
- Versionado completo (baseline, ajustes, cambios)
|
||
- Curva S y distribucion temporal
|
||
|
||
3. **[RF-COST-003: Control de Costos Reales y Desviaciones](./requerimientos/RF-COST-003-control-costos-reales.md)**
|
||
- Registro automatico desde compras, nomina, subcontratos
|
||
- Dashboard con curva S
|
||
- Calculo de desviaciones (precio, cantidad, mixta)
|
||
- Proyecciones EAC (3 metodos)
|
||
- Alertas automaticas y planes de accion
|
||
|
||
4. **[RF-COST-004: Analisis de Rentabilidad y Margenes](./requerimientos/RF-COST-004-analisis-rentabilidad.md)**
|
||
- Analisis financiero por proyecto
|
||
- Comparacion de rentabilidad por prototipo
|
||
- Punto de equilibrio y margen de seguridad
|
||
- Simulador de escenarios
|
||
- Matriz de sensibilidad
|
||
|
||
### Especificaciones Tecnicas (4)
|
||
|
||
1. **[ET-COST-001: Implementacion del Catalogo de Conceptos](./especificaciones/ET-COST-001-implementacion-catalogo.md)**
|
||
2. **[ET-COST-002: Implementacion de Presupuestos](./especificaciones/ET-COST-002-implementacion-presupuestos.md)**
|
||
3. **[ET-COST-003: Implementacion de Control de Costos](./especificaciones/ET-COST-003-implementacion-control-costos.md)**
|
||
4. **[ET-COST-004: Implementacion de Analisis de Rentabilidad](./especificaciones/ET-COST-004-implementacion-rentabilidad.md)**
|
||
|
||
### Historias de Usuario (8)
|
||
|
||
**Sprint 7 (13 SP):**
|
||
- [US-COST-001: Catalogo de Conceptos y Busqueda](./historias-usuario/US-COST-001-catalogo-conceptos.md) - 5 SP
|
||
- [US-COST-002: Precios Unitarios Compuestos](./historias-usuario/US-COST-002-precios-compuestos.md) - 5 SP
|
||
- [US-COST-003: Actualizacion Masiva de Precios](./historias-usuario/US-COST-003-actualizacion-precios.md) - 3 SP
|
||
|
||
**Sprint 8 (13 SP):**
|
||
- [US-COST-004: Presupuesto de Obra Completo](./historias-usuario/US-COST-004-presupuesto-obra.md) - 8 SP
|
||
- [US-COST-005: Presupuesto de Prototipo con Generadores](./historias-usuario/US-COST-005-presupuesto-prototipo.md) - 5 SP
|
||
|
||
**Sprint 9 (10 SP):**
|
||
- [US-COST-006: Dashboard de Control de Costos Reales](./historias-usuario/US-COST-006-dashboard-control.md) - 5 SP
|
||
- [US-COST-007: Analisis de Desviaciones y Plan de Accion](./historias-usuario/US-COST-007-analisis-desviaciones.md) - 5 SP
|
||
|
||
**Sprint 10 (5 SP):**
|
||
- [US-COST-008: Analisis de Rentabilidad y Simulaciones](./historias-usuario/US-COST-008-analisis-rentabilidad.md) - 5 SP
|
||
|
||
---
|
||
|
||
## Dependencias con Otros Modulos
|
||
|
||
### Modulos que MAI-003 Consume (Input)
|
||
|
||
| Modulo | Relacion | Datos Compartidos |
|
||
|--------|----------|-------------------|
|
||
| **MAI-001 (Fundamentos)** | Lee configuracion base | Catalogos generales, parametros de sistema |
|
||
| **MAI-002 (Proyectos)** | Lee estructura de proyectos | Proyectos, etapas, prototipos, caracteristicas |
|
||
| **MAI-004 (Compras)** | Lee ordenes de compra | Costos reales de materiales, precios de proveedores |
|
||
| **MAI-005 (Control de Obra)** | Lee avances fisicos | Porcentaje de avance por partida, volumenes ejecutados |
|
||
| **MAI-012 (Contratos)** | Lee subcontratos | Costos de subcontratistas, alcances contratados |
|
||
|
||
### Modulos que Consumen MAI-003 (Output)
|
||
|
||
| Modulo | Relacion | Datos Compartidos |
|
||
|--------|----------|-------------------|
|
||
| **MAI-002 (Proyectos)** | Provee costos unitarios | Costo por prototipo, margen esperado |
|
||
| **MAI-004 (Compras)** | Provee presupuesto de materiales | Alertas de precios fuera de presupuesto |
|
||
| **MAI-005 (Control de Obra)** | Provee presupuesto base | Cantidades presupuestadas por partida |
|
||
| **MAI-008 (Estimaciones)** | Provee precios unitarios | Conceptos y PU para generacion de estimaciones |
|
||
| **MAI-006 (Reportes)** | Provee datos financieros | Indicadores de rentabilidad, desviaciones |
|
||
|
||
### Diagrama de Dependencias
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────────────┐
|
||
│ MAI-003: Presupuestos │
|
||
│ │
|
||
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
|
||
│ │ Catalogo │ │ Presupuestos │ │ Control │ │
|
||
│ │ Conceptos │→→│ Maestros │→→│ Costos │ │
|
||
│ └──────────────┘ └──────────────┘ └──────────────┘ │
|
||
│ ↓ ↓ ↓ │
|
||
│ ┌─────────────────────────────────────────────────┐ │
|
||
│ │ Analisis de Rentabilidad │ │
|
||
│ └─────────────────────────────────────────────────┘ │
|
||
└─────────────────────────────────────────────────────────────┘
|
||
↑ ↑ ↑
|
||
│ │ │
|
||
┌─────┴──────┐ ┌─────┴──────┐ ┌─────┴──────┐
|
||
│ MAI-002 │ │ MAI-004 │ │ MAI-005 │
|
||
│ Proyectos │ │ Compras │ │ Control │
|
||
└────────────┘ └────────────┘ └────────────┘
|
||
```
|
||
|
||
---
|
||
|
||
## Diagrama de Arquitectura
|
||
|
||
### Arquitectura de 3 Capas
|
||
|
||
```
|
||
┌────────────────────────────────────────────────────────────────┐
|
||
│ CAPA DE PRESENTACION │
|
||
│ (React + Vite) │
|
||
├────────────────────────────────────────────────────────────────┤
|
||
│ │
|
||
│ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐ │
|
||
│ │ Catalogo │ │ Presupuestos │ │ Control │ │
|
||
│ │ Conceptos │ │ Maestros │ │ Costos │ │
|
||
│ │ │ │ │ │ │ │
|
||
│ │ - Lista con │ │ - Wizard de │ │ - Dashboard │ │
|
||
│ │ busqueda │ │ creacion │ │ Curva S │ │
|
||
│ │ - Formulario │ │ - Generadores │ │ - Analisis de │ │
|
||
│ │ APU │ │ automaticos │ │ desviaciones│ │
|
||
│ │ - Historial │ │ - Versionado │ │ - Alertas │ │
|
||
│ └───────────────┘ └───────────────┘ └───────────────┘ │
|
||
│ │
|
||
└────────────────────────────────────────────────────────────────┘
|
||
↓ REST API
|
||
┌────────────────────────────────────────────────────────────────┐
|
||
│ CAPA DE NEGOCIO │
|
||
│ (NestJS) │
|
||
├────────────────────────────────────────────────────────────────┤
|
||
│ │
|
||
│ ┌──────────────────────────────────────────────────────┐ │
|
||
│ │ BudgetsModule │ │
|
||
│ ├──────────────────────────────────────────────────────┤ │
|
||
│ │ │ │
|
||
│ │ Services: │ │
|
||
│ │ - ConceptCatalogService (CRUD conceptos) │ │
|
||
│ │ - APUCalculatorService (calculo PU compuestos) │ │
|
||
│ │ - BudgetService (CRUD presupuestos) │ │
|
||
│ │ - BudgetGeneratorService (generadores automaticos) │ │
|
||
│ │ - CostControlService (registro costos reales) │ │
|
||
│ │ - VarianceAnalysisService (analisis desviaciones) │ │
|
||
│ │ - ProfitabilityService (analisis rentabilidad) │ │
|
||
│ │ │ │
|
||
│ │ Controllers: │ │
|
||
│ │ - ConceptCatalogController (9 endpoints) │ │
|
||
│ │ - BudgetController (12 endpoints) │ │
|
||
│ │ - CostControlController (8 endpoints) │ │
|
||
│ │ - ProfitabilityController (6 endpoints) │ │
|
||
│ │ │ │
|
||
│ │ Cron Jobs: │ │
|
||
│ │ - CostAnalysisTask.analyzeDailyCosts() (6:00 AM) │ │
|
||
│ │ │ │
|
||
│ └──────────────────────────────────────────────────────┘ │
|
||
│ │
|
||
└────────────────────────────────────────────────────────────────┘
|
||
↓ TypeORM
|
||
┌────────────────────────────────────────────────────────────────┐
|
||
│ CAPA DE DATOS │
|
||
│ (PostgreSQL 14+) │
|
||
├────────────────────────────────────────────────────────────────┤
|
||
│ │
|
||
│ Schema: budgets │
|
||
│ ┌──────────────────────────────────────────────────────┐ │
|
||
│ │ │ │
|
||
│ │ Tablas Principales: │ │
|
||
│ │ - concept_catalog (conceptos base) │ │
|
||
│ │ - concept_price_history (historial precios) │ │
|
||
│ │ - regions (regionalizacion) │ │
|
||
│ │ - budgets (presupuestos maestros) │ │
|
||
│ │ - budget_items (partidas jerarquicas) │ │
|
||
│ │ - budget_versions (versionado) │ │
|
||
│ │ - actual_costs (costos reales) │ │
|
||
│ │ - cost_variances (desviaciones) │ │
|
||
│ │ - cost_projections (proyecciones EAC) │ │
|
||
│ │ - profitability_analysis (analisis rentabilidad) │ │
|
||
│ │ - prototype_profitability (rentabilidad prototipo) │ │
|
||
│ │ │ │
|
||
│ │ Funciones SQL: │ │
|
||
│ │ - calculate_composite_price() (calculo PU) │ │
|
||
│ │ - calculate_variances() (desviaciones) │ │
|
||
│ │ - calculate_eac() (proyeccion costo final) │ │
|
||
│ │ - calculate_profitability() (rentabilidad) │ │
|
||
│ │ │ │
|
||
│ │ Triggers: │ │
|
||
│ │ - Auto-actualizacion de updated_at │ │
|
||
│ │ - Historial automatico de precios │ │
|
||
│ │ - Recalculo de totales en presupuestos │ │
|
||
│ │ - Alertas en desviaciones >5% │ │
|
||
│ │ │ │
|
||
│ └──────────────────────────────────────────────────────┘ │
|
||
│ │
|
||
└────────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
### Modelo de Datos Simplificado
|
||
|
||
```sql
|
||
-- Schema principal
|
||
CREATE SCHEMA budgets;
|
||
|
||
-- Tipos ENUM
|
||
CREATE TYPE budgets.concept_type AS ENUM ('material', 'labor', 'equipment', 'composite');
|
||
CREATE TYPE budgets.budget_scope AS ENUM ('project', 'stage', 'prototype');
|
||
CREATE TYPE budgets.budget_status AS ENUM ('draft', 'in_review', 'approved', 'active', 'completed');
|
||
|
||
-- Tabla principal de conceptos
|
||
CREATE TABLE budgets.concept_catalog (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
constructora_id UUID NOT NULL REFERENCES constructoras.constructoras(id),
|
||
code VARCHAR(50) NOT NULL,
|
||
name VARCHAR(255) NOT NULL,
|
||
concept_type budgets.concept_type NOT NULL,
|
||
category VARCHAR(100),
|
||
unit VARCHAR(20),
|
||
base_price DECIMAL(12,2),
|
||
region_id UUID REFERENCES budgets.regions(id),
|
||
is_active BOOLEAN DEFAULT true,
|
||
created_at TIMESTAMP DEFAULT NOW(),
|
||
updated_at TIMESTAMP DEFAULT NOW()
|
||
);
|
||
|
||
-- Tabla de presupuestos
|
||
CREATE TABLE budgets.budgets (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
constructora_id UUID NOT NULL REFERENCES constructoras.constructoras(id),
|
||
project_id UUID REFERENCES projects.projects(id),
|
||
code VARCHAR(50) NOT NULL,
|
||
scope budgets.budget_scope NOT NULL,
|
||
status budgets.budget_status DEFAULT 'draft',
|
||
total_amount DECIMAL(14,2),
|
||
created_at TIMESTAMP DEFAULT NOW(),
|
||
updated_at TIMESTAMP DEFAULT NOW()
|
||
);
|
||
|
||
-- Tabla de partidas del presupuesto
|
||
CREATE TABLE budgets.budget_items (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
budget_id UUID NOT NULL REFERENCES budgets.budgets(id),
|
||
concept_id UUID REFERENCES budgets.concept_catalog(id),
|
||
parent_id UUID REFERENCES budgets.budget_items(id),
|
||
quantity DECIMAL(12,4),
|
||
unit_price DECIMAL(12,2),
|
||
total_amount DECIMAL(14,2),
|
||
level INTEGER DEFAULT 0
|
||
);
|
||
|
||
-- Tabla de costos reales
|
||
CREATE TABLE budgets.actual_costs (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
budget_item_id UUID NOT NULL REFERENCES budgets.budget_items(id),
|
||
source_type VARCHAR(50), -- 'purchase', 'payroll', 'subcontract', 'manual'
|
||
source_id UUID,
|
||
quantity DECIMAL(12,4),
|
||
unit_cost DECIMAL(12,2),
|
||
total_cost DECIMAL(14,2),
|
||
cost_date DATE,
|
||
created_at TIMESTAMP DEFAULT NOW()
|
||
);
|
||
```
|
||
|
||
---
|
||
|
||
## Stack Tecnologico
|
||
|
||
### Backend
|
||
- **Framework:** NestJS 10+
|
||
- **ORM:** TypeORM con PostgreSQL
|
||
- **Validacion:** class-validator, class-transformer
|
||
- **Documentacion API:** Swagger/OpenAPI
|
||
- **Testing:** Jest
|
||
|
||
### Frontend
|
||
- **Framework:** React 18+ con TypeScript
|
||
- **Build Tool:** Vite 5+
|
||
- **Estado:** Zustand (stores por modulo)
|
||
- **UI Components:** shadcn/ui + Tailwind CSS
|
||
- **Formularios:** React Hook Form + Zod
|
||
- **Graficos:** Chart.js para Curva S
|
||
- **Tablas:** TanStack Table v8
|
||
|
||
### Base de Datos
|
||
- **DBMS:** PostgreSQL 14+
|
||
- **Schema:** `budgets`
|
||
- **RLS:** Row Level Security para multi-tenant
|
||
- **Triggers:** Auto-actualizacion de totales y alertas
|
||
- **Funciones:** Calculos complejos en SQL
|
||
|
||
### DevOps
|
||
- **Contenedores:** Docker + Docker Compose
|
||
- **CI/CD:** GitHub Actions
|
||
- **Migraciones:** TypeORM migrations
|
||
- **Monitoreo:** Logs estructurados con Winston
|
||
|
||
---
|
||
|
||
## Enlaces a Documentacion
|
||
|
||
### Documentacion Tecnica Detallada
|
||
|
||
- **[RESUMEN-EPICA-MAI-003.md](./RESUMEN-EPICA-MAI-003.md)** - Resumen ejecutivo completo de la epica
|
||
|
||
### Requerimientos Funcionales
|
||
- [RF-COST-001: Catalogo de Conceptos y Precios Unitarios](./requerimientos/RF-COST-001-catalogo-conceptos-precios.md)
|
||
- [RF-COST-002: Presupuestos Maestros](./requerimientos/RF-COST-002-presupuestos-maestros.md)
|
||
- [RF-COST-003: Control de Costos Reales](./requerimientos/RF-COST-003-control-costos-reales.md)
|
||
- [RF-COST-004: Analisis de Rentabilidad](./requerimientos/RF-COST-004-analisis-rentabilidad.md)
|
||
|
||
### Especificaciones Tecnicas
|
||
- [ET-COST-001: Implementacion del Catalogo](./especificaciones/ET-COST-001-implementacion-catalogo.md)
|
||
- [ET-COST-002: Implementacion de Presupuestos](./especificaciones/ET-COST-002-implementacion-presupuestos.md)
|
||
- [ET-COST-003: Implementacion de Control de Costos](./especificaciones/ET-COST-003-implementacion-control-costos.md)
|
||
- [ET-COST-004: Implementacion de Rentabilidad](./especificaciones/ET-COST-004-implementacion-rentabilidad.md)
|
||
|
||
### Historias de Usuario
|
||
- [Todas las historias de usuario (US-COST-001 a US-COST-008)](./historias-usuario/)
|
||
|
||
### Implementacion
|
||
- [Archivos de implementacion (SQL, migrations, seeds)](./implementacion/)
|
||
|
||
---
|
||
|
||
## Indicadores Clave (KPIs)
|
||
|
||
### Metricas de Adopcion
|
||
- **Proyectos con presupuesto formal:** >95%
|
||
- **Conceptos reutilizados del catalogo:** >90%
|
||
- **Conceptos duplicados:** <5%
|
||
|
||
### Metricas de Eficiencia
|
||
- **Tiempo de elaboracion de presupuesto:** <2 horas (vs 8-10h manual)
|
||
- **Busqueda de conceptos:** <200ms
|
||
- **Actualizacion masiva de precios:** <5 seg (500 conceptos)
|
||
- **Generacion de presupuesto:** <2 seg (100 partidas)
|
||
|
||
### Metricas de Calidad
|
||
- **Precision presupuesto vs real:** <3% desviacion
|
||
- **Alertas criticas con plan de accion:** 100% en <48h
|
||
- **Proyeccion EAC vs costo final:** <2% error
|
||
|
||
### Metricas de Rentabilidad
|
||
- **Proyectos con margen >= target:** >80%
|
||
- **Incremento de margen promedio:** +2 puntos anuales
|
||
- **ROI del portafolio:** >=12% anual
|
||
|
||
---
|
||
|
||
## Puntos Criticos
|
||
|
||
1. **Calidad del catalogo de conceptos** - Base de todo el sistema, requiere revision y depuracion continua
|
||
2. **Precision de generadores automaticos** - Formulas deben validarse contra casos reales
|
||
3. **Integracion con compras/nomina** - Registro automatico de costos reales depende de otros modulos
|
||
4. **Alertas de desviaciones** - Configuracion de umbrales critica para evitar spam
|
||
5. **Performance en calculos masivos** - Optimizacion de queries para presupuestos grandes (>1000 partidas)
|
||
|
||
---
|
||
|
||
## Roles y Permisos
|
||
|
||
| Rol | Permisos |
|
||
|-----|----------|
|
||
| **Presupuestista** | Crear/editar conceptos y presupuestos, actualizar precios |
|
||
| **Director de Costos** | Aprobar presupuestos, ver analisis de rentabilidad, configurar alertas |
|
||
| **Analista de Costos** | Registrar costos reales, analizar desviaciones, crear planes de accion |
|
||
| **Director General** | Ver dashboard global, aprobar presupuestos criticos (>$10M) |
|
||
| **Solo Lectura** | Ver presupuestos y reportes, sin edicion |
|
||
|
||
---
|
||
|
||
## Flujos de Trabajo
|
||
|
||
### Flujo 1: Creacion de Presupuesto de Obra
|
||
|
||
```
|
||
1. [Presupuestista] Crea nuevo presupuesto desde proyecto
|
||
2. [Sistema] Sugiere conceptos del catalogo segun tipo de proyecto
|
||
3. [Presupuestista] Agrega partidas y conceptos, define cantidades
|
||
4. [Sistema] Calcula automaticamente PU compuestos con APU
|
||
5. [Sistema] Genera totales por capitulo CMIC
|
||
6. [Presupuestista] Revisa y envia a aprobacion
|
||
7. [Director de Costos] Valida margenes y rentabilidad esperada
|
||
8. [Director General] Aprueba presupuesto (si >$10M)
|
||
9. [Sistema] Marca presupuesto como "Aprobado" (baseline)
|
||
10. [Sistema] Habilita control de costos reales para el proyecto
|
||
```
|
||
|
||
### Flujo 2: Control de Costos y Alertas
|
||
|
||
```
|
||
1. [Sistema] Registra automaticamente costos reales desde:
|
||
- Modulo de Compras (materiales)
|
||
- Modulo de Nomina (mano de obra)
|
||
- Modulo de Subcontratos (subcontratistas)
|
||
2. [Cron Job Diario] Recalcula desviaciones y proyecciones
|
||
3. [Sistema] Detecta desviacion >5% en capitulo "Estructura"
|
||
4. [Sistema] Envia alerta a Director de Costos y Analista
|
||
5. [Analista de Costos] Investiga causa de desviacion
|
||
6. [Analista] Crea plan de accion correctivo (obligatorio)
|
||
7. [Director de Costos] Revisa y aprueba plan de accion
|
||
8. [Sistema] Monitorea ejecucion de plan de accion
|
||
9. [Sistema] Actualiza proyeccion EAC con nuevas estimaciones
|
||
```
|
||
|
||
### Flujo 3: Analisis de Rentabilidad
|
||
|
||
```
|
||
1. [Director de Costos] Accede a dashboard de rentabilidad
|
||
2. [Sistema] Muestra analisis actualizado:
|
||
- Margen bruto por proyecto
|
||
- Comparacion de rentabilidad por prototipo
|
||
- Punto de equilibrio
|
||
3. [Director] Ejecuta simulador de escenarios
|
||
4. [Sistema] Calcula impacto de:
|
||
- Reducir costo de estructura 5%
|
||
- Incrementar precio de venta 2%
|
||
5. [Sistema] Muestra matriz de sensibilidad
|
||
6. [Director] Identifica prototipos con baja rentabilidad
|
||
7. [Director] Solicita optimizacion de presupuesto de prototipo
|
||
8. [Presupuestista] Ajusta concepto y crea nueva version
|
||
9. [Sistema] Recalcula rentabilidad con nuevo presupuesto
|
||
```
|
||
|
||
---
|
||
|
||
**Generado:** 2025-12-06
|
||
**Estado:** Completo
|
||
**Mantenedores:** @tech-lead @backend-team @frontend-team
|