erp-construccion-database-v2/HERENCIA-ERP-CORE.md
rckrdmrd bf97e26cdf Migración desde erp-construccion/database - Estándar multi-repo v2
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 08:11:21 -06:00

363 lines
14 KiB
Markdown

# 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