# VALIDACION DDL vs INVENTARIOS - ERP CONSTRUCCION
**Fecha:** 2025-12-06
**Version:** 1.0.0
**Generado por:** Requirements-Analyst

---

## RESUMEN EJECUTIVO

| Metrica | Inventarios | DDL Real | Estado |
|---------|-------------|----------|--------|
| **Schemas** | 6 (+ 3 pendientes) | 7 implementados | DISCREPANCIA |
| **Tablas declaradas** | 57 | 65 | DISCREPANCIA |
| **HSE Schema** | "pendiente" | 58 tablas implementadas | DESACTUALIZADO |
| **ENUMs** | 22 | 89 (22 base + 67 HSE) | DESACTUALIZADO |

### Conclusion General
Los inventarios MASTER_INVENTORY.yml y DATABASE_INVENTORY.yml estan **DESACTUALIZADOS** respecto al DDL implementado. El schema HSE con 58 tablas y 67 ENUMs ya fue implementado pero los inventarios lo marcan como "pendiente".

---

## 1. ANALISIS DE OBJETOS DDL IMPLEMENTADOS

### 1.1 Schemas Creados (7 schemas de negocio)

| Schema | Origen | Tablas | ENUMs | Estado |
|--------|--------|--------|-------|--------|
| core | construccion | 2 | 0 | Implementado |
| core_shared | construccion | 0 | 0 | Implementado (funciones) |
| construction | construccion | 2 | 0 | Implementado |
| hr | construccion | 3 | 0 | Implementado |
| hse | construccion | 58 | 67 | **IMPLEMENTADO** |
| estimates | construccion | 0 | 0 | Schema vacio |
| infonavit | construccion | 0 | 0 | Schema vacio |

### 1.2 Tablas por Schema (Conteo Real del DDL)

#### core (2 tablas)
- `core.tenants` - Multi-tenancy base
- `core.users` - Usuarios base

#### construction (2 tablas)
- `construction.proyectos` - Proyectos de desarrollo
- `construction.fraccionamientos` - Obras/fraccionamientos

#### hr (3 tablas)
- `hr.employees` - Empleados
- `hr.puestos` - Catalogo de puestos
- `hr.employee_fraccionamientos` - Asignacion empleados a obras

#### hse (58 tablas) - RF-MAA017-001 a RF-MAA017-008

**RF-MAA017-001 Gestion de Incidentes (5 tablas):**
- `hse.incidentes`
- `hse.incidente_involucrados`
- `hse.incidente_investigacion`
- `hse.incidente_acciones`
- `hse.incidente_evidencias`

**RF-MAA017-002 Control de Capacitaciones (6 tablas):**
- `hse.capacitaciones`
- `hse.capacitacion_matriz`
- `hse.instructores`
- `hse.capacitacion_sesiones`
- `hse.capacitacion_asistentes`
- `hse.constancias_dc3`

**RF-MAA017-003 Inspecciones de Seguridad (7 tablas):**
- `hse.tipos_inspeccion`
- `hse.checklist_items`
- `hse.programa_inspecciones`
- `hse.inspecciones`
- `hse.inspeccion_evaluaciones`
- `hse.hallazgos`
- `hse.hallazgo_evidencias`

**RF-MAA017-004 Control de EPP (7 tablas):**
- `hse.epp_catalogo`
- `hse.epp_matriz_puesto`
- `hse.epp_asignaciones`
- `hse.epp_inspecciones`
- `hse.epp_bajas`
- `hse.epp_inventario`
- `hse.epp_movimientos`

**RF-MAA017-005 Cumplimiento STPS (11 tablas):**
- `hse.normas_stps`
- `hse.norma_requisitos`
- `hse.cumplimiento_obra`
- `hse.comision_seguridad`
- `hse.comision_integrantes`
- `hse.comision_recorridos`
- `hse.programa_seguridad`
- `hse.programa_actividades`
- `hse.documentos_stps`
- `hse.auditorias`

**RF-MAA017-006 Gestion Ambiental (9 tablas):**
- `hse.residuos_catalogo`
- `hse.residuos_generacion`
- `hse.almacen_temporal`
- `hse.proveedores_ambientales`
- `hse.manifiestos_residuos`
- `hse.manifiesto_detalle`
- `hse.impacto_ambiental`
- `hse.quejas_ambientales`

**RF-MAA017-007 Permisos de Trabajo (8 tablas):**
- `hse.tipos_permiso_trabajo`
- `hse.permisos_trabajo`
- `hse.permiso_personal`
- `hse.permiso_autorizaciones`
- `hse.permiso_checklist`
- `hse.permiso_monitoreos`
- `hse.permiso_eventos`
- `hse.permiso_documentos`

**RF-MAA017-008 Indicadores HSE (6 tablas):**
- `hse.indicadores_config`
- `hse.indicadores_meta_obra`
- `hse.indicadores_valores`
- `hse.horas_trabajadas`
- `hse.dias_sin_accidente`
- `hse.reportes_programados`
- `hse.alertas_indicadores`

