# Referencia de Base de Datos - ERP Construcción **Fecha:** 2025-12-09 **Versión:** 1.2 **Proyecto:** ERP Construcción **Nivel:** 2B.2 (Proyecto Independiente) --- ## RESUMEN ERP Construcción es un **proyecto independiente** que implementa y adapta patrones del ERP-Core para el dominio de construcción de vivienda. No es una extensión del core, sino un sistema autónomo que: 1. **Implementa** schemas propios basados en patrones del core 2. **Adapta** estructuras de datos al dominio de construcción 3. **Reutiliza** código y patrones donde tiene sentido 4. **Opera independientemente** del ERP-Core **DDL de Referencia (Core):** `apps/erp-core/database/ddl/` **DDL Propio:** `database/schemas/` --- ## ARQUITECTURA DEL PROYECTO ``` ┌─────────────────────────────────────────────────────────────────┐ │ ERP CORE (Referencia) │ │ Patrones, specs y estructuras reutilizables │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ │ auth │ │ core │ │inventory│ │ financial│ │ │ │ patrones│ │ patrones│ │ patrones│ │ patrones │ │ │ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │ └─────────────────────────────────────────────────────────────────┘ │ │ REFERENCIA / FORK ▼ ┌─────────────────────────────────────────────────────────────────┐ │ ERP CONSTRUCCIÓN (Proyecto Independiente) │ │ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │construction │ │ hr │ │ hse │ │ │ │ 24 tbl │ │ 8 tbl │ │ 58 tbl │ │ │ │ (proyectos) │ │ (empleados) │ │ (seguridad) │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ estimates │ │ infonavit │ │ inventory │ │ │ │ 8 tbl │ │ 8 tbl │ │ 4 tbl │ │ │ │(estimación) │ │ (ruv) │ │ (ext) │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │ │ │ ┌─────────────┐ │ │ │ purchase │ Schemas propios: 7 │ │ │ 5 tbl │ Tablas propias: 110 │ │ │ (ext) │ Opera de forma INDEPENDIENTE │ │ └─────────────┘ │ └─────────────────────────────────────────────────────────────────┘ ``` --- ## PATRONES REUTILIZADOS DEL CORE Los siguientes patrones del ERP-Core fueron **adaptados e implementados** en este proyecto: | Patrón del Core | Adaptación en Construcción | |-----------------|---------------------------| | `auth.*` | Implementación propia de autenticación multi-tenant | | `core.partners` | Contratistas, proveedores, clientes | | `inventory.*` | Materiales de construcción, almacenes de obra | | `projects.*` | Obras, fraccionamientos, etapas | | `hr.*` | Personal de obra, cuadrillas, asistencias | **Nota:** Este proyecto NO depende del ERP-Core para ejecutarse. Implementa sus propios schemas basados en los patrones de referencia. --- ## SCHEMAS ESPECÍFICOS DE CONSTRUCCIÓN ### 1. Schema `construction` (24 tablas) **Propósito:** Gestión de proyectos de obra, estructura y avances ```sql -- DDL: 01-construction-schema-ddl.sql -- Estructura de proyecto (8 tablas): -- fraccionamientos, etapas, manzanas, lotes, torres, niveles, departamentos, prototipos -- Presupuestos y Conceptos (3 tablas): -- conceptos, presupuestos, presupuesto_partidas -- Programación y Avances (5 tablas): -- programa_obra, programa_actividades, avances_obra, fotos_avance, bitacora_obra -- Calidad (5 tablas): -- checklists, checklist_items, inspecciones, inspeccion_resultados, tickets_postventa -- Contratos (3 tablas): -- subcontratistas, contratos, contrato_partidas ``` ### 2. Schema `hr` extendido (8 tablas) **Propósito:** Gestión de personal de obra, asistencias, destajo ```sql -- DDL: 02-hr-schema-ddl.sql -- Extiende: hr schema del core hr.employee_construction -- Extensión empleados construcción hr.asistencias -- Registro con GPS/biométrico hr.asistencia_biometrico -- Datos biométricos hr.geocercas -- Validación GPS (PostGIS) hr.destajo -- Trabajo a destajo hr.destajo_detalle -- Mediciones destajo hr.cuadrillas -- Equipos de trabajo hr.cuadrilla_miembros -- Miembros cuadrillas ``` ### 3. Schema `hse` (58 tablas) **Propósito:** Health, Safety & Environment ```sql -- DDL: 03-hse-schema-ddl.sql -- Implementa 8 requerimientos funcionales (RF-MAA017-001 a 008) Grupos de tablas: - Gestión de Incidentes (5 tablas) - Control de Capacitaciones (6 tablas) - Inspecciones de Seguridad (7 tablas) - Control de EPP (7 tablas) - Cumplimiento STPS (11 tablas) - Gestión Ambiental (9 tablas) - Permisos de Trabajo (8 tablas) - Indicadores HSE (7 tablas) ``` ### 4. Schema `estimates` (8 tablas) **Propósito:** Estimaciones, anticipos, retenciones ```sql -- DDL: 04-estimates-schema-ddl.sql -- Módulo: MAI-008 (Estimaciones y Facturación) estimates.estimaciones -- Estimaciones de obra estimates.estimacion_conceptos -- Conceptos estimados estimates.generadores -- Números generadores estimates.anticipos -- Anticipos de obra estimates.amortizaciones -- Amortización de anticipos estimates.retenciones -- Retenciones (garantía, IMSS, ISR) estimates.fondo_garantia -- Fondo de garantía estimates.estimacion_workflow -- Workflow de aprobación ``` ### 5. Schema `infonavit` (8 tablas) **Propósito:** Integración INFONAVIT, RUV, derechohabientes ```sql -- DDL: 05-infonavit-schema-ddl.sql -- Módulos: MAI-010/011 (CRM Derechohabientes, Integración INFONAVIT) infonavit.registro_infonavit -- Registro RUV infonavit.oferta_vivienda -- Oferta registrada infonavit.derechohabientes -- Derechohabientes infonavit.asignacion_vivienda -- Asignaciones infonavit.actas -- Actas de entrega infonavit.acta_viviendas -- Viviendas en acta infonavit.reportes_infonavit -- Reportes RUV infonavit.historico_puntos -- Histórico puntos ecológicos ``` ### 6. Schema `inventory` extensión (4 tablas) **Propósito:** Almacenes de proyecto, requisiciones de obra ```sql -- DDL: 06-inventory-ext-schema-ddl.sql -- Extiende: inventory schema del core inventory.almacenes_proyecto -- Almacenes por obra inventory.requisiciones_obra -- Requisiciones desde obra inventory.requisicion_lineas -- Líneas de requisición inventory.consumos_obra -- Consumos por lote/concepto ``` ### 7. Schema `purchase` extensión (5 tablas) **Propósito:** Órdenes de compra construcción, comparativos ```sql -- DDL: 07-purchase-ext-schema-ddl.sql -- Extiende: purchase schema del core purchase.purchase_order_construction -- Extensión OC purchase.supplier_construction -- Extensión proveedores purchase.comparativo_cotizaciones -- Cuadro comparativo purchase.comparativo_proveedores -- Proveedores en comparativo purchase.comparativo_productos -- Productos cotizados ``` --- ## ORDEN DE EJECUCIÓN DDL Para recrear la base de datos completa: ```bash # PASO 1: Cargar ERP Core (base) cd apps/erp-core/database ./scripts/reset-database.sh --force # PASO 2: Cargar extensiones de Construcción (orden importante) cd apps/verticales/construccion/database psql $DATABASE_URL -f schemas/01-construction-schema-ddl.sql # 24 tablas psql $DATABASE_URL -f schemas/02-hr-schema-ddl.sql # 8 tablas psql $DATABASE_URL -f schemas/03-hse-schema-ddl.sql # 58 tablas psql $DATABASE_URL -f schemas/04-estimates-schema-ddl.sql # 8 tablas psql $DATABASE_URL -f schemas/05-infonavit-schema-ddl.sql # 8 tablas psql $DATABASE_URL -f schemas/06-inventory-ext-schema-ddl.sql # 4 tablas psql $DATABASE_URL -f schemas/07-purchase-ext-schema-ddl.sql # 5 tablas ``` **Nota:** Los archivos 06 y 07 dependen de que 01-construction esté instalado. --- ## DEPENDENCIAS CRUZADAS ### Tablas de Construcción que dependen del Core | Tabla Construcción | Depende de (Core) | |--------------------|-------------------| | `construccion.proyectos` | `core.partners` (cliente) | | `construccion.proyectos` | `auth.users` (created_by) | | `construccion.fraccionamientos` | `construccion.proyectos` | | `hr.employees` | `auth.users` | | `hr.employee_fraccionamientos` | `construccion.fraccionamientos` | | `hse.incidentes` | `construccion.fraccionamientos` | | `hse.incidente_involucrados` | `hr.employees` | | `hse.*` | `auth.users` (auditoria) | --- ## SPECS DEL CORE IMPLEMENTADAS | Spec Core | Aplicación en Construcción | Estado | |-----------|---------------------------|--------| | SPEC-VALORACION-INVENTARIO | Materiales de construcción | ✅ DDL LISTO | | SPEC-TRAZABILIDAD-LOTES-SERIES | Lotes de concreto, acero | ✅ DDL LISTO | | SPEC-PROYECTOS-DEPENDENCIAS-BURNDOWN | Partidas de obra | PENDIENTE | | SPEC-MAIL-THREAD-TRACKING | Historial de presupuestos | PENDIENTE | | SPEC-WIZARD-TRANSIENT-MODEL | Asistentes de estimaciones | PENDIENTE | ### Correcciones de DDL Core (2025-12-08) El DDL del ERP-Core fue corregido para resolver FK inválidas: 1. **stock_valuation_layers**: Campos `journal_entry_id` y `journal_entry_line_id` (antes `account_move_*`) 2. **stock_move_consume_rel**: Nueva tabla de trazabilidad (antes `move_line_consume_rel`) 3. **category_stock_accounts**: FK corregida a `core.product_categories` 4. **product_categories**: ALTERs ahora apuntan a schema `core` Estas correcciones permiten que el DDL de inventory se ejecute correctamente. ### Correcciones de DDL Construcción (2025-12-08) El DDL de la vertical Construcción fue corregido para alinearse con ERP-Core: | Archivo | Correcciones | Detalle | |---------|--------------|---------| | `01-construction-schema-ddl.sql` | 4 FK | `core.tenants` → `auth.tenants`, `core.users` → `auth.users` | | `02-hr-schema-ddl.sql` | 4 FK | Referencias corregidas a `auth.*` | | `03-hse-schema-ddl.sql` | 42 FK | Todas las referencias corregidas | | **Total** | **50 FK** | Ahora usa `auth.tenants` y `auth.users` correctamente | **Verificaciones de prerequisitos actualizadas:** - Los DDL ahora validan que `auth.tenants` y `auth.users` existan antes de crear tablas - ERP-Core debe estar instalado antes de ejecutar DDL de Construcción --- ## MAPEO DE NOMENCLATURA | Core | Construcción | |------|--------------| | `core.partners` | Contratistas, proveedores | | `inventory.products` | Materiales de construcción | | `inventory.locations` | Almacenes de obra | | `projects.projects` | Base para `construccion.proyectos` | | `hr.employees` | Personal de obra | | `purchase.orders` | Órdenes de compra de materiales | --- ## VALIDACIÓN DE HERENCIA ### Verificar schemas heredados ```sql -- Verificar que existen los schemas del core SELECT schema_name FROM information_schema.schemata WHERE schema_name IN ('auth', 'core', 'financial', 'inventory', 'purchase', 'projects', 'hr', 'analytics', 'system'); ``` ### Verificar extensiones de construcción ```sql -- Verificar schemas específicos SELECT schema_name FROM information_schema.schemata WHERE schema_name IN ('construccion', 'hse'); -- Contar tablas por schema SELECT schemaname, COUNT(*) as tables FROM pg_tables WHERE schemaname IN ('construccion', 'hr', 'hse') GROUP BY schemaname; ``` --- ## SPECS DEL CORE APLICABLES Según el [MAPEO-SPECS-VERTICALES.md](../../../../erp-core/docs/04-modelado/MAPEO-SPECS-VERTICALES.md): | Categoría | Total | Obligatorias | Opcionales | No Aplican | |-----------|-------|--------------|------------|------------| | **Construcción** | 30 | 22 | 4 | 4 | ### SPECS Críticas para Construcción | SPEC | Aplicación | Estado DDL | |------|------------|------------| | SPEC-VALORACION-INVENTARIO | Costeo de materiales | ✅ DDL LISTO | | SPEC-TRAZABILIDAD-LOTES-SERIES | Lotes de concreto, acero | ✅ DDL LISTO | | SPEC-PROYECTOS-DEPENDENCIAS-BURNDOWN | Partidas de obra | PENDIENTE | | SPEC-PRESUPUESTOS-REVISIONES | Control presupuestal | PENDIENTE | | SPEC-RRHH-EVALUACIONES-SKILLS | Personal de obra | PENDIENTE | ### SPECS No Aplicables - `SPEC-INTEGRACION-CALENDAR` - Sin necesidad de calendario externo - `SPEC-OAUTH2-SOCIAL-LOGIN` - Opcional, no crítico - `SPEC-INVENTARIOS-CICLICOS` - Opcional para construcción - `SPEC-CONSOLIDACION-FINANCIERA` - Opcional para construcción --- ## REFERENCIAS - ERP Core DDL: `apps/erp-core/database/ddl/` - ERP Core README: `apps/erp-core/database/README.md` - MAPEO-SPECS-VERTICALES: `apps/erp-core/docs/04-modelado/MAPEO-SPECS-VERTICALES.md` - DATABASE_INVENTORY.yml: `orchestration/inventarios/` --- **Documento de herencia oficial** **Última actualización:** 2025-12-09 **Total schemas:** 7 | **Total tablas:** 110