363 lines
14 KiB
Markdown
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
|