# Database Map - ERP Construccion

**Proyecto:** ERP Construccion
**Version:** 1.0
**Ultima Actualizacion:** 2025-12-12
**Total Schemas:** 7
**Total Tablas:** 110

---

## NAVEGACION RAPIDA

```
database/
├── _MAP.md                 # Este archivo (indice maestro)
├── schemas/                # DDL por schema
│   ├── 01-construction-schema-ddl.sql    # 24 tablas
│   ├── 02-hr-schema-ddl.sql              # 8 tablas
│   ├── 03-hse-schema-ddl.sql             # 58 tablas
│   ├── 04-estimates-schema-ddl.sql       # 8 tablas
│   ├── 05-infonavit-schema-ddl.sql       # 8 tablas
│   ├── 06-inventory-ext-schema-ddl.sql   # 4 tablas
│   └── 07-purchase-ext-schema-ddl.sql    # 5 tablas
├── init-scripts/           # Scripts de inicializacion
│   └── 01-init-database.sql
├── migrations/             # Migraciones TypeORM
├── seeds/                  # Datos de prueba
└── HERENCIA-ERP-CORE.md   # Referencia a ERP-Core
```

---

## SCHEMAS OVERVIEW

| # | Schema | Tablas | Descripcion | Estado |
|---|--------|--------|-------------|--------|
| 1 | `construction` | 24 | Proyectos, estructura, avances | ✅ DDL |
| 2 | `hr` | 8 | RRHH, asistencias, cuadrillas | ✅ DDL |
| 3 | `hse` | 58 | Seguridad, incidentes, EPP | ✅ DDL |
| 4 | `estimates` | 8 | Estimaciones, anticipos | ✅ DDL |
| 5 | `infonavit` | 8 | INFONAVIT, derechohabientes | ✅ DDL |
| 6 | `inventory` | 4 | Extension inventario obra | ✅ DDL |
| 7 | `purchase` | 5 | Extension compras obra | ✅ DDL |

---

## DETALLE POR SCHEMA

### 1. Schema: `construction` (24 tablas)

**DDL:** `schemas/01-construction-schema-ddl.sql`

#### Estructura de Proyecto (8 tablas)

| Tabla | Descripcion | FK Principales |
|-------|-------------|----------------|
| `proyectos` | Proyectos/obras | `auth.tenants`, `auth.users` |
| `fraccionamientos` | Fraccionamientos | `proyectos` |
| `etapas` | Etapas de construccion | `fraccionamientos` |
| `manzanas` | Manzanas | `etapas` |
| `lotes` | Lotes/unidades | `manzanas`, `prototipos` |
| `torres` | Torres (vertical) | `fraccionamientos` |
| `niveles` | Niveles/pisos | `torres` |
| `departamentos` | Departamentos | `niveles`, `prototipos` |
| `prototipos` | Tipos de vivienda | `fraccionamientos` |

#### Presupuestos (3 tablas)

| Tabla | Descripcion |
|-------|-------------|
| `conceptos` | Catalogo de conceptos de obra |
| `presupuestos` | Presupuestos maestros |
| `presupuesto_partidas` | Partidas presupuestales |

#### Programacion y Avances (5 tablas)

| Tabla | Descripcion |
|-------|-------------|
| `programa_obra` | Programa general de obra |
| `programa_actividades` | Actividades programadas |
| `avances_obra` | Registro de avances |
| `fotos_avance` | Evidencias fotograficas |
| `bitacora_obra` | Bitacora de obra |

#### Calidad (5 tablas)

| Tabla | Descripcion |
|-------|-------------|
| `checklists` | Checklists de calidad |
| `checklist_items` | Items de checklist |
| `inspecciones` | Inspecciones de calidad |
| `inspeccion_resultados` | Resultados |
| `tickets_postventa` | Tickets de postventa |

#### Contratos (3 tablas)

| Tabla | Descripcion |
|-------|-------------|
| `subcontratistas` | Catalogo subcontratistas |
| `contratos` | Contratos de obra |
| `contrato_partidas` | Partidas contratadas |

---

### 2. Schema: `hr` (8 tablas)

**DDL:** `schemas/02-hr-schema-ddl.sql`

| Tabla | Descripcion | Caracteristicas |
|-------|-------------|-----------------|
| `employees` | Empleados base | Extension de core |
| `employee_construction` | Extension construccion | Campos especificos |
| `puestos` | Catalogo de puestos | - |
| `asistencias` | Registro asistencias | GPS, biometrico |
| `asistencia_biometrico` | Datos biometricos | - |
| `geocercas` | Geocercas para GPS | PostGIS |
| `destajo` | Trabajo a destajo | - |
| `destajo_detalle` | Mediciones destajo | - |
| `cuadrillas` | Cuadrillas de trabajo | - |
| `cuadrilla_miembros` | Miembros de cuadrilla | - |
| `employee_fraccionamientos` | Asignacion a fracc | - |

---

### 3. Schema: `hse` (58 tablas)

**DDL:** `schemas/03-hse-schema-ddl.sql`

#### Gestion de Incidentes (5 tablas)
- `incidentes`, `incidente_involucrados`, `incidente_acciones`
- `incidente_evidencias`, `incidente_causas`

#### Control de Capacitaciones (6 tablas)
- `capacitaciones`, `capacitacion_participantes`, `capacitacion_materiales`
- `certificaciones`, `certificacion_empleados`, `plan_capacitacion`

#### Inspecciones de Seguridad (7 tablas)
- `inspecciones_seguridad`, `inspeccion_hallazgos`
- `checklist_seguridad`, `checklist_seguridad_items`
- `areas_riesgo`, `rondas_seguridad`, `ronda_puntos`

