# 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
