Files
Autoparts-DB/vehicle_database/docs/database_schema_diagram.md
consultoria-as d4d1c9b7ba Implement complete autoparts catalog system (5 phases)
FASE 1: Parts Database
- Added part_categories, part_groups, parts, vehicle_parts tables
- 12 categories, 190 groups with Spanish translations
- API endpoints for categories, groups, parts CRUD

FASE 2: Cross-References & Aftermarket
- Added manufacturers, aftermarket_parts, part_cross_references tables
- 24 manufacturers, quality tier system (economy/standard/premium/oem)
- Part number search across OEM and aftermarket

FASE 3: Exploded Diagrams
- Added diagrams, vehicle_diagrams, diagram_hotspots tables
- SVG viewer with zoom controls and interactive hotspots
- 3 sample diagrams (brake, oil filter, suspension)

FASE 4: Search & VIN Decoder
- SQLite FTS5 full-text search with auto-sync triggers
- NHTSA VIN decoder API integration with 30-day cache
- Unified search endpoint

FASE 5: Optimization & UX
- API pagination (page/per_page, max 100 items)
- Dark mode with localStorage persistence
- Keyboard shortcuts (/, Ctrl+K, Escape, Backspace, Ctrl+D)
- Breadcrumb navigation
- ARIA accessibility (labels, roles, focus management)
- Skip link for keyboard users

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 07:13:46 +00:00

19 KiB

Diagrama de Base de Datos - Catálogo de Autopartes

Diagrama de Relaciones (ERD)

┌─────────────────────────────────────────────────────────────────────────────────────────┐
│                              VEHÍCULOS (Existente)                                       │
└─────────────────────────────────────────────────────────────────────────────────────────┘

┌──────────────┐     ┌──────────────┐     ┌──────────────┐     ┌──────────────┐
│   brands     │     │   models     │     │    years     │     │   engines    │
├──────────────┤     ├──────────────┤     ├──────────────┤     ├──────────────┤
│ id (PK)      │◄────│ brand_id(FK) │     │ id (PK)      │     │ id (PK)      │
│ name         │     │ id (PK)      │     │ year         │     │ name         │
│ country      │     │ name         │     └──────┬───────┘     │ displacement │
│ founded_year │     │ body_type    │            │             │ cylinders    │
└──────────────┘     │ generation   │            │             │ fuel_type    │
                     └──────┬───────┘            │             │ power_hp     │
                            │                    │             └──────┬───────┘
                            │                    │                    │
                            ▼                    ▼                    ▼
                     ┌─────────────────────────────────────────────────────┐
                     │              model_year_engine (MYE)                │
                     ├─────────────────────────────────────────────────────┤
                     │ id (PK)     ◄─────── Identificador único de         │
                     │ model_id (FK)         configuración vehículo        │
                     │ year_id (FK)                                        │
                     │ engine_id (FK)                                      │
                     │ trim_level                                          │
                     │ drivetrain                                          │
                     │ transmission                                        │
                     └────────────────────────┬────────────────────────────┘
                                              │
                                              │ (1:N)
                                              ▼
┌─────────────────────────────────────────────────────────────────────────────────────────┐
│                           FASE 1: CATÁLOGO DE PARTES                                     │
└─────────────────────────────────────────────────────────────────────────────────────────┘

┌──────────────────┐         ┌──────────────────┐         ┌──────────────────┐
│ part_categories  │         │   part_groups    │         │      parts       │
├──────────────────┤         ├──────────────────┤         ├──────────────────┤
│ id (PK)          │◄────────│ category_id (FK) │◄────────│ group_id (FK)    │
│ name             │         │ id (PK)          │         │ id (PK)          │
│ name_es          │         │ name             │         │ oem_part_number  │
│ parent_id (FK)───┼─┐       │ name_es          │         │ name             │
│ slug             │ │       │ slug             │         │ name_es          │
│ icon_name        │ │       │ display_order    │         │ description      │
│ display_order    │◄┘       └──────────────────┘         │ weight_kg        │
└──────────────────┘                                      │ material         │
      │                                                   │ is_discontinued  │
      │ (Ej: 12 categorías)                              │ superseded_by_id │
      │  - Engine                                        └────────┬─────────┘
      │  - Brakes                                                 │
      │  - Suspension                                             │
      │  - etc.                                                   │
                                                                  │
                     ┌────────────────────────────────────────────┼────────────────┐
                     │                                            │                │
                     ▼                                            ▼                │
          ┌──────────────────┐                        ┌──────────────────┐         │
          │  vehicle_parts   │                        │   (FASE 2)       │         │
          ├──────────────────┤                        │ aftermarket_parts│         │
          │ id (PK)          │                        ├──────────────────┤         │
          │ mye_id (FK) ─────┼──► model_year_engine   │ oem_part_id (FK)─┼─────────┤
          │ part_id (FK) ────┼──► parts               │ manufacturer_id  │         │
          │ quantity_required│                        │ part_number      │         │
          │ position         │                        │ quality_tier     │         │
          │ fitment_notes    │                        │ price_usd        │         │
          └──────────────────┘                        └──────────────────┘         │
                                                                                   │
                                                      ┌──────────────────┐         │
                                                      │ part_cross_refs  │         │
                                                      ├──────────────────┤         │
                                                      │ part_id (FK) ────┼─────────┘
                                                      │ cross_ref_number │
                                                      │ reference_type   │
                                                      └──────────────────┘

┌─────────────────────────────────────────────────────────────────────────────────────────┐
│                           FASE 2: AFTERMARKET Y FABRICANTES                              │
└─────────────────────────────────────────────────────────────────────────────────────────┘

