8.5 KiB
8.5 KiB
Plan de Migración de Schemas - ERP Suite
Resumen Ejecutivo
Este documento detalla el plan de migración para estandarizar los schemas de base de datos en todas las verticales del ERP Suite, alineándolos con el estándar definido en ESTANDAR-NOMENCLATURA-SCHEMAS.md.
Fecha: 2025-12-08 Versión: 1.0.0 Estado: Planificado
1. Estado Actual vs Estado Deseado
1.1 Prefijos de Schema Estandarizados
| Proyecto | Prefijo | Estado Actual | Estado Deseado |
|---|---|---|---|
| erp-core | erp_* |
Parcial | 100% |
| Construcción | con_* |
No aplicado | 100% |
| Mecánicas Diesel | mec_* |
No aplicado | 100% |
| Clínicas | cli_* |
Sin DDL | 100% |
| Retail | ret_* |
Sin DDL | 100% |
| Vidrio Templado | vit_* |
Sin DDL | 100% |
1.2 Schemas por Vertical
erp-core (Base)
erp_auth → Autenticación, usuarios, roles
erp_core → Entidades base (tenants, companies)
erp_core_shared → Funciones compartidas
erp_inventory → Inventario base
erp_purchase → Compras base
erp_hr → RRHH base
erp_financial → Contabilidad base
Construcción
con_construction → Obras, lotes, avances
con_estimates → Estimaciones, anticipos
con_infonavit → Cumplimiento INFONAVIT
con_hr → Extensiones RRHH (destajo, cuadrillas)
con_hse → Seguridad industrial
Mecánicas Diesel
mec_workshop → Taller, bahías, órdenes
mec_diagnostic → Diagnósticos, DTC codes
mec_inventory → Extensiones inventario (refacciones)
mec_vehicles → Vehículos, especificaciones
mec_quotes → Cotizaciones
2. Estrategia de Migración
2.1 Enfoque: Migración Progresiva
No migrar schemas existentes - Solo aplicar nomenclatura en nuevos desarrollos.
Razones:
- Evitar downtime en sistemas en producción
- No romper código existente
- Costo de migración vs beneficio
2.2 Nuevos Proyectos
Para nuevos proyectos o verticales sin código:
- Aplicar prefijos desde el inicio
- Seguir estándar de nomenclatura
2.3 Proyectos Existentes
Para proyectos con código existente (Construcción, Mecánicas Diesel):
- Documentar schemas actuales
- No renombrar
- Aplicar prefijo solo a tablas nuevas opcionales
3. Orden de Ejecución DDL
3.1 ERP-Core (Prerequisito)
# Ejecutar en orden:
1. 00-extensions.sql # PostGIS, uuid-ossp
2. 01-auth-schema.sql # auth.tenants, auth.users, auth.roles
3. 02-core-schema.sql # core.*, core_shared.*
4. 03-inventory-schema.sql # inventory base
5. 04-purchase-schema.sql # purchase base
6. 05-hr-schema.sql # hr base
7. 06-financial-schema.sql # financial base
3.2 Construcción (Después de ERP-Core)
# Ejecutar en orden:
1. 01-construction-schema-ddl.sql # 24 tablas
2. 02-hr-schema-ddl.sql # 8 tablas extensión
3. 03-hse-schema-ddl.sql # 58 tablas
4. 04-estimates-schema-ddl.sql # 8 tablas
5. 05-infonavit-schema-ddl.sql # 8 tablas
6. 06-inventory-ext-schema-ddl.sql # 4 tablas
7. 07-purchase-ext-schema-ddl.sql # 5 tablas
3.3 Mecánicas Diesel (Después de ERP-Core)
# DDL 100% completo - 43 tablas
1. 01-workshop-schema.sql
2. 02-diagnostic-schema.sql
3. 03-vehicles-schema.sql
4. 04-quotes-schema.sql
4. Dependencias entre Schemas
┌─────────────────────────────────────────────────────────────┐
│ erp-core │
│ ┌──────────┐ ┌──────────┐ ┌───────────┐ ┌────────────┐ │
│ │ auth │ │ core │ │ inventory │ │ purchase │ │
│ └────┬─────┘ └────┬─────┘ └─────┬─────┘ └─────┬──────┘ │
└───────┼─────────────┼──────────────┼──────────────┼─────────┘
│ │ │ │
▼ ▼ ▼ ▼
┌───────────────────────────────────────────────────────────────┐
│ VERTICAL: Construcción │
│ ┌─────────────┐ ┌───────────┐ ┌──────────┐ ┌──────────┐ │
│ │ construction│ │ estimates │ │ infonavit│ │ hse │ │
│ └──────┬──────┘ └─────┬─────┘ └────┬─────┘ └────┬─────┘ │
│ │ │ │ │ │
│ ▼ ▼ ▼ ▼ │
│ ┌──────────────────────────────────────────────────────────┐│
│ │ inventory (ext) purchase (ext) ││
│ └──────────────────────────────────────────────────────────┘│
└───────────────────────────────────────────────────────────────┘
5. Script de Verificación
-- Verificar schemas existentes
SELECT schema_name
FROM information_schema.schemata
WHERE schema_name NOT IN ('pg_catalog', 'information_schema', 'public')
ORDER BY schema_name;
-- Verificar tablas por schema
SELECT
schemaname,
COUNT(*) as table_count
FROM pg_tables
WHERE schemaname NOT IN ('pg_catalog', 'information_schema', 'public')
GROUP BY schemaname
ORDER BY schemaname;
-- Verificar dependencias FK
SELECT
tc.table_schema || '.' || tc.table_name AS table_name,
kcu.column_name,
ccu.table_schema || '.' || ccu.table_name AS references_table
FROM information_schema.table_constraints AS tc
JOIN information_schema.key_column_usage AS kcu
ON tc.constraint_name = kcu.constraint_name
JOIN information_schema.constraint_column_usage AS ccu
ON ccu.constraint_name = tc.constraint_name
WHERE tc.constraint_type = 'FOREIGN KEY'
AND tc.table_schema NOT IN ('pg_catalog', 'information_schema')
ORDER BY tc.table_schema, tc.table_name;
6. Resumen de Tablas por Vertical
Construcción (Total: 115 tablas)
| Schema | Tablas | Módulos |
|---|---|---|
| construction | 24 | MAI-002, MAI-003, MAI-005, MAI-009, MAI-012 |
| hr (ext) | 8 | MAI-007 |
| hse | 58 | MAA-017 |
| estimates | 8 | MAI-008 |
| infonavit | 8 | MAI-010, MAI-011 |
| inventory (ext) | 4 | MAI-004 |
| purchase (ext) | 5 | MAI-004 |
Mecánicas Diesel (Total: 43 tablas)
| Schema | Tablas | Módulos |
|---|---|---|
| workshop | 15 | MMD-001, MMD-002 |
| diagnostic | 8 | MMD-003 |
| vehicles | 8 | MMD-005 |
| inventory (ext) | 6 | MMD-004 |
| quotes | 6 | MMD-006 |
7. Checklist de Migración
Pre-Migración
- Backup completo de base de datos
- Verificar versión PostgreSQL >= 15
- PostGIS instalado
- ERP-Core DDL ejecutado
Ejecución
- Ejecutar DDL en orden especificado
- Verificar cada schema después de creación
- Verificar FKs inter-schema
Post-Migración
- Ejecutar scripts de verificación
- Actualizar MASTER_INVENTORY.yml
- Documentar cualquier desviación
8. Notas Importantes
- RLS habilitado: Todas las tablas usan Row-Level Security con tenant_id
- Soft Delete: Todas las tablas tienen deleted_at para borrado lógico
- Auditoría: created_at, created_by, updated_at, updated_by en todas las tablas
- PostGIS: Requerido para columnas de tipo GEOMETRY
- TIMESTAMPTZ: Usar siempre con timezone para fechas/horas
Historial de Cambios
| Versión | Fecha | Descripción |
|---|---|---|
| 1.0.0 | 2025-12-08 | Versión inicial |
Documento generado como parte del análisis de arquitectura ERP-Suite