### 1.3 ENUMs Implementados (89 total)

**ENUMs HSE (67):**
- Incidentes: `tipo_incidente`, `gravedad_incidente`, `estado_incidente`, `rol_involucrado`, `factor_causa`
- Capacitaciones: `tipo_capacitacion`, `estado_sesion`
- Inspecciones: `frecuencia`, `estado_inspeccion`, `resultado_evaluacion`, `gravedad_hallazgo`, `estado_hallazgo`, `tipo_evidencia`
- EPP: `categoria_epp`, `estado_epp`, `estado_inspeccion_epp`, `motivo_baja_epp`, `tipo_movimiento_epp`
- STPS: `estado_comision`, `rol_comision`, `representacion`, `estado_recorrido`, `estado_programa`, `tipo_actividad_programa`, `estado_actividad`, `tipo_documento_stps`, `tipo_auditoria`, `resultado_auditoria`, `estado_cumplimiento`
- Ambiental: `categoria_residuo`, `unidad_residuo`, `estado_residuo`, `estado_almacen`, `tipo_proveedor_ambiental`, `estado_manifiesto`, `tipo_impacto`, `severidad`, `probabilidad`, `nivel_riesgo`, `estado_impacto`, `origen_queja`, `tipo_queja`, `estado_queja`
- Permisos: `estado_permiso`, `rol_permiso`, `decision_autorizacion`, `momento_checklist`, `tipo_evento_permiso`
- Indicadores: `tipo_indicador`, `frecuencia_calculo`, `periodo_tipo`, `estado_semaforo`, `fuente_horas`, `tipo_reporte_hse`, `formato_reporte`, `tipo_alerta_indicador`

---

## 2. DISCREPANCIAS DETECTADAS

### 2.1 MASTER_INVENTORY.yml

| Campo | Valor Actual | Valor Correcto | Accion |
|-------|--------------|----------------|--------|
| `metricas.database.schemas` | 6 | 7 | Actualizar a 7 |
| `metricas.database.tablas` | 57 | 65 | Actualizar a 65 |
| `metricas.database.enums` | 22 | 89 | Actualizar a 89 |
| `schemas.hse.estado` | "pendiente" | "implementado" | Actualizar |
| `schemas.hse.tablas` | 0 | 58 | Actualizar a 58 |
| `schemas.hse.ddl` | "pendiente" | "03-hse-schema-ddl.sql" | Actualizar |
| `modulos_fase_3.MAA-017.tablas` | 11 items | 58 items | Actualizar lista completa |

### 2.2 DATABASE_INVENTORY.yml

| Campo | Valor Actual | Valor Correcto | Accion |
|-------|--------------|----------------|--------|
| `resumen.schemas` | 6 | 7 | Actualizar |
| `resumen.tablas` | 57 | 65 | Actualizar |
| `resumen.enums` | 22 | 89 | Actualizar |
| Schema `hse` | No existe | Agregar seccion completa | FALTA |
| Tablas HSE | 0 | 58 | Agregar todas |

### 2.3 Tablas Faltantes en Inventarios

Las siguientes 58 tablas HSE + 2 core + 2 construction + 3 hr = 65 tablas existen en DDL pero el inventario solo declara 57:

**FALTANTES:**
- Todas las 58 tablas del schema `hse`
- Las 2 tablas minimas de `core` (tenants, users)
- La tabla `hr.puestos`
- La tabla `hr.employee_fraccionamientos`
- Las tablas de `construction` tienen nombres distintos en inventario vs DDL:
  - Inventario: `fraccionamientos` (sin proyecto_id directo)
  - DDL: `proyectos` + `fraccionamientos` (con proyecto_id)

---

## 3. TRAZABILIDAD RF -> DDL

### 3.1 Modulo MAA-017 Seguridad HSE

| RF | Nombre | Tablas DDL | Trazabilidad |
|----|--------|------------|--------------|
| RF-MAA017-001 | Gestion de Incidentes | 5 tablas | COMPLETA |
| RF-MAA017-002 | Control de Capacitaciones | 6 tablas | COMPLETA |
| RF-MAA017-003 | Inspecciones de Seguridad | 7 tablas | COMPLETA |
| RF-MAA017-004 | Control de EPP | 7 tablas | COMPLETA |
| RF-MAA017-005 | Cumplimiento STPS | 11 tablas | COMPLETA |
| RF-MAA017-006 | Gestion Ambiental | 9 tablas | COMPLETA |
| RF-MAA017-007 | Permisos de Trabajo | 8 tablas | COMPLETA |
| RF-MAA017-008 | Indicadores HSE | 7 tablas | COMPLETA |

**Total:** 8 RFs -> 58 tablas + 67 ENUMs

### 3.2 Otros Modulos (Inventariados pero NO implementados en DDL)

