# Referencia de Base de Datos - ERP Mecánicas Diesel **Fecha:** 2025-12-08 **Versión:** 1.1 **Proyecto:** ERP Mecánicas Diesel **Nivel:** 2B.2 (Proyecto Independiente) --- ## RESUMEN ERP Mecánicas Diesel es un **proyecto independiente** que implementa y adapta patrones del ERP-Core para el dominio de talleres de reparación de motores diesel. No es una extensión del core, sino un sistema autónomo que: 1. **Implementa** schemas propios para gestión de órdenes de servicio 2. **Adapta** estructuras de inventario para refacciones especializadas 3. **Reutiliza** patrones de autenticación y multi-tenancy 4. **Opera independientemente** como sistema completo **DDL de Referencia (Core):** `apps/erp-core/database/ddl/` **DDL Propio:** `database/init/` --- ## ARQUITECTURA DEL PROYECTO ``` ┌─────────────────────────────────────────────────────────────────┐ │ ERP CORE (Referencia) │ │ Patrones, specs y estructuras reutilizables │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ │ auth │ │ core │ │inventory│ │ sales │ │ │ │ patrones│ │ patrones│ │ patrones│ │ patrones │ │ │ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │ └─────────────────────────────────────────────────────────────────┘ │ │ REFERENCIA / FORK ▼ ┌─────────────────────────────────────────────────────────────────┐ │ ERP MECÁNICAS DIESEL (Proyecto Independiente) │ │ │ │ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐ │ │ │ service_ │ │ parts_ │ │ vehicle_ │ │ │ │ management │ │ management │ │ management │ │ │ │ 18 tbl │ │ 12 tbl │ │ 8 tbl │ │ │ │ (órdenes) │ │ (refacciones) │ │ (vehículos) │ │ │ └───────────────┘ └───────────────┘ └───────────────┘ │ │ │ │ Schemas propios: 3 | Tablas propias: 38 │ │ Opera de forma INDEPENDIENTE │ └─────────────────────────────────────────────────────────────────┘ ``` --- ## PATRONES REUTILIZADOS DEL CORE Los siguientes patrones del ERP-Core fueron **adaptados e implementados** en este proyecto: | Patrón del Core | Adaptación en Mecánicas Diesel | |-----------------|-------------------------------| | `auth.*` | Multi-tenancy con RLS propio | | `core.partners` | Clientes, flotas de vehículos | | `inventory.*` | Refacciones, partes OEM, stock | | `sales.*` | Cotizaciones, órdenes de servicio | **Nota:** Este proyecto NO depende del ERP-Core para ejecutarse. Implementa sus propios schemas y puede operar de forma completamente standalone. --- ## SCHEMAS ESPECÍFICOS DE MECÁNICAS DIESEL ### 1. Schema `service_management` (10+ tablas) **Propósito:** Gestión de órdenes de servicio y diagnósticos ```sql -- Tablas principales: service_management.service_orders -- Órdenes de trabajo service_management.order_items -- Líneas (servicios/refacciones) service_management.work_bays -- Bahías de trabajo service_management.diagnostics -- Diagnósticos service_management.diagnostic_items -- Hallazgos service_management.quotes -- Cotizaciones service_management.services -- Catálogo de servicios ``` **Relaciones con Core:** - `service_orders.customer_id` -> `core.partners` - `service_orders.vehicle_id` -> `vehicle_management.vehicles` - `order_items.part_id` -> `parts_management.parts` ### 2. Schema `parts_management` (12+ tablas) **Propósito:** Inventario de refacciones especializado ```sql -- Extiende: inventory schema del core -- Adiciona campos específicos: -- OEM numbers, compatibilidad vehicular, garantías parts_management.parts -- Refacciones (extiende inventory.products) parts_management.part_categories -- Categorías parts_management.suppliers -- Proveedores especializados parts_management.warehouse_locations -- Ubicaciones en almacén parts_management.inventory_movements -- Kardex parts_management.inventory_adjustments -- Ajustes parts_management.part_compatibility -- Compatibilidad con vehículos ``` **Relaciones con Core:** - `parts.base_product_id` -> `inventory.products` (herencia) - `suppliers.partner_id` -> `core.partners` ### 3. Schema `vehicle_management` (8+ tablas) **Propósito:** Gestión de vehículos diesel y flotas ```sql vehicle_management.vehicles -- Vehículos registrados vehicle_management.vehicle_engines -- Especificaciones del motor vehicle_management.fleets -- Flotas de clientes vehicle_management.engine_catalog -- Catálogo de motores diesel vehicle_management.maintenance_reminders -- Recordatorios de servicio ``` **Relaciones con Core:** - `vehicles.customer_id` -> `core.partners` - `fleets.customer_id` -> `core.partners` --- ## ORDEN DE EJECUCIÓN DDL Para recrear la base de datos completa: ```bash # PASO 1: Cargar ERP Core (base) cd apps/erp-core/database ./scripts/reset-database.sh --force # PASO 2: Cargar extensiones de Mecánicas Diesel cd apps/verticales/mecanicas-diesel/database psql $DATABASE_URL -f init/00-extensions.sql psql $DATABASE_URL -f init/01-create-schemas.sql psql $DATABASE_URL -f init/02-rls-functions.sql psql $DATABASE_URL -f init/03-service-management-tables.sql psql $DATABASE_URL -f init/04-parts-management-tables.sql psql $DATABASE_URL -f init/05-vehicle-management-tables.sql psql $DATABASE_URL -f init/06-seed-data.sql ``` --- ## DEPENDENCIAS CRUZADAS ### Tablas de Mecánicas que dependen del Core | Tabla Mecánicas | Depende de (Core) | |-----------------|-------------------| | `service_management.service_orders` | `core.partners` (customer) | | `service_management.service_orders` | `auth.users` (assigned_to) | | `parts_management.parts` | `inventory.products` (herencia) | | `parts_management.suppliers` | `core.partners` | | `vehicle_management.vehicles` | `core.partners` (owner) | | `vehicle_management.fleets` | `core.partners` | | Todas las tablas | `auth.users` (audit) | --- ## SPECS DEL CORE IMPLEMENTADAS | Spec Core | Aplicación en Mecánicas | Estado | |-----------|------------------------|--------| | SPEC-VALORACION-INVENTARIO | Costeo de refacciones | ✅ DDL LISTO | | SPEC-TRAZABILIDAD-LOTES-SERIES | Garantías de partes | ✅ DDL LISTO | | SPEC-INVENTARIOS-CICLICOS | Conteos de refacciones | ✅ DDL LISTO | | SPEC-MAIL-THREAD-TRACKING | Historial de órdenes | PENDIENTE | | SPEC-TAREAS-RECURRENTES | Mantenimientos preventivos | PENDIENTE | ### Correcciones de DDL Core (2025-12-08) El DDL del ERP-Core fue corregido para resolver FK inválidas: 1. **stock_valuation_layers**: Campos `journal_entry_id` y `journal_entry_line_id` (antes `account_move_*`) 2. **stock_move_consume_rel**: Nueva tabla de trazabilidad (antes `move_line_consume_rel`) 3. **category_stock_accounts**: FK corregida a `core.product_categories` 4. **product_categories**: ALTERs ahora apuntan a schema `core` Estas correcciones permiten que el DDL de inventory se ejecute correctamente y habilitan: - Valoración FIFO/AVCO de refacciones - Trazabilidad de lotes y números de serie (garantías) - Conteos cíclicos de inventario con clasificación ABC ### Validación DDL Mecánicas-Diesel (2025-12-08) **Estado:** ✅ VÁLIDO - Compatible con ERP-Core | Archivo | Líneas | Tablas | Estado | |---------|--------|--------|--------| | `init/00-extensions.sql` | 14 | 0 | ✅ Válido | | `init/01-create-schemas.sql` | 30 | 0 | ✅ Válido | | `init/02-rls-functions.sql` | 106 | 0 | ✅ Válido | | `init/03-service-management-tables.sql` | 567 | ~18 | ✅ Válido | | `init/04-parts-management-tables.sql` | 398 | ~12 | ✅ Válido | | `init/05-vehicle-management-tables.sql` | 365 | ~8 | ✅ Válido | **Enfoque de FK:** Este proyecto usa **referencias comentadas** en lugar de FK explícitas: ```sql -- Usa columnas sin FK explícitas: tenant_id UUID NOT NULL, -- Referencia conceptual: auth.tenants customer_id UUID NOT NULL, -- Referencia conceptual: core.partners assigned_to UUID, -- Referencia conceptual: auth.users ``` **Ventajas:** - ✅ No depende del schema específico de ERP-Core - ✅ Puede operar standalone o integrado - ✅ Sin discrepancias con cambios en auth/core **Desventajas:** - ⚠️ No hay integridad referencial a nivel de BD - ⚠️ La integridad debe garantizarse a nivel de aplicación **Recomendación para integración completa:** Si se requiere integridad referencial estricta, agregar FK explícitas a `auth.tenants` y `auth.users` (no `core.*`). --- ## MAPEO DE NOMENCLATURA | Core | Mecánicas Diesel | |------|------------------| | `core.partners` | Clientes, Flotas | | `inventory.products` | Refacciones base | | `inventory.locations` | Warehouse locations | | `sales.sale_orders` | Base para cotizaciones | | `purchase.purchase_orders` | Compras de refacciones | --- ## CATÁLOGO DE MOTORES DIESEL El schema `vehicle_management` incluye un catálogo de motores diesel preconfigurado: | Marca | Modelos | |-------|---------| | Cummins | ISX15, ISB6.7, X15 | | Detroit | DD15, DD13 | | Paccar | MX-13, MX-11 | | International | A26 | | Volvo | D13, D11 | | Navistar | N13 | --- ## VALIDACIÓN DE HERENCIA ### Verificar schemas heredados ```sql -- Verificar que existen los schemas del core SELECT schema_name FROM information_schema.schemata WHERE schema_name IN ('auth', 'core', 'financial', 'inventory', 'purchase', 'sales', 'analytics', 'system'); ``` ### Verificar extensiones de mecánicas ```sql -- Verificar schemas específicos SELECT schema_name FROM information_schema.schemata WHERE schema_name IN ('service_management', 'parts_management', 'vehicle_management'); -- Contar tablas por schema SELECT schemaname, COUNT(*) as tables FROM pg_tables WHERE schemaname LIKE '%_management' GROUP BY schemaname; ``` --- ## SPECS DEL CORE APLICABLES Según el [MAPEO-SPECS-VERTICALES.md](../../../../erp-core/docs/04-modelado/MAPEO-SPECS-VERTICALES.md): | Categoría | Total | Obligatorias | Opcionales | No Aplican | |-----------|-------|--------------|------------|------------| | **Mecánicas-Diesel** | 30 | 23 | 2 | 5 | ### SPECS Críticas para Mecánicas-Diesel | SPEC | Aplicación | Estado DDL | |------|------------|------------| | SPEC-VALORACION-INVENTARIO | Costeo de refacciones | ✅ DDL LISTO | | SPEC-TRAZABILIDAD-LOTES-SERIES | Garantías de partes | ✅ DDL LISTO | | SPEC-INVENTARIOS-CICLICOS | Conteos de refacciones | ✅ DDL LISTO | | SPEC-PRICING-RULES | Precios por tipo de servicio | PENDIENTE | | SPEC-MAIL-THREAD-TRACKING | Historial de órdenes | PENDIENTE | ### SPECS No Aplicables - `SPEC-INTEGRACION-CALENDAR` - No requiere calendario externo - `SPEC-PROYECTOS-DEPENDENCIAS-BURNDOWN` - No aplica a taller mecánico - `SPEC-FIRMA-ELECTRONICA-NOM151` - Opcional - `SPEC-OAUTH2-SOCIAL-LOGIN` - Opcional - `SPEC-CONSOLIDACION-FINANCIERA` - Opcional --- ## REFERENCIAS - ERP Core DDL: `apps/erp-core/database/ddl/` - ERP Core README: `apps/erp-core/database/README.md` - MAPEO-SPECS-VERTICALES: `apps/erp-core/docs/04-modelado/MAPEO-SPECS-VERTICALES.md` - DATABASE_INVENTORY.yml: `orchestration/inventarios/` --- **Documento de herencia oficial** **Última actualización:** 2025-12-08