4.4 KiB
Integracion con ERP-Core
Descripcion
Este documento describe como mecanicas-diesel se integra con el modulo base erp-core para reutilizar funcionalidades comunes y mantener consistencia en la arquitectura multi-tenant.
Schemas Heredados de erp-core
Los siguientes schemas son proporcionados por erp-core y NO deben duplicarse en mecanicas-diesel:
| Schema | Descripcion | Tablas principales |
|---|---|---|
auth |
Autenticacion y usuarios | users, sessions, tokens |
core |
Tenants y configuracion | tenants, partners, settings |
audit |
Logs de auditoria | activity_log |
Schemas Propios de mecanicas-diesel
Los siguientes schemas son especificos de la vertical mecanicas-diesel:
| Schema | Descripcion |
|---|---|
service_management |
Ordenes de servicio, diagnosticos, cotizaciones |
parts_management |
Inventario de refacciones |
vehicle_management |
Vehiculos, flotas, motores |
Mapeo de Conceptos
Tenants
erp-core mecanicas-diesel
─────────────────────────────────────────────
core.tenants.id → tenant_id (en todas las tablas)
El concepto de "taller" en mecanicas-diesel se mapea a un tenant de erp-core. Cada taller es un tenant aislado con sus propios datos.
Usuarios
erp-core mecanicas-diesel
─────────────────────────────────────────────
auth.users.id → created_by, assigned_to, performed_by, etc.
Todos los campos que referencian usuarios utilizan UUIDs que apuntan a auth.users de erp-core.
Clientes/Partners
erp-core mecanicas-diesel
─────────────────────────────────────────────
core.partners.id → customer_id (en service_orders, quotes, vehicles)
Los clientes del taller se gestionan como partners en erp-core, con campos adicionales especificos del taller si es necesario.
Configuracion de RLS
Funcion de Tenant Actual
erp-core provee la funcion get_current_tenant_id() que retorna el UUID del tenant activo en la sesion:
-- Uso tipico en vistas
WHERE tenant_id = get_current_tenant_id()
Politicas RLS
Todas las tablas de mecanicas-diesel utilizan la funcion create_tenant_rls_policies() de erp-core que genera politicas completas:
-- Genera SELECT, INSERT, UPDATE, DELETE policies
SELECT create_tenant_rls_policies('service_management', 'service_orders');
Esto garantiza:
- SELECT: Solo registros del tenant actual
- INSERT: Solo puede insertar con su tenant_id
- UPDATE: Solo puede modificar registros de su tenant
- DELETE: Solo puede eliminar registros de su tenant
Orden de Inicializacion
Al desplegar mecanicas-diesel, los scripts deben ejecutarse en este orden:
-
erp-core (debe existir previamente)
- Extensions
- Schemas auth, core
- Funciones RLS
-
mecanicas-diesel
00-extensions.sql- Extensions adicionales (si las hay)01-create-schemas.sql- service_management, parts_management, vehicle_management02-rls-functions.sql- Funciones RLS (usa las de erp-core si existen)03-service-management-tables.sql04-parts-management-tables.sql05-vehicle-management-tables.sql06-seed-data.sql
Variables de Entorno
La configuracion de base de datos esta separada de erp-core:
# mecanicas-diesel usa su propia base de datos
DB_NAME=mecanicas_diesel
DB_USER=mecanicas_user
# O puede compartir la misma BD si se prefiere
# En ese caso, solo cambiar los schemas
Ejemplo de Query Cross-Schema
-- Obtener ordenes con datos del cliente (partner de erp-core)
SELECT
so.order_number,
so.status,
p.name as customer_name,
p.email as customer_email
FROM service_management.service_orders so
JOIN core.partners p ON so.customer_id = p.id
WHERE so.tenant_id = get_current_tenant_id();
Consideraciones de Migracion
Si se migra de una instalacion standalone a una integrada con erp-core:
- Exportar datos de usuarios locales
- Importar a auth.users de erp-core
- Actualizar referencias en tablas de mecanicas-diesel
- Eliminar tablas duplicadas (users, tenants, etc.)
Creado por: Requirements-Analyst Fecha: 2025-12-06