| Modulo | Tablas Inventario | Tablas DDL | Estado |
|--------|-------------------|------------|--------|
| MAI-002 | 8 | 2 (proyectos, fraccionamientos) | PARCIAL |
| MAI-003 | 3 | 0 | SIN DDL |
| MAI-004 | 9 | 0 | SIN DDL |
| MAI-005 | 5 | 0 | SIN DDL |
| MAI-007 | 8 | 3 (employees, puestos, employee_fracc) | PARCIAL |
| MAI-008 | 8 | 0 | SIN DDL |
| MAI-009 | 5 | 0 | SIN DDL |
| MAI-010 | 1 | 0 | SIN DDL |
| MAI-011 | 7 | 0 | SIN DDL |
| MAI-012 | 3 | 0 | SIN DDL |

---

## 4. POLITICA DE CARGA LIMPIA

### 4.1 Cumplimiento

| Check | Estado | Detalle |
|-------|--------|---------|
| No carpeta migrations/ | OK | No existe |
| No archivos fix-*.sql | OK | No existen |
| No archivos migration-*.sql | OK | No existen |
| Existe drop-and-recreate-database.sh | OK | Existe y es ejecutable |
| DDL en schemas/ | OK | 3 archivos SQL |
| Archivo init existe | OK | init-scripts/01-init-database.sql |

**Resultado:** POLITICA CUMPLIDA (6/6 checks)

### 4.2 Archivos DDL Actuales

```
database/
├── init-scripts/
│   └── 01-init-database.sql      # Extensiones, schemas base, funciones core
├── schemas/
│   ├── 01-construction-schema-ddl.sql  # proyectos, fraccionamientos
│   ├── 02-hr-schema-ddl.sql            # employees, puestos, employee_fracc
│   └── 03-hse-schema-ddl.sql           # 58 tablas HSE
├── drop-and-recreate-database.sh       # Script carga limpia
└── validate-clean-load-policy.sh       # Validador de politica
```

---

## 5. ACCIONES REQUERIDAS

### 5.1 Prioridad ALTA (Inventarios Desactualizados)

1. **Actualizar MASTER_INVENTORY.yml:**
   - Cambiar `schemas.hse.estado` de "pendiente" a "implementado"
   - Cambiar `schemas.hse.tablas` de 0 a 58
   - Agregar `schemas.hse.ddl: 03-hse-schema-ddl.sql`
   - Actualizar conteos globales

2. **Actualizar DATABASE_INVENTORY.yml:**
   - Agregar seccion completa para schema `hse` con 58 tablas
   - Agregar 67 ENUMs de HSE
   - Actualizar conteos en resumen

### 5.2 Prioridad MEDIA (Completar DDL Faltante)

Los siguientes schemas tienen tablas inventariadas pero NO implementadas:

| Schema | Tablas Faltantes | DDL Requerido |
|--------|------------------|---------------|
| construction | 22 tablas | construction-schema-ddl.sql (expandir) |
| estimates | 8 tablas | estimates-schema-ddl.sql (crear) |
| infonavit | 8 tablas | infonavit-schema-ddl.sql (crear) |
| hr | 5 tablas | hr-schema-ddl.sql (expandir) |
| inventory | 4 tablas | inventory-ext-schema-ddl.sql (crear) |
| purchase | 5 tablas | purchase-ext-schema-ddl.sql (crear) |

### 5.3 Prioridad BAJA (Documentacion)

- Crear TRACEABILITY.yml por modulo cuando se implemente
- Actualizar README de database/ con estructura actual

---

## 6. RESUMEN FINAL

### Estado Actual

```
DDL Implementado:
├── core: 2 tablas (tenants, users)
├── construction: 2 tablas
├── hr: 3 tablas
├── hse: 58 tablas + 67 ENUMs  ← IMPLEMENTADO (inventario dice "pendiente")
├── estimates: schema vacio
├── infonavit: schema vacio
├── inventory: schema vacio
└── purchase: schema vacio

Total: 65 tablas, 89 ENUMs
```

### Inventarios Declaran

```
MASTER + DATABASE_INVENTORY:
├── construction: 24 tablas (22 sin DDL)
├── estimates: 8 tablas (sin DDL)
├── infonavit: 8 tablas (sin DDL)
├── hr: 8 tablas (5 sin DDL)
├── inventory: 4 tablas (sin DDL)
├── purchase: 5 tablas (sin DDL)
└── hse: "pendiente" (INCORRECTO - tiene 58 tablas)

Total declarado: 57 tablas, 22 ENUMs
```

### Gap Analysis

| Categoria | Inventario | DDL Real | Diferencia |
|-----------|------------|----------|------------|
| Tablas | 57 | 65 | +8 (HSE +58, otros -50) |
| ENUMs | 22 | 89 | +67 (todos HSE) |
| Schemas implementados | 6 | 7 | +1 (hse) |

---

**Documento generado automaticamente como parte de la validacion de Sprint 0.**
