- SaaS + aftermarket design spec - SaaS + aftermarket implementation plan (15 tasks) - Captura partes design - POS + cuentas design and plan Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
85 lines
2.9 KiB
Markdown
85 lines
2.9 KiB
Markdown
# 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
|