Files
Autoparts-DB/console/README.md
consultoria-as 7b2a904498 feat: migrate to PostgreSQL + SQLAlchemy ORM, rebrand to Nexus Autoparts
- Migrate from SQLite to PostgreSQL with normalized schema
- Add 11 lookup tables (fuel_type, body_type, drivetrain, transmission,
  materials, position_part, manufacture_type, quality_tier, countries,
  reference_type, shapes)
- Rewrite dashboard/server.py (76 routes) using SQLAlchemy text() queries
- Rewrite console/db.py (27 methods) using SQLAlchemy ORM
- Add models.py with 27 SQLAlchemy model definitions
- Add config.py for centralized DB_URL configuration
- Add migrate_to_postgres.py migration script
- Add docs/METABASE_GUIDE.md with complete data entry guide
- Rebrand from "AUTOPARTS DB" to "NEXUS AUTOPARTS"
- Fill vehicle data gaps via NHTSA API + heuristics:
  engines (cylinders, power, torque), brands (country, founded_year),
  models (body_type, production years), MYE (drivetrain, transmission, trim)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 05:24:47 +00:00

167 lines
6.5 KiB
Markdown

# NEXUS AUTOPARTS Console - Sistema Pick/VT220
Interfaz de consola para el catálogo de nexus-autoparts, inspirada en los sistemas Pick/D3 con estética de terminal VT220. Funciona 100% con teclado, verde sobre negro.
## Requisitos
- Python 3.8+
- SQLite 3 (incluido con Python)
No requiere dependencias externas.
## Inicio Rápido
```bash
# Iniciar la consola
python -m console
# Especificar base de datos
python -m console --db /ruta/a/vehicle_database.db
# Ver versión
python -m console --version
```
## Menú Principal
```
┌──────────────────────────────────────────┐
│ MENU PRINCIPAL │
├──────────────────────────────────────────┤
│ ▸ 1. Consulta por Vehiculo │
│ 2. Busqueda por Numero de Parte │
│ 3. Busqueda por Descripcion │
│ 4. Decodificador VIN │
│ 5. Catalogo de Categorias │
├──────────────────────────────────────────┤
│ 6. Administracion de Partes │
│ 7. Administracion de Fabricantes │
│ 8. Cross-References │
│ 9. Importar / Exportar Datos │
├──────────────────────────────────────────┤
│ 0. Estadisticas del Sistema │
└──────────────────────────────────────────┘
```
## Teclas de Función
| Tecla | Acción |
|-------|--------|
| `0-9` | Seleccionar opción del menú / saltar a campo |
| `ENTER` | Confirmar selección |
| `ESC` | Regresar / Cancelar |
| `F1` | Ayuda / Lista de búsqueda |
| `F2` | Modo edición |
| `F3` | Buscar |
| `F4` | Referencias cruzadas |
| `F5` | Refrescar |
| `F6` | Vehículos relacionados |
| `F9` | Guardar |
| `F10` | Menú principal |
| `TAB` / `↓` | Siguiente campo |
| `↑` | Campo anterior |
| `PgUp/PgDn` | Navegación por páginas |
| `←→` | Scroll horizontal (comparador) |
## Pantallas
### 1. Búsqueda por Vehículo
Navegación jerárquica: Marca → Modelo → Año → Motor.
Cada nivel muestra una lista filtrable con búsqueda incremental.
### 2. Búsqueda por Número de Parte
Campo de entrada para número de parte. Busca en partes OEM, aftermarket y referencias cruzadas.
### 3. Búsqueda por Texto
Búsqueda full-text (FTS5) en nombres y descripciones de partes con resultados paginados.
### 4. Decodificador VIN
Ingresa un VIN de 17 caracteres. Consulta la API de NHTSA (con caché de 30 días) y muestra información del vehículo.
### 5. Catálogo por Categoría
Navega: Categorías → Grupos → Partes, independiente de la selección de vehículo.
### 6-9. Administración
- **Partes**: CRUD completo de partes OEM
- **Fabricantes**: CRUD de fabricantes aftermarket
- **Referencias Cruzadas**: CRUD de referencias cruzadas entre partes
- **Import/Export**: Importar CSV, exportar JSON
### Detalle de Parte
Vista completa de la parte con alternativas aftermarket. F4 para referencias cruzadas, F6 para vehículos compatibles.
### Comparador
Columnas lado a lado: OEM vs alternativas aftermarket con barras de calidad, porcentaje de ahorro y scroll horizontal.
### Estadísticas
Dashboard con contadores de la base de datos (marcas, modelos, partes, etc.) y métricas de cobertura.
## Arquitectura
```
console/
├── main.py # Punto de entrada
├── config.py # Configuración (DB, colores, paginación)
├── db.py # Capa de datos abstracta (SQLite)
├── core/
│ ├── app.py # Controlador principal
│ ├── screens.py # Clase base Screen
│ ├── navigation.py # Pila de navegación y breadcrumbs
│ └── keybindings.py # Constantes de teclas y registro
├── screens/
│ ├── menu_principal.py # Menú principal (12 opciones)
│ ├── vehiculo_nav.py # Drill-down: marca → modelo → año → motor
│ ├── buscar_parte.py # Búsqueda por número de parte
│ ├── buscar_texto.py # Búsqueda full-text (FTS)
│ ├── vin_decoder.py # Decodificador VIN (API NHTSA)
│ ├── catalogo.py # Categorías → grupos → partes
│ ├── parte_detalle.py # Detalle con alternativas
│ ├── comparador.py # Comparador OEM vs aftermarket
│ ├── estadisticas.py # Dashboard de estadísticas
│ ├── admin_partes.py # CRUD partes
│ ├── admin_fabricantes.py # CRUD fabricantes
│ ├── admin_crossref.py # CRUD referencias cruzadas
│ └── admin_import.py # Import/Export CSV/JSON
├── renderers/
│ ├── base.py # Interfaz abstracta BaseRenderer
│ └── curses_renderer.py # Renderer VT220 (curses)
├── utils/
│ ├── formatting.py # Formato de tablas, moneda, números
│ └── vin_api.py # Cliente API NHTSA
└── tests/
├── test_db.py # 36 tests - capa de datos
├── test_core.py # 31 tests - keybindings, navigation, screens
├── test_utils.py # 30 tests - utilidades de formato
└── test_integration.py # 19 tests - integración con MockRenderer
```
## Tests
```bash
# Ejecutar todos los tests (116 total)
python -m pytest console/tests/ -v
# Ejecutar por módulo
python -m pytest console/tests/test_db.py -v
python -m pytest console/tests/test_core.py -v
python -m pytest console/tests/test_utils.py -v
python -m pytest console/tests/test_integration.py -v
```
## Capa de Datos
La clase `Database` en `db.py` abstrae todas las consultas SQL. Diseñada para migrar de SQLite a PostgreSQL cambiando solo la implementación interna.
Métodos principales:
- `get_brands()`, `get_models()`, `get_years()`, `get_engines()`
- `get_categories()`, `get_groups()`, `get_parts()`
- `get_part()`, `get_alternatives()`, `get_cross_references()`
- `search_parts()`, `search_part_number()`
- `decode_vin()`, `get_stats()`
- Métodos CRUD para administración