erp-mecanicas-diesel-databa.../HERENCIA-ERP-CORE.md
rckrdmrd 40371c6151 Migración desde erp-mecanicas-diesel/database - Estándar multi-repo v2
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 08:11:31 -06:00

325 lines
12 KiB
Markdown

# 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