# Captura de Partes OEM — Diseño ## Resumen App web de captura de datos para 3 capturistas que trabajan en pipeline: 1. **Capturista OEM** — registra partes OEM por vehículo 2. **Capturista Intercambios** — agrega aftermarket por pieza OEM 3. **Capturista Imágenes** — sube fotos por pieza OEM ## Arquitectura - Frontend: HTML/CSS/JS vanilla (una sola página con 3 tabs) - Backend: API Flask existente en `server.py` (endpoints `/api/admin/*`) - Base de datos: PostgreSQL `nexus_autoparts` - Almacenamiento imágenes: `/home/Autopartes/dashboard/static/parts/` ## Sección 1: Captura OEM ### Flujo 1. Capturista ve lista de vehículos pendientes (sin partes OEM) 2. Filtra por marca/modelo, elige un vehículo 3. Ve tabla con 12 categorías / 63 grupos 4. Por cada grupo, puede [+ Agregar pieza]: # OEM, nombre, cantidad 5. Guarda fila por fila (POST /api/admin/parts + POST /api/admin/fitment) 6. Marca vehículo como "Terminado" → desaparece de pendientes ### Estado de vehículo - **Pendiente**: 0 partes registradas - **En progreso**: tiene partes pero no marcado terminado - **Terminado**: marcado explícitamente por capturista ### Lógica de guardado 1. POST /api/admin/parts → crea pieza OEM → obtiene part_id 2. POST /api/admin/fitment → vincula pieza a vehículo (mye_id + part_id) 3. Si OEM ya existe en DB, reutilizar part_id existente ## Sección 2: Captura Intercambios ### Flujo 1. Ve lista de piezas OEM sin aftermarket 2. Selecciona una pieza → ve su info OEM 3. Agrega intercambios: fabricante, # aftermarket, calidad, precio, garantía 4. POST /api/admin/aftermarket 5. Siguiente pieza ### Campos por intercambio - manufacturer_id (dropdown de fabricantes) - part_number (texto) - name (texto) - quality_tier (economy/standard/oem/premium) - price_usd (número) - warranty_months (número) ## Sección 3: Captura Imágenes ### Flujo 1. Ve lista de piezas OEM sin imagen 2. Selecciona una pieza → ve su info 3. Sube archivo de imagen (jpg/png/webp) 4. Se guarda en /static/parts/{oem_number}.{ext} 5. Se actualiza campo image_url en tabla parts ### Restricciones - Máximo 2MB por imagen - Formatos: jpg, png, webp - Se redimensiona a 800x800 max en el servidor (si es necesario) ## Nuevos endpoints necesarios ### Estado de vehículos - GET /api/captura/vehicles/pending — vehículos sin partes - GET /api/captura/vehicles/in-progress — con partes pero no terminados - POST /api/captura/vehicles/{mye_id}/complete — marcar terminado ### Piezas para intercambios - GET /api/captura/parts/without-aftermarket — piezas sin intercambio ### Piezas para imágenes - GET /api/captura/parts/without-image — piezas sin foto - POST /api/captura/parts/{part_id}/image — subir imagen ## Archivos - `/home/Autopartes/dashboard/captura.html` — página principal - `/home/Autopartes/dashboard/captura.js` — lógica de las 3 secciones - `/home/Autopartes/dashboard/captura.css` — estilos específicos - Ruta en server.py: `/captura` → sirve captura.html