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
This commit is contained in:
306
README.md
Normal file
306
README.md
Normal file
@@ -0,0 +1,306 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user