┌──────────────────┐         ┌──────────────────┐
│  manufacturers   │◄────────│ aftermarket_parts│
├──────────────────┤         ├──────────────────┤
│ id (PK)          │         │ manufacturer_id  │
│ name             │         │ oem_part_id (FK) │──► parts
│ type             │         │ part_number      │
│ quality_tier     │         │ name             │
│ country          │         │ price_usd        │
│ logo_url         │         │ warranty_months  │
└──────────────────┘         └──────────────────┘

┌─────────────────────────────────────────────────────────────────────────────────────────┐
│                           FASE 3: DIAGRAMAS EXPLOSIONADOS                                │
└─────────────────────────────────────────────────────────────────────────────────────────┘

┌──────────────────┐         ┌──────────────────┐         ┌──────────────────┐
│    diagrams      │         │ vehicle_diagrams │         │diagram_hotspots  │
├──────────────────┤         ├──────────────────┤         ├──────────────────┤
│ id (PK)          │◄────────│ diagram_id (FK)  │         │ diagram_id (FK)──┼──► diagrams
│ name             │         │ mye_id (FK) ─────┼──► MYE  │ part_id (FK) ────┼──► parts
│ name_es          │         └──────────────────┘         │ callout_number   │
│ group_id (FK)────┼──► part_groups                       │ shape            │
│ image_path       │                                      │ coords           │
│ thumbnail_path   │                                      └──────────────────┘
└──────────────────┘

┌─────────────────────────────────────────────────────────────────────────────────────────┐
│                           FASE 4: BÚSQUEDA Y VIN                                         │
└─────────────────────────────────────────────────────────────────────────────────────────┘

┌──────────────────┐         ┌──────────────────┐
│   parts_fts      │         │    vin_cache     │
│   (FTS5 Virtual) │         ├──────────────────┤
├──────────────────┤         │ vin              │
│ oem_part_number  │         │ decoded_data     │──► JSON from NHTSA
│ name             │         │ mye_id (FK) ─────┼──► model_year_engine
│ name_es          │         │ expires_at       │
│ description      │         └──────────────────┘
└──────────────────┘

Flujo de Navegación del Usuario

┌─────────┐    ┌─────────┐    ┌─────────────────┐    ┌────────────────┐
│ Marcas  │───►│ Modelos │───►│   Vehículos     │───►│  Categorías    │
│ (brands)│    │(models) │    │(model_year_eng) │    │(part_categories│
└─────────┘    └─────────┘    └─────────────────┘    └───────┬────────┘
                                                             │
    ┌────────────────────────────────────────────────────────┘
    │
    ▼
┌─────────────┐    ┌─────────────┐    ┌─────────────────────────────┐
│   Grupos    │───►│   Partes    │───►│     Detalle Parte           │
│(part_groups)│    │  (parts)    │    │ + Alternativas Aftermarket  │
└─────────────┘    └─────────────┘    │ + Cross-References          │
                         │            │ + Diagrama con Hotspots     │
                         │            └─────────────────────────────┘
                         │
                         ▼
              ┌─────────────────────┐
              │  Filtrar por MYE    │
              │  (vehicle_parts)    │
              │  Cantidad, Posición │
              └─────────────────────┘

Resumen de Tablas por Fase

Fase Tabla Registros Esperados Descripción
Base brands ~50 Marcas de vehículos
Base models ~2,000 Modelos de vehículos
Base years ~30 Años (1995-2025)
Base engines ~500 Especificaciones de motores
Base model_year_engine ~50,000 Configuraciones únicas
F1 part_categories 12 Categorías principales
F1 part_groups ~200 Subcategorías
F1 parts ~100,000 Catálogo maestro OEM
F1 vehicle_parts ~500,000 Fitment por vehículo
F2 manufacturers ~50 OEM y aftermarket
F2 aftermarket_parts ~300,000 Alternativas aftermarket
F2 part_cross_references ~200,000 Números alternativos
F3 diagrams ~5,000 Diagramas explosionados
F3 vehicle_diagrams ~20,000 Asignación a vehículos
F3 diagram_hotspots ~50,000 Áreas clickeables
F4 parts_fts Virtual Índice full-text
F4 vin_cache Variable Cache de VINs

Ejemplo de Datos Relacionados

Un Toyota Camry 2023 2.5L LE completo:

-- Vehículo
brands.id = 1 (Toyota)
models.id = 1 (Camry)
years.id = 4 (2023)
engines.id = 1 (2.5L 4-Cyl)
model_year_engine.id = 1

-- Sus partes (via vehicle_parts)
┌────────────────┬───────────────────────────────┬──────┬──────────┐
 OEM #           Parte                          Cant  Posición 
├────────────────┼───────────────────────────────┼──────┼──────────┤
 04152-YZZA1     Filtro de Aceite               1     -        
 17801-0V020     Filtro de Aire                 1     -        
 90919-01275     Bujía Iridium                  4     -        
 04465-06200     Pastillas Freno Delanteras     1     front    
 04466-06200     Pastillas Freno Traseras       1     rear     
 43512-06190     Disco Freno Delantero          2     front    
 42431-06190     Disco Freno Trasero            2     rear     
 48510-06780     Amortiguador Delantero         2     front    
 48530-06400     Amortiguador Trasero           2     rear     
└────────────────┴───────────────────────────────┴──────┴──────────┘

-- Alternativas para el filtro de aceite (via aftermarket_parts)
┌────────────────┬─────────┬─────────────────────────────┬─────────┐
 Fabricante      Número   Nombre                       Precio  
├────────────────┼─────────┼─────────────────────────────┼─────────┤
 Bosch           3311     Premium Oil Filter           $12.99  
 Fram            XG9972   Ultra Synthetic Oil Filter   $8.49   
 WIX             57047    Oil Filter                   $7.99   
└────────────────┴─────────┴─────────────────────────────┴─────────┘