14 KiB
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:
- Implementa schemas propios basados en patrones del core
- Adapta estructuras de datos al dominio de construcción
- Reutiliza código y patrones donde tiene sentido
- 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
-- 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
-- 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
-- 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
-- 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
-- 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
-- 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
-- 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:
# 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:
- stock_valuation_layers: Campos
journal_entry_idyjournal_entry_line_id(antesaccount_move_*) - stock_move_consume_rel: Nueva tabla de trazabilidad (antes
move_line_consume_rel) - category_stock_accounts: FK corregida a
core.product_categories - 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.tenantsyauth.usersexistan 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
-- 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
-- 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:
| 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 externoSPEC-OAUTH2-SOCIAL-LOGIN- Opcional, no críticoSPEC-INVENTARIOS-CICLICOS- Opcional para construcciónSPEC-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