289 lines
9.3 KiB
Markdown
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)
|