Files
Autoparts-DB/console
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
..

AUTOPARTES Console - Sistema Pick/VT220

Interfaz de consola para el catálogo de autopartes, inspirada en los sistemas Pick/D3 con estética de terminal VT220. Funciona 100% con teclado.

Requisitos

  • Python 3.8+
  • SQLite 3 (incluido con Python)
  • Paquete rich (solo para modo moderno)
pip install rich   # Opcional, solo para --mode modern

Inicio Rápido

# Modo VT220 (clásico, verde sobre negro)
python -m console

# Modo moderno (Rich/TUI con colores)
python -m console --mode modern

# Especificar base de datos
python -m console --db /ruta/a/vehicle_database.db

# Ver versión
python -m console --version

Modos de Visualización

VT220 (por defecto)

  • Terminal clásica verde sobre negro
  • Caracteres de dibujo de cajas (box-drawing)
  • Compatible con cualquier terminal
  • Usa la librería curses (incluida en Python)

Modern

  • Interfaz moderna con colores y estilos Rich
  • Tema azul/cian
  • Requiere pip install rich
  • Si rich no está instalado, cae automáticamente a modo VT220

Menú Principal

╔══════════════════════════════════════╗
║        AUTOPARTES v1.0.0            ║
║  Sistema de Catalogo de Autopartes  ║
╠══════════════════════════════════════╣
║  1. Buscar por Vehiculo             ║
║  2. Buscar por Numero de Parte      ║
║  3. Buscar por Texto                ║
║  4. Decodificar VIN                 ║
║  5. Catalogo por Categoria          ║
║  ──────────────────────────         ║
║  6. Admin: Partes                   ║
║  7. Admin: Fabricantes              ║
║  8. Admin: Referencias Cruzadas     ║
║  9. Import/Export                   ║
║  ──────────────────────────         ║
║  S. Estadisticas del Sistema        ║
║  0. Salir                           ║
╚══════════════════════════════════════╝

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, --mode vt220|modern
├── 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   # Modo VT220 (curses)
│   └── textual_renderer.py  # Modo moderno (Rich)
│
├── 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

# 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