workspace/projects/erp-suite/docs/REPORTE-VALIDACION-DDL-VERTICALES.md

289 lines
9.3 KiB
Markdown

# 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)