workspace-v1/projects/erp-suite/docs/PLAN-MIGRACION-SCHEMAS.md
rckrdmrd 66161b1566 feat: Workspace-v1 complete migration with NEXUS v3.4
Sistema NEXUS v3.4 migrado con:

Estructura principal:
- core/orchestration: Sistema SIMCO + CAPVED (27 directivas, 28 perfiles)
- core/catalog: Catalogo de funcionalidades reutilizables
- shared/knowledge-base: Base de conocimiento compartida
- devtools/scripts: Herramientas de desarrollo
- control-plane/registries: Control de servicios y CI/CD
- orchestration/: Configuracion de orquestacion de agentes

Proyectos incluidos (11):
- gamilit (submodule -> GitHub)
- trading-platform (OrbiquanTIA)
- erp-suite con 5 verticales:
  - erp-core, construccion, vidrio-templado
  - mecanicas-diesel, retail, clinicas
- betting-analytics
- inmobiliaria-analytics
- platform_marketing_content
- pos-micro, erp-basico

Configuracion:
- .gitignore completo para Node.js/Python/Docker
- gamilit como submodule (git@github.com:rckrdmrd/gamilit-workspace.git)
- Sistema de puertos estandarizado (3005-3199)

Generated with NEXUS v3.4 Migration System
EPIC-010: Configuracion Git y Repositorios
2026-01-04 03:37:42 -06:00

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:

  1. Evitar downtime en sistemas en producción
  2. No romper código existente
  3. 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

  1. RLS habilitado: Todas las tablas usan Row-Level Security con tenant_id
  2. Soft Delete: Todas las tablas tienen deleted_at para borrado lógico
  3. Auditoría: created_at, created_by, updated_at, updated_by en todas las tablas
  4. PostGIS: Requerido para columnas de tipo GEOMETRY
  5. 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