consultoria-as 7ecf1295a5 fix: performance improvements, shared UI, and cross-reference data quality
Backend (server.py):
- Fix N+1 query in /api/diagrams/<id>/parts with batch cross-ref query
- Add LIMIT safety nets to 15 endpoints (50-5000 per data type)
- Add pagination to /api/vehicles, /api/model-year-engine, /api/vehicles/<id>/parts, /api/admin/export
- Optimize search_vehicles() EXISTS subquery to JOIN
- Restrict static route to /static/* subdir (security fix)
- Add detailed=true support to /api/brands and /api/models

Frontend:
- Extract shared CSS into shared.css (variables, reset, buttons, forms, scrollbar)
- Create shared nav.js component (logo + navigation links, auto-highlights)
- Update all 4 HTML pages to use shared CSS and nav
- Update JS to handle paginated API responses

Data quality:
- Fix cross-reference source field: map 72K records from catalog names to actual brands
- Fix aftermarket_parts manufacturer_id: correct 8K records with wrong brand attribution
- Delete 98MB backup file, orphan records, and garbage cross-references
- Add import scripts for DAR, FRAM, WIX, MOOG, Cartek catalogs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 03:09:22 +00:00

Autoparts DB

Sistema completo de gestión de base de datos de vehículos y autopartes con dashboard web, herramientas de web scraping y múltiples interfaces de consulta.

Descripción

Autoparts DB es una solución integral para la gestión de información de vehículos que incluye:

  • Base de datos SQLite normalizada con información de marcas, modelos, motores y años
  • Dashboard web moderno y responsivo para consultar y explorar datos
  • Herramientas de web scraping para recopilar datos de RockAuto.com
  • Interfaces de línea de comandos (CLI) y programática
  • Scripts de utilidad para gestión y mantenimiento de datos

Estadísticas de la Base de Datos

Elemento Cantidad
Marcas 12
Modelos 10,923
Motores 10,919
Combinaciones modelo-año-motor 12,075

Tecnologías Utilizadas

Backend

  • Python 3 - Lenguaje principal
  • SQLite 3 - Base de datos
  • Flask 2.3.3 - Framework web
  • BeautifulSoup4 - Web scraping
  • requests - HTTP client
  • lxml - Parser XML/HTML

Frontend

  • HTML5 - Estructura
  • Bootstrap 5.3.0 - Framework CSS
  • JavaScript (ES6+) - Lógica cliente
  • Font Awesome 6.0.0 - Iconos

Estructura del Proyecto

Autopartes/
├── vehicle_database/           # Sistema principal de base de datos
│   ├── sql/
│   │   └── schema.sql          # Esquema de la base de datos
│   ├── scripts/
│   │   ├── database_manager.py # Gestión de la BD
│   │   ├── query_interface.py  # Interfaz CLI
│   │   └── csv_importer.py     # Importador CSV
│   ├── data/
│   │   ├── brands.csv          # Datos de marcas
│   │   ├── engines.csv         # Datos de motores
│   │   └── models.csv          # Datos de modelos
│   ├── vehicle_database.db     # Base de datos SQLite
│   └── setup.sh                # Script de inicialización
│
├── dashboard/                   # Interfaz web
│   ├── server.py               # Backend Flask
│   ├── index.html              # Frontend HTML
│   ├── dashboard.js            # Lógica JavaScript
│   └── start_dashboard.sh      # Script de inicio
│
├── console/                     # Consola Pick/VT220
│   ├── main.py                 # Punto de entrada
│   ├── db.py                   # Capa de datos abstracta
│   ├── core/                   # Framework (app, screens, nav, keys)
│   ├── screens/                # 14 pantallas (menú, CRUD, búsqueda)
│   ├── renderers/              # Renderer VT220 (curses)
│   ├── utils/                  # Formato y API VIN
│   └── tests/                  # 116 tests
│
├── vehicle_scraper/            # Herramientas de web scraping
│   ├── rockauto_scraper.py     # Scraper RockAuto
│   ├── rockauto_scraper_v2.py  # Scraper mejorado
│   ├── scrape_toyota.py        # Scraper Toyota
│   ├── scrape_nissan_ford_chevrolet.py
│   └── manual_input.py         # Ingreso manual
│
├── add_*.py                    # Scripts para agregar datos
├── remove_*.py                 # Scripts de limpieza
└── QUICK_START.sh              # Guía rápida de inicio

Consola Pick/VT220

Interfaz de terminal inspirada en los sistemas Pick/D3, 100% operada con teclado. Estética verde sobre negro con caracteres de caja, sin dependencias externas.

python -m console

Funcionalidades: navegación por vehículo (marca→modelo→año→motor), búsqueda por número de parte, búsqueda full-text, decodificador VIN (NHTSA), catálogo por categorías, comparador OEM vs aftermarket, y administración CRUD completa.

116 tests automatizados. Ver console/README.md para documentación completa.

Instalación

Requisitos Previos

  • Python 3.8 o superior
  • pip (gestor de paquetes de Python)

Pasos de Instalación

  1. Clonar el repositorio

    git clone https://git.consultoria-as.com/[usuario]/Autoparts-DB.git
    cd Autoparts-DB
    
  2. Instalar dependencias

    pip install flask requests beautifulsoup4 lxml
    
  3. Inicializar la base de datos (opcional - ya incluye datos)

    cd vehicle_database
    ./setup.sh
    

Uso

Iniciar el Dashboard Web

cd dashboard
python3 server.py

El dashboard estará disponible en: http://localhost:5000

Iniciar la Consola Pick/VT220

python -m console

Usar la Interfaz CLI Legacy

cd vehicle_database/scripts
python3 query_interface.py

Ejecutar Web Scraping

cd vehicle_scraper
python3 rockauto_scraper_v2.py

Agregar Datos Manualmente

cd vehicle_scraper
python3 manual_input.py

API REST

El dashboard expone los siguientes endpoints:

Endpoint Método Descripción
/api/brands GET Obtiene todas las marcas
/api/models?brand=X GET Obtiene modelos por marca
/api/years GET Obtiene años disponibles
/api/engines GET Obtiene motores disponibles
/api/vehicles GET Búsqueda con filtros

Ejemplo de Uso

# Obtener todas las marcas
curl http://localhost:5000/api/brands

# Buscar vehículos por marca y año
curl "http://localhost:5000/api/vehicles?brand=Toyota&year=2020"

Esquema de Base de Datos

Tablas

brands

Campo Tipo Descripción
id INTEGER Clave primaria
name TEXT Nombre de la marca
country TEXT País de origen
founded_year INTEGER Año de fundación

models

Campo Tipo Descripción
id INTEGER Clave primaria
brand_id INTEGER FK a brands
name TEXT Nombre del modelo
body_type TEXT Tipo de carrocería
generation TEXT Generación
production_start_year INTEGER Año inicio producción
production_end_year INTEGER Año fin producción

engines

Campo Tipo Descripción
id INTEGER Clave primaria
name TEXT Nombre del motor
displacement_cc INTEGER Cilindrada en cc
cylinders INTEGER Número de cilindros
fuel_type TEXT Tipo de combustible
power_hp INTEGER Potencia en HP
torque_nm INTEGER Torque en Nm
engine_code TEXT Código del motor

years

Campo Tipo Descripción
id INTEGER Clave primaria
year INTEGER Año

model_year_engine

Campo Tipo Descripción
id INTEGER Clave primaria
model_id INTEGER FK a models
year_id INTEGER FK a years
engine_id INTEGER FK a engines
trim_level TEXT Nivel de equipamiento
drivetrain TEXT Tracción
transmission TEXT Transmisión

Diagrama de Relaciones

brands ──┐
         │
         ├──< models ──┐
         │             │
years ───┼─────────────┼──< model_year_engine
         │             │
engines ─┴─────────────┘

Scripts Disponibles

Scripts de Datos

Script Descripción
add_toyota_data.py Agrega datos de Toyota
add_honda_data.py Agrega datos de Honda
add_nissan_data.py Agrega datos de Nissan
add_ford_data.py Agrega datos de Ford
add_chevrolet_data.py Agrega datos de Chevrolet
add_audi_data.py Agrega datos de Audi
add_acura_data.py Agrega datos de Acura
... Y más marcas

Scripts de Mantenimiento

Script Descripción
remove_brands_and_cleanup.py Limpia marcas innecesarias
check_and_remove_brands.py Verifica y elimina marcas

Funcionalidades del Dashboard

Panel de Filtros

  • Selección de marca
  • Selección de modelo (dinámico según marca)
  • Filtro por año
  • Filtro por motor

Panel de Resultados

  • Visualización en tarjetas
  • Información detallada del vehículo
  • Especificaciones del motor
  • Datos de transmisión y tracción

Características

  • Diseño responsivo
  • Actualización en tiempo real
  • Animaciones y transiciones suaves
  • Soporte para múltiples idiomas

Arquitectura del Sistema

┌─────────────────┐     ┌──────────────────┐
│   RockAuto.com  │────>│   Web Scraper    │
└─────────────────┘     └────────┬─────────┘
                                 │
                                 v
┌─────────────────┐     ┌──────────────────┐
│  Manual Input   │────>│  SQLite Database │
└─────────────────┘     └────────┬─────────┘
                                 │
         ┌───────────────────────┼───────────────────────┐
         │                       │                       │
         v                       v                       v
┌─────────────────┐     ┌──────────────────┐    ┌──────────────────┐
│   Flask API     │     │  Pick Console    │    │   CSV Importer   │
└────────┬────────┘     │  (VT220/Rich)    │    └──────────────────┘
         │              └──────────────────┘
         v
┌─────────────────┐
│   Web Dashboard │
│  (Browser)      │
└─────────────────┘

Contribuir

  1. Fork el repositorio
  2. Crea una rama para tu feature (git checkout -b feature/nueva-funcionalidad)
  3. Commit tus cambios (git commit -am 'Agrega nueva funcionalidad')
  4. Push a la rama (git push origin feature/nueva-funcionalidad)
  5. Crea un Pull Request

Licencia

Este proyecto es de uso interno.

Contacto

Para más información, contactar al equipo de desarrollo.


Autoparts DB - Sistema de Gestión de Base de Datos de Vehículos

Description
Sistema de gestión de base de datos de vehículos y autopartes con dashboard web
Readme 28 MiB
Languages
Python 61.1%
JavaScript 17.7%
HTML 17.3%
CSS 3.5%
Shell 0.4%