# Reporte de Validación DDL - Verticales ERP-Suite **Fecha:** 2025-12-08 **Versión:** 1.1 **Sistema:** SIMCO v2.2.0 --- ## Resumen Ejecutivo Este reporte documenta la validación de los DDL implementados en los **proyectos verticales independientes** de ERP-Suite. **Arquitectura:** Cada vertical es un **proyecto independiente** (fork conceptual) que implementa y adapta patrones del ERP-Core para su dominio específico. Las verticales NO dependen del ERP-Core para ejecutarse. ### Estado General | Vertical | Archivos DDL | Tablas | Estado | Discrepancias | |----------|-------------|--------|--------|---------------| | Construcción | 4 | ~35 | ✅ CORREGIDO | 0 (2 resueltas) | | Mecánicas-Diesel | 6 | ~30 | ✅ VÁLIDO | 0 | | Vidrio-Templado | 0 | 0 | N/A (Planificación) | - | | Retail | 0 | 0 | N/A (Planificación) | - | | Clínicas | 0 | 0 | N/A (Planificación) | - | --- ## 1. Vertical: CONSTRUCCIÓN ### 1.1 Archivos DDL Analizados | Archivo | Líneas | Tablas | |---------|--------|--------| | `database/schemas/01-construction-schema-ddl.sql` | 113 | 2 | | `database/schemas/02-hr-schema-ddl.sql` | 153 | 3 | | `database/schemas/03-hse-schema-ddl.sql` | 1268 | ~28 | | `database/init-scripts/01-init-database.sql` | 317 | 2 (fallback) | ### 1.2 Discrepancias Encontradas #### D-CON-001: CRÍTICA - Schema Incorrecto para tenants/users ✅ CORREGIDO **Ubicación:** Múltiples archivos **Problema original:** ```sql -- Construcción usaba: REFERENCES core.tenants(id) REFERENCES core.users(id) -- ERP-Core tiene: auth.tenants auth.users ``` **Corrección aplicada (2025-12-08):** - `01-construction-schema-ddl.sql`: 4 referencias corregidas - `02-hr-schema-ddl.sql`: 4 referencias corregidas - `03-hse-schema-ddl.sql`: 42 referencias corregidas - **Total: 50 referencias corregidas a `auth.tenants` y `auth.users`** **Estado:** ✅ RESUELTO #### D-CON-002: MEDIO - Tablas Fallback en init-database.sql **Ubicación:** `database/init-scripts/01-init-database.sql` líneas 264-284 **Situación:** ```sql -- Crea tablas fallback para uso standalone CREATE TABLE IF NOT EXISTS core.tenants (...) CREATE TABLE IF NOT EXISTS core.users (...) ``` **Nota:** Estas tablas permanecen como fallback para permitir uso standalone de construcción sin ERP-Core completo. El `IF NOT EXISTS` previene duplicación si auth.* ya existe. **Corrección aplicada en DDL de schemas:** - `01-construction-schema-ddl.sql`: Ahora verifica que `auth.tenants` y `auth.users` existan - Prerequisitos del ERP-Core son validados antes de crear tablas **Estado:** ⚠️ ACEPTABLE (fallback para standalone) ### 1.3 Buenas Prácticas Detectadas | Práctica | Estado | Comentario | |----------|--------|------------| | Row-Level Security | ✅ | Implementado en todas las tablas | | Triggers updated_at | ✅ | Usando `core_shared.set_updated_at()` | | Índices por tenant_id | ✅ | Presente en todas las tablas | | Comentarios en tablas | ✅ | Documentación clara | | Verificación de prerequisitos | ✅ | Corregido: Ahora verifica `auth.tenants` y `auth.users` | --- ## 2. Vertical: MECÁNICAS-DIESEL ### 2.1 Archivos DDL Analizados | Archivo | Líneas | Tablas | |---------|--------|--------| | `database/init/00-extensions.sql` | 14 | 0 | | `database/init/01-create-schemas.sql` | 30 | 0 | | `database/init/02-rls-functions.sql` | 106 | 0 | | `database/init/03-service-management-tables.sql` | 567 | ~18 | | `database/init/04-parts-management-tables.sql` | 398 | ~12 | | `database/init/05-vehicle-management-tables.sql` | 365 | ~8 | ### 2.2 Estado de Validación ✅ **Sin discrepancias críticas** **Enfoque diferente:** Mecánicas-diesel NO usa FK explícitas a `auth.*`: ```sql -- Usa columnas sin FK: tenant_id UUID NOT NULL, -- Sin REFERENCES customer_id UUID NOT NULL, -- Comentario: core.partners ``` **Ventaja:** No depende del schema específico de ERP-Core **Desventaja:** No hay integridad referencial a nivel de BD ### 2.3 Referencias a ERP-Core (Comentadas) | Columna | Referencia Esperada | Estado | |---------|---------------------|--------| | `tenant_id` | `auth.tenants` | Solo comentario | | `customer_id` | `core.partners` | Solo comentario | | `assigned_to` | `auth.users` | Solo comentario | | `created_by` | `auth.users` | Solo comentario | ### 2.4 Buenas Prácticas Detectadas | Práctica | Estado | Comentario | |----------|--------|------------| | Row-Level Security | ✅ | Función `create_tenant_rls_policies()` | | Triggers updated_at | ✅ | `trigger_set_updated_at()` | | Índices optimizados | ✅ | Índices compuestos por tenant y estado | | CHECK constraints | ✅ | Validaciones de dominio | | JSONB para datos flex | ✅ | `raw_data` en diagnósticos | --- ## 3. Matriz de Compatibilidad con ERP-Core | Schema ERP-Core | Construcción | Mecánicas-Diesel | |-----------------|--------------|------------------| | `auth.tenants` | ✅ Corregido (usa `auth.tenants`) | ✅ Compatible (sin FK) | | `auth.users` | ✅ Corregido (usa `auth.users`) | ✅ Compatible (sin FK) | | `core.partners` | ✅ Compatible | ✅ Compatible (sin FK) | | `inventory.*` | ⚠️ Extensión paralela | ⚠️ Extensión paralela | | `financial.*` | N/A | N/A | --- ## 4. Acciones Recomendadas ### Inmediatas (Construcción) 1. **Corregir referencias FK** en archivos DDL: ```bash # Archivos a modificar: - database/schemas/01-construction-schema-ddl.sql - database/schemas/02-hr-schema-ddl.sql - database/schemas/03-hse-schema-ddl.sql ``` 2. **Eliminar tablas fallback** en `01-init-database.sql`: - Eliminar `CREATE TABLE IF NOT EXISTS core.tenants` - Eliminar `CREATE TABLE IF NOT EXISTS core.users` - Agregar verificación de `auth.tenants` y `auth.users` ### Corto Plazo 3. **Documentar prerequisitos** en HERENCIA-ERP-CORE.md: - ERP-Core debe estar instalado primero - DDL del core debe ejecutarse antes de verticales 4. **Crear script de validación** que verifique: - Schemas requeridos del core existen - Tablas base del core existen - FK referencias son válidas ### Mediano Plazo (Mecánicas-Diesel) 5. **Evaluar agregar FK explícitas** a mecánicas-diesel: - Ventaja: Integridad referencial - Desventaja: Acoplamiento con ERP-Core --- ## 5. Scripts de Corrección Propuestos ### 5.1 Corrección para Construcción ```sql -- Ejecutar para corregir referencias -- En 01-construction-schema-ddl.sql -- Cambiar: -- tenant_id UUID NOT NULL REFERENCES core.tenants(id), -- A: -- tenant_id UUID NOT NULL REFERENCES auth.tenants(id), -- Cambiar: -- created_by UUID REFERENCES core.users(id), -- A: -- created_by UUID REFERENCES auth.users(id), ``` ### 5.2 Validación de Prerequisitos Propuesta ```sql -- Agregar al inicio de cada DDL de vertical DO $$ BEGIN -- Verificar ERP-Core instalado IF NOT EXISTS (SELECT 1 FROM pg_tables WHERE schemaname = 'auth' AND tablename = 'tenants') THEN RAISE EXCEPTION 'ERP-Core requerido: Falta auth.tenants'; END IF; IF NOT EXISTS (SELECT 1 FROM pg_tables WHERE schemaname = 'auth' AND tablename = 'users') THEN RAISE EXCEPTION 'ERP-Core requerido: Falta auth.users'; END IF; IF NOT EXISTS (SELECT 1 FROM pg_tables WHERE schemaname = 'core' AND tablename = 'partners') THEN RAISE EXCEPTION 'ERP-Core requerido: Falta core.partners'; END IF; RAISE NOTICE 'ERP-Core verificado correctamente'; END $$; ``` --- ## 6. Conclusión ### Construcción - **Estado:** ✅ CORREGIDO - Compatible con ERP-Core - **Correcciones aplicadas:** 50 referencias a `auth.tenants`/`auth.users` - **Verificaciones de prerequisitos actualizadas** ### Mecánicas-Diesel - **Estado:** ✅ Compatible con ERP-Core - **Nota:** Funciona independientemente pero sin integridad referencial FK ### Verticales en Planificación - **Vidrio-Templado, Retail, Clínicas:** Sin DDL implementado - **Recomendación:** Seguir patrón de construcción corregido (con FK a `auth.*`) --- ## 7. Resumen de Correcciones Aplicadas (2025-12-08) | Archivo | Correcciones | |---------|--------------| | `01-construction-schema-ddl.sql` | 4 FK + verificación prerequisitos | | `02-hr-schema-ddl.sql` | 4 FK + verificación prerequisitos | | `03-hse-schema-ddl.sql` | 42 FK corregidas | | **Total** | **50 referencias corregidas** | --- ## 8. Documentación Actualizada (2025-12-08) Como resultado de esta validación, los siguientes archivos fueron actualizados: ### Construcción | Archivo | Actualización | |---------|---------------| | `database/schemas/01-construction-schema-ddl.sql` | 4 FK corregidas + prerequisitos | | `database/schemas/02-hr-schema-ddl.sql` | 4 FK corregidas + prerequisitos | | `database/schemas/03-hse-schema-ddl.sql` | 42 FK corregidas | | `database/HERENCIA-ERP-CORE.md` | Sección de correcciones agregada | | `orchestration/inventarios/DATABASE_INVENTORY.yml` | Sección validacion_ddl agregada | | `orchestration/inventarios/MASTER_INVENTORY.yml` | Sección validacion_ddl agregada | ### Mecánicas-Diesel | Archivo | Actualización | |---------|---------------| | `database/HERENCIA-ERP-CORE.md` | Sección de validación DDL agregada | | `orchestration/inventarios/DATABASE_INVENTORY.yml` | Estado validacion_ddl actualizado | | `orchestration/inventarios/MASTER_INVENTORY.yml` | Estado y conteos actualizados | --- **Generado por:** Claude Code **Sistema:** SIMCO v2.2.0 **Fecha:** 2025-12-08 **Última actualización:** 2025-12-08 (documentación propagada a todas las verticales)