erp-construccion/docs/02-definicion-modulos/MAI-005-control-obra-avances/requerimientos/RF-PROG-001-programacion-curva-s.md

403 lines
16 KiB
Markdown
Raw Permalink 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.

# RF-PROG-001: Programación de Obra y Curva S
**Épica:** MAI-005 - Control de Obra y Avances
**Versión:** 1.0
**Fecha:** 2025-11-17
---
## 1. Descripción General
Sistema de programación de obra con calendarización de actividades, asignación de frentes de trabajo y generación automática de curva S. Permite comparar avance programado vs ejecutado en tiempo real para detección temprana de desviaciones.
---
## 2. Objetivos de Negocio
- **Planeación:** Calendario maestro de obra con hitos clave
- **Control:** Seguimiento programado vs real semanal
- **Anticipación:** Detección de retrasos antes de que impacten la entrega
- **Visibilidad:** Curva S para clientes, dirección e INFONAVIT
---
## 3. Alcance Funcional
### 3.1 Programación Maestra de Obra
**Definición de Calendario:**
```
┌───────────────────────────────────────────────────────┐
│ PROGRAMACIÓN - Fracc. Los Pinos │
│ Inicio: 01/Ene/2025 | Entrega: 31/Dic/2025 (52 sem) │
├───────────────────────────────────────────────────────┤
│ ■ Hitos Clave │
│ 01/Ene/2025 Inicio de obra │
│ 15/Feb/2025 Fin excavación y cimentación │
│ 30/Abr/2025 Fin estructura (muros y losas) │
│ 31/Jul/2025 Fin instalaciones │
│ 30/Sep/2025 Fin acabados │
│ 15/Nov/2025 Fin urbanización │
│ 31/Dic/2025 Entrega final │
│ │
│ ■ Estructura de Programa │
│ Viviendas totales: 150 │
│ Etapas: 3 (50 viviendas c/u) │
│ Frentes simultáneos: 2-3 por etapa │
│ Duración estimada: 52 semanas │
│ │
│ ■ Restricciones │
│ No se puede iniciar estructura sin terminar cim. │
│ Instalaciones requiere muros al 100% │
│ Acabados requiere instalaciones al 100% │
└───────────────────────────────────────────────────────┘
```
### 3.2 Programación por Actividad (Conceptos)
**Desglose de Conceptos:**
```
PROYECTO: Fracc. Los Pinos - Etapa 1 (50 viviendas)
┌─────────────────────────────────────────────────────────────────┐
│ Partida │ Duración│ Inicio │ Fin │ % Avance│Status││
├──────────────────┼─────────┼─────────┼─────────┼─────────┼─────┤│
│ 01-Preliminares │ 2 sem │01/Ene/25│14/Ene/25│ 100% │ ✓ ││
│ Limpia terreno │ 1 sem │01/Ene/25│07/Ene/25│ 100% │ ✓ ││
│ Trazo y niveles│ 1 sem │08/Ene/25│14/Ene/25│ 100% │ ✓ ││
│ │
│ 02-Cimentación │ 6 sem │15/Ene/25│25/Feb/25│ 85% │ 🟡 ││
│ Excavación │ 1.5 sem │15/Ene/25│25/Ene/25│ 100% │ ✓ ││
│ Plantilla │ 0.5 sem │26/Ene/25│29/Ene/25│ 100% │ ✓ ││
│ Cimentación │ 2 sem │30/Ene/25│12/Feb/25│ 90% │ 🟡 ││
│ Rellenos │ 2 sem │13/Feb/25│25/Feb/25│ 60% │ 🔴 ││
│ │
│ 03-Estructura │ 8 sem │26/Feb/25│22/Abr/25│ 12% │ ⏳ ││
│ Muros PB │ 3 sem │26/Feb/25│18/Mar/25│ 35% │ 🟡 ││
│ Losa PB │ 2 sem │19/Mar/25│01/Abr/25│ 0% │ ⏳ ││
│ Muros PA │ 2 sem │02/Abr/25│15/Abr/25│ 0% │ ⏳ ││
│ Losa azotea │ 1 sem │16/Abr/25│22/Abr/25│ 0% │ ⏳ ││
│ │
│ 04-Instalaciones │ 10 sem │23/Abr/25│02/Jul/25│ 0% │ ⏳ ││
│ 05-Acabados │ 12 sem │03/Jul/25│24/Sep/25│ 0% │ ⏳ ││
│ 06-Urbanización │ 6 sem │25/Sep/25│05/Nov/25│ 0% │ ⏳ ││
└─────────────────────────────────────────────────────────────────┘
Leyenda:
✓ Completo 🟡 En proceso 🔴 Atrasado ⏳ No iniciado
```
### 3.3 Curva S (Programado vs Real)
**Vista Gráfica:**
```
CURVA S - Fracc. Los Pinos Etapa 1
Avance Acumulado (%)
100│ ╱─
│ ╱───
90│ ╱───
│ ╱──── Real (85%)
80│ ╱────
│ ╱──── Programado (92%)
70│ ╱────
│ ╱──── Desviación: -7%
60│────
│ Status: 🟡 RETRASO LEVE
50│
40│
30│
20│
10│
0└─────────────────────────────────────────────────────→
Ene Feb Mar Abr May Jun Jul Ago Sep Oct Nov Dic
■ Programado acumulado: 92%
■ Real acumulado: 85%
■ Desviación: -7 puntos porcentuales
■ Tendencia: Retraso leve, recuperable con aceleración
```
**Análisis de Desviación:**
```
┌──────────────────────────────────────────────────────┐
│ ANÁLISIS DE DESVIACIÓN - Semana 10 │
├──────────────────────────────────────────────────────┤
│ Avance programado: 92% │
│ Avance real: 85% │
│ Desviación: -7% 🟡 │
│ │
│ ■ Conceptos críticos atrasados: │
│ • Rellenos: -30% (60% vs 90% esperado) │
│ Causa: Lluvia y material húmedo │
│ Impacto: Retraso de 2 semanas │
│ │
│ • Muros PB: -15% (35% vs 50% esperado) │
│ Causa: Falta de cuadrilla de block │
│ Impacto: Retraso de 1 semana │
│ │
│ ■ Proyección al 100%: │
│ Si continúa tendencia: 3 semanas de retraso │
│ Entrega proyectada: 21/Ene/2026 ⚠️ │
│ vs Comprometida: 31/Dic/2025 │
│ │
│ ■ Plan de recuperación: │
│ ✓ Contratar cuadrilla adicional de block │
│ ✓ Acelerar rellenos (2 frentes simultáneos) │
│ ✓ Turno extra fin de semana por 3 semanas │
│ → Recuperación estimada: 2 semanas │
│ → Nueva proyección: 07/Ene/2026 (1 sem retraso) │
└──────────────────────────────────────────────────────┘
```
### 3.4 Programación por Frentes de Trabajo
**Distribución de Viviendas:**
```
Etapa 1: 50 viviendas (Lotes 1-50)
┌──────────────────────────────────────────────────────┐
│ FRENTES DE TRABAJO - Semana 10 │
├──────────────────────────────────────────────────────┤
│ Frente A (Lotes 1-17) │
│ Actividad actual: Losa PB │
│ Avance: 95% (16 de 17 viviendas) │
│ Status: ✓ En tiempo │
│ Maestro: Juan Pérez │
│ │
│ Frente B (Lotes 18-33) │
│ Actividad actual: Muros PB │
│ Avance: 75% (12 de 16 viviendas) │
│ Status: 🟡 Leve retraso │
│ Maestro: Carlos López │
│ │
│ Frente C (Lotes 34-50) │
│ Actividad actual: Cimentación │
│ Avance: 85% (14 de 17 viviendas) │
│ Status: ✓ En tiempo │
│ Maestro: Miguel Hernández │
└──────────────────────────────────────────────────────┘
Vista Gantt por Frente:
│ S8 │ S9 │ S10 │ S11 │ S12 │ S13 │
───────┼─────┼─────┼─────┼─────┼─────┼─────┤
Frente A│████│████│████│Inst.│Inst.│Acab.│
Frente B│████│████│Muro│Losa │Inst.│Inst.│
Frente C│Cim.│Cim.│████│Muro│Losa │Inst.│
```
### 3.5 Hitos y Entregables
**Seguimiento de Hitos:**
```
┌──────────────────────────────────────────────────────┐
│ HITOS DEL PROYECTO │
├──────────────────────────────────────────────────────┤
│ Hito │ Fecha Prog│ Fecha Real│ Status ││
├────────────────────┼───────────┼───────────┼────────┤│
│ Inicio de obra │ 01/Ene/25 │ 01/Ene/25 │ ✓ ││
│ Fin trazo │ 14/Ene/25 │ 14/Ene/25 │ ✓ ││
│ Fin cimentación │ 15/Feb/25 │ 18/Feb/25 │ 🟡 +3d ││
│ 30% avance físico │ 28/Feb/25 │ 28/Feb/25 │ ✓ ││
│ Fin estructura │ 30/Abr/25 │ Proyect. │ ⏳ ││
│ 50% avance físico │ 15/May/25 │ Proyect. │ ⏳ ││
│ Fin instalaciones │ 31/Jul/25 │ Proyect. │ ⏳ ││
│ 80% avance físico │ 15/Ago/25 │ Proyect. │ ⏳ ││
│ Fin acabados │ 30/Sep/25 │ Proyect. │ ⏳ ││
│ Fin urbanización │ 15/Nov/25 │ Proyect. │ ⏳ ││
│ Entrega final │ 31/Dic/25 │ Proyect. │ ⏳ ││
└──────────────────────────────────────────────────────┘
Hitos críticos para financiamiento/INFONAVIT:
→ 30% avance: Desbloquea ministracion 2 ✓ Cumplido
→ 50% avance: Desbloquea ministracion 3 Pendiente
→ 80% avance: Desbloquea ministracion 4 Pendiente
```
### 3.6 Alertas Automáticas
**Tipos de Alertas:**
```
🔴 CRÍTICO: Retraso >10% en ruta crítica
Partida: Cimentación
Desviación: -12% (60% vs 72% programado)
Impacto: 2.5 semanas de retraso proyectado
Acción: Plan de aceleración requerido
🟡 WARNING: Retraso 5-10%
Partida: Muros PB
Desviación: -7% (35% vs 42% programado)
Impacto: 1 semana de retraso
Acción: Monitoreo estrecho
🟢 OK: En tiempo o adelantado
Partida: Losa PB (Frente A)
Avance: +3% (adelantado)
Status: Excelente
⏰ PRÓXIMO HITO: 15/Mar/2025 (3 días)
Hito: Fin de Muros PB
Probabilidad de cumplimiento: 85% 🟡
Requiere aceleración leve
```
---
## 4. Modelo de Datos
```typescript
// schedule (programa de obra)
{
id: UUID,
projectId: UUID,
version: INTEGER, // 1, 2, 3 (reprogramaciones)
status: ENUM('draft', 'approved', 'active', 'closed'),
startDate: DATE,
endDate: DATE,
totalDuration: INTEGER, // semanas
baselineDate: DATE, // fecha de aprobación de línea base
approvedBy: UUID,
metadata: JSONB,
createdAt: TIMESTAMP,
updatedAt: TIMESTAMP
}
// schedule_activities (actividades programadas)
{
id: UUID,
scheduleId: UUID,
activityCode: VARCHAR(20), // 02.01.03
activityName: VARCHAR(255),
budgetItemId: UUID, // vinculado a partida presupuestal
plannedStartDate: DATE,
plannedEndDate: DATE,
plannedDuration: INTEGER, // días
plannedQuantity: DECIMAL(12,4),
// Dependencias (finish-to-start por defecto)
predecessors: UUID[], // array de activity IDs
lag: INTEGER DEFAULT 0, // días de desfase
// Asignación
workfrontId: UUID, // frente de trabajo
responsibleId: UUID,
// Control
actualStartDate: DATE,
actualEndDate: DATE,
actualQuantity: DECIMAL(12,4),
percentComplete: DECIMAL(5,2) DEFAULT 0,
status: ENUM('not_started', 'in_progress', 'completed', 'delayed'),
isCriticalPath: BOOLEAN DEFAULT false,
isM ilestone: BOOLEAN DEFAULT false,
}
// workfronts (frentes de trabajo)
{
id: UUID,
projectId: UUID,
code: VARCHAR(20),
name: VARCHAR(255),
type: ENUM('by_zone', 'by_prototype', 'by_trade'),
assignedUnits: UUID[], // lotes/viviendas asignados
foremanId: UUID, // maestro responsable
crewSize: INTEGER,
isActive: BOOLEAN DEFAULT true,
}
// project_milestones (hitos)
{
id: UUID,
projectId: UUID,
code: VARCHAR(20),
name: VARCHAR(255),
milestoneType: ENUM('contractual', 'financing', 'internal'),
plannedDate: DATE,
baselineDate: DATE,
actualDate: DATE,
percentRequired: DECIMAL(5,2), // % de avance requerido
isFinancingGate: BOOLEAN, // desbloquea ministración
status: ENUM('pending', 'at_risk', 'achieved', 'missed'),
impact: VARCHAR(20), // low, medium, high, critical
}
// s_curve_snapshots (curva S histórica)
{
id: UUID,
projectId: UUID,
snapshotDate: DATE,
plannedProgressPct: DECIMAL(5,2),
actualProgressPct: DECIMAL(5,2),
variance: DECIMAL(5,2),
plannedValuePV: DECIMAL(15,2),
earnedValueEV: DECIMAL(15,2),
actualCostAC: DECIMAL(15,2),
spi: DECIMAL(5,3), // Schedule Performance Index = EV/PV
cpi: DECIMAL(5,3), // Cost Performance Index = EV/AC
createdAt: TIMESTAMP
}
// recovery_plans (planes de recuperación)
{
id: UUID,
projectId: UUID,
reason: TEXT,
plannedActions: JSONB,
/* [{
action: string,
responsibleId: UUID,
dueDate: DATE,
status: 'pending'|'done'
}] */
expectedRecovery: INTEGER, // días
actualRecovery: INTEGER,
status: ENUM('draft', 'approved', 'in_execution', 'completed'),
createdAt: TIMESTAMP
}
```
---
## 5. Criterios de Aceptación
- [ ] Programación maestra con inicio/fin de proyecto
- [ ] Desglose de actividades vinculadas a presupuesto
- [ ] Dependencias entre actividades (lógica finish-to-start)
- [ ] Asignación de frentes de trabajo
- [ ] Curva S programado vs real
- [ ] Cálculo automático de SPI (Schedule Performance Index)
- [ ] Registro de hitos contractuales y de financiamiento
- [ ] Alertas automáticas de desviaciones >5%
- [ ] Proyección de fecha de término
- [ ] Plan de recuperación para retrasos
---
**Estado:** ✅ Ready for Development