#### Control de EPP (7 tablas)
- `epp_catalogo`, `epp_asignaciones`, `epp_entregas`
- `epp_devoluciones`, `epp_inspecciones`
- `epp_vida_util`, `epp_stock`

#### Cumplimiento STPS (11 tablas)
- `normas_stps`, `requisitos_norma`, `cumplimiento_norma`
- `auditorias_stps`, `auditoria_hallazgos`
- `planes_accion`, `acciones_correctivas`
- `comision_seguridad`, `comision_miembros`
- `recorridos_comision`, `actas_comision`

#### Gestion Ambiental (9 tablas)
- `impactos_ambientales`, `residuos`, `residuo_movimientos`
- `manifiestos_residuos`, `monitoreo_ambiental`
- `permisos_ambientales`, `programas_ambientales`
- `indicadores_ambientales`, `eventos_ambientales`

#### Permisos de Trabajo (8 tablas)
- `permisos_trabajo`, `permiso_riesgos`, `permiso_autorizaciones`
- `permisos_altura`, `permisos_caliente`, `permisos_confinado`
- `permisos_electrico`, `permisos_excavacion`

#### Indicadores HSE (7 tablas)
- `kpi_configuracion`, `kpi_valores`, `kpi_metas`
- `dashboards_hse`, `alertas_hse`
- `reportes_hse`, `estadisticas_periodo`

---

### 4. Schema: `estimates` (8 tablas)

**DDL:** `schemas/04-estimates-schema-ddl.sql`

| Tabla | Descripcion |
|-------|-------------|
| `estimaciones` | Estimaciones de obra |
| `estimacion_conceptos` | Conceptos estimados |
| `generadores` | Numeros generadores |
| `anticipos` | Anticipos de obra |
| `amortizaciones` | Amortizacion de anticipos |
| `retenciones` | Retenciones (garantia, IMSS) |
| `fondo_garantia` | Fondo de garantia |
| `estimacion_workflow` | Workflow de aprobacion |

---

### 5. Schema: `infonavit` (8 tablas)

**DDL:** `schemas/05-infonavit-schema-ddl.sql`

| Tabla | Descripcion |
|-------|-------------|
| `registro_infonavit` | Registro RUV |
| `oferta_vivienda` | Oferta registrada |
| `derechohabientes` | Derechohabientes |
| `asignacion_vivienda` | Asignaciones |
| `actas` | Actas de entrega |
| `acta_viviendas` | Viviendas en acta |
| `reportes_infonavit` | Reportes RUV |
| `historico_puntos` | Historico puntos ecologicos |

---

### 6. Schema: `inventory` Extension (4 tablas)

**DDL:** `schemas/06-inventory-ext-schema-ddl.sql`

| Tabla | Descripcion |
|-------|-------------|
| `almacenes_proyecto` | Almacenes por obra |
| `requisiciones_obra` | Requisiciones desde obra |
| `requisicion_lineas` | Lineas de requisicion |
| `consumos_obra` | Consumos por lote/concepto |

---

### 7. Schema: `purchase` Extension (5 tablas)

**DDL:** `schemas/07-purchase-ext-schema-ddl.sql`

| Tabla | Descripcion |
|-------|-------------|
| `purchase_order_construction` | Extension OC |
| `supplier_construction` | Extension proveedores |
| `comparativo_cotizaciones` | Cuadro comparativo |
| `comparativo_proveedores` | Proveedores en comparativo |
| `comparativo_productos` | Productos cotizados |

---

## ORDEN DE EJECUCION DDL

```bash
# Prerequisito: ERP-Core debe estar instalado
# Schema auth.* y core.* deben existir

# 1. Construction (base)
psql $DATABASE_URL -f schemas/01-construction-schema-ddl.sql

# 2. HR (depende de construction)
psql $DATABASE_URL -f schemas/02-hr-schema-ddl.sql

# 3. HSE (depende de construction y hr)
psql $DATABASE_URL -f schemas/03-hse-schema-ddl.sql

# 4. Estimates (depende de construction)
psql $DATABASE_URL -f schemas/04-estimates-schema-ddl.sql

# 5. INFONAVIT (depende de construction)
psql $DATABASE_URL -f schemas/05-infonavit-schema-ddl.sql

# 6. Inventory Extension (depende de construction)
psql $DATABASE_URL -f schemas/06-inventory-ext-schema-ddl.sql

# 7. Purchase Extension (depende de construction)
psql $DATABASE_URL -f schemas/07-purchase-ext-schema-ddl.sql
```

---

## RELACIONES PRINCIPALES

```
auth.tenants
    └── construction.proyectos
            └── construction.fraccionamientos
                    ├── construction.etapas
                    │       └── construction.manzanas
                    │               └── construction.lotes
                    ├── construction.torres (vertical)
                    │       └── construction.niveles
                    │               └── construction.departamentos
                    ├── hr.employee_fraccionamientos
                    │       └── hr.employees
                    └── hse.incidentes
                            └── hse.incidente_involucrados
                                    └── hr.employees
```

---

## ENUMS UTILIZADOS

Ver archivo: `backend/src/shared/constants/enums.constants.ts`

Los principales enums estan definidos en:
- `PROJECT_STATUS` - Estados de proyecto
- `LOT_STATUS` - Estados de lote
- `INCIDENT_SEVERITY` - Severidad de incidentes
- `ESTIMATION_STATUS` - Estados de estimacion
- `INFONAVIT_ASSIGNMENT_STATUS` - Estados INFONAVIT

---

## REFERENCIAS

- **ERP-Core DDL:** `apps/erp-core/database/ddl/`
- **Herencia:** `HERENCIA-ERP-CORE.md`
- **Constantes SSOT:** `backend/src/shared/constants/database.constants.ts`

---

**Mantenido por:** Architecture-Analyst
**Actualizacion:** Manual al agregar/modificar schemas
