consultoria-as 4af3a09b03 docs: add console system documentation and design docs
Console README with usage instructions, keybindings reference, architecture
overview, and test commands. Updated root README with console section, updated
architecture diagram, and installation instructions. Includes approved design
doc and implementation plan.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 02:03: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/              # VT220 (curses) y moderno (Rich)
│   ├── 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. Incluye dos modos de visualización:

  • VT220 (curses): Terminal clásica verde sobre negro con caracteres de caja
  • Modern (Rich): Interfaz moderna con colores y estilos TUI
# Modo clásico VT220
python -m console

# Modo moderno
python -m console --mode modern

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
    pip install rich   # Opcional: para modo moderno de consola
    
  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                # Modo VT220 (clásico)
python -m console --mode modern  # Modo moderno (Rich)

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%