docs: add design and implementation plans
- 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>
This commit is contained in:
84
docs/plans/2026-03-01-captura-partes-design.md
Normal file
84
docs/plans/2026-03-01-captura-partes-design.md
Normal file
@@ -0,0 +1,84 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user