Files
Autoparts-DB/README.md
consultoria-as f395d67136 Initial commit: Sistema Autoparts DB
- Base de datos SQLite con información de vehículos
- Dashboard web con Flask y Bootstrap
- Scripts de web scraping para RockAuto
- Interfaz CLI para consultas
- Documentación completa del proyecto

Incluye:
- 12 marcas de vehículos
- 10,923 modelos
- 10,919 especificaciones de motores
- 12,075 combinaciones modelo-año-motor
2026-01-19 08:45:03 +00:00

307 lines
9.2 KiB
Markdown

# 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
├── 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
```
## Instalación
### Requisitos Previos
- Python 3.8 o superior
- pip (gestor de paquetes de Python)
### Pasos de Instalación
1. **Clonar el repositorio**
```bash
git clone https://git.consultoria-as.com/[usuario]/Autoparts-DB.git
cd Autoparts-DB
```
2. **Instalar dependencias**
```bash
pip install flask requests beautifulsoup4 lxml
```
3. **Inicializar la base de datos (opcional - ya incluye datos)**
```bash
cd vehicle_database
./setup.sh
```
## Uso
### Iniciar el Dashboard Web
```bash
cd dashboard
python3 server.py
```
El dashboard estará disponible en: `http://localhost:5000`
### Usar la Interfaz CLI
```bash
cd vehicle_database/scripts
python3 query_interface.py
```
### Ejecutar Web Scraping
```bash
cd vehicle_scraper
python3 rockauto_scraper_v2.py
```
### Agregar Datos Manualmente
```bash
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
```bash
# 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 │ │ CLI Interface │ │ CSV Importer │
└────────┬────────┘ └──────────────────┘ └──────────────────┘
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