# Herencia de Base de Datos - ERP Core -> Mecánicas Diesel

**Fecha:** 2025-12-08
**Versión:** 1.0
**Vertical:** Mecánicas Diesel
**Nivel:** 2B.2

---

## RESUMEN

La vertical de Mecánicas Diesel hereda los schemas base del ERP Core y extiende con schemas específicos del dominio de taller mecánico.

**Ubicación DDL Core:** `apps/erp-core/database/ddl/`

---

## ARQUITECTURA DE HERENCIA

```
┌─────────────────────────────────────────────────────────────────┐
│                        ERP CORE (Base)                          │
│  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐   │
│  │  auth   │ │  core   │ │financial│ │inventory│ │ purchase │   │
│  │ 26 tbl  │ │ 12 tbl  │ │ 15 tbl  │ │ 15 tbl  │ │  8 tbl   │   │
│  └─────────┘ └─────────┘ └─────────┘ └─────────┘ └─────────┘   │
│  ┌─────────┐ ┌─────────┐ ┌─────────┐                           │
│  │ sales   │ │analytics│ │ system   │                           │
│  │  6 tbl  │ │  5 tbl  │ │ 10 tbl   │                           │
│  └─────────┘ └─────────┘ └─────────┘                            │
│                        TOTAL: 97 tablas heredadas               │
└─────────────────────────────────────────────────────────────────┘
                              │
                              │ HEREDA
                              ▼
┌─────────────────────────────────────────────────────────────────┐
│               MECÁNICAS DIESEL (Extensiones)                    │
│  ┌───────────────┐ ┌───────────────┐ ┌───────────────┐         │
│  │   service_    │ │    parts_     │ │   vehicle_    │         │
│  │  management   │ │  management   │ │  management   │         │
│  │   10+ tbl     │ │   12+ tbl     │ │    8+ tbl     │         │
│  │  (órdenes)    │ │ (refacciones) │ │  (vehículos)  │         │
│  └───────────────┘ └───────────────┘ └───────────────┘         │
│                   EXTENSIONES: 30+ tablas                       │
└─────────────────────────────────────────────────────────────────┘
```

---

## SCHEMAS HEREDADOS DEL CORE

| Schema | Tablas | Uso en Mecánicas Diesel |
|--------|--------|-------------------------|
| `auth` | 26 | Autenticación, usuarios, roles, permisos |
| `core` | 12 | Partners (clientes, flotas), catálogos |
| `financial` | 15 | Facturas, cuentas contables |
| `inventory` | 15 | Base para refacciones, stock |
| `purchase` | 8 | Compras de refacciones |
| `sales` | 6 | Cotizaciones, órdenes de venta |
| `analytics` | 5 | Centros de costo |
| `system` | 10 | Mensajes, notificaciones |

**Total heredado:** 97 tablas

---

## 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 | PENDIENTE |
| SPEC-TRAZABILIDAD-LOTES-SERIES | Garantías de partes | PENDIENTE |
| SPEC-INVENTARIOS-CICLICOS | Conteos de refacciones | PENDIENTE |
| SPEC-MAIL-THREAD-TRACKING | Historial de órdenes | PENDIENTE |
| SPEC-TAREAS-RECURRENTES | Mantenimientos preventivos | PENDIENTE |

---

## 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;
```

---

## REFERENCIAS

- ERP Core DDL: `apps/erp-core/database/ddl/`
- ERP Core README: `apps/erp-core/database/README.md`
- HERENCIA-SPECS-ERP-CORE.md: `orchestration/00-guidelines/`
- DATABASE_INVENTORY.yml: `orchestration/inventarios/`

---

**Documento de herencia oficial**
**Última actualización:** 2025-12-08
