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:
2026-03-18 22:25:38 +00:00
parent fe6542c45c
commit 5e6bf788db
5 changed files with 2484 additions and 0 deletions

View 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