Files
Autoparts-DB/docs/YONKE_ONBOARDING.md
consultoria-as a386ca5b4a
Some checks failed
CI / lint-and-test (3.11) (push) Has been cancelled
CI / lint-and-test (3.13) (push) Has been cancelled
Mejoras de sesion: estabilizacion, IA, Nexus Yonke y marketplace B2B
- F0 blindaje: Redis/Celery, pg_hba sin trust LAN, secretos a env 600, backups, webhook auth, jobs muertos
- F1 caja: bugs POS, reembolsos al corte, apartados, CFDI, topes de descuento en cotizacion/apartado
- F2/F7 IA de catalogo: autocategorizacion, dedup de SKUs con embeddings, OCR de facturas, descripciones, claves SAT, limpieza de fitment
- F3 IA en el flujo: vision Yonke, preguntas MeLi, venta cruzada, anomalias, sinonimos, busqueda semantica (rerank/embeddings)
- F4/F8 escala y cartera: /metrics+Prometheus+Grafana, pool, score de credito, churn, metricas multi-tenant
- Nexus Yonke (M1-M6): modelo de datos 1-de-1, alta por donador, vitrina publica, MeLi usado, consignacion, garantia por dias, reportes, etiquetas
- Marketplace B2B entre yonkes (catalogo + pedidos cross-tenant)
- Seguridad: auth en /api/admin/* (35 endpoints), alertas por tenant
- Migraciones v4.27/v4.28; timers expire-demos y rollup-metrics
2026-10-12 00:57:31 +00:00

52 lines
3.0 KiB
Markdown

# Nexus Yonke — Onboarding (negocios de partes usadas)
> Módulo para refaccionarias/yonkes/deshuesaderos que venden **piezas usadas** (piezas únicas 1-de-1,
> con vehículo donador y varias fotos). No requiere catálogo TecDoc.
## Qué se habilitó
**Modelo de datos (migración `v4.27_yonke_m1`, aplicada a todos los tenants):**
- `inventory`: `condition` (nuevo/usado/reconstruido), `condition_grade` (A/B/C/D), `is_unique_piece`,
`serial_number`, `donor_vin`, `donor_make`, `donor_model`, `donor_year`, `donor_mileage_km`,
`ownership` (propio/consigna), `acquisition_cost`.
- `part_number` acepta `NULL` → dos piezas idénticas de donadores distintos **no se fusionan**.
- `inventory_images` (fotos múltiples por pieza).
- `warranties.warranty_days` (garantía por días).
- `consignments` / `consignment_items` (piezas de terceros a consignación).
**Módulo `/pos/yonke`** (pestañas):
1. **Piezas usadas** — listado con filtros (texto, condición, grado, propiedad) y paginación.
2. **Nueva pieza** — alta rápida: nombre, precio, **VIN del donador + botón "Decodificar"** (NHTSA)
que autocompleta marca/modelo/año, km, propiedad, cobertura en días y **varias fotos**. Genera SKU
automático `USADO-<últimos 6 del VIN>-<n>` si no se captura número de parte.
3. **Por donador** — "¿Qué tengo de este auto?" (agrupado por VIN) y piezas de un donador concreto.
4. **Consignaciones** — alta de consignante, piezas, montos y **liquidación** (reporte por periodo).
**Publicación en MercadoLibre (M4):** las piezas usadas se publican con `condition="used"`, el grado
en el título, datos del donador como atributos y **hasta 10 fotos**.
**Permisos:** `yonke.view` (ver) y `yonke.manage` (crear/editar). El rol `owner`/`admin` los tiene por
defecto; otros roles se otorgan desde Configuración → Permisos (grupo "Yonke").
## Cómo dar de alta un cliente de este segmento
1. Alta normal del tenant (el flujo de tenants ya funciona; ver S1).
2. En el panel admin, activar el módulo `yonke_enabled` del tenant (opcional).
3. Otorgar `yonke.view`/`yonke.manage` a los roles que correspondan (por defecto el owner ya los tiene).
4. En `/pos/yonke` → **Nueva pieza**: capturar la primera pieza (VIN → Decodificar → fotos → guardar).
5. Repetir por pieza; usar **Por donador** para ubicar todo lo que se tiene de un auto.
## Plan comercial
El plan **`yonke`** (MXN 299/mes) está disponible en `services/billing.py`: sin límite de productos,
hasta 10 empleados, 1 sucursal y sin catálogo TecDoc.
## Pendientes conocidos
- La garantía por días se registra vía `POST /pos/api/warranties` con `warranty_days`; **aún no se
auto-registra al vender** (el POS no registra garantías automáticamente hoy). Implementar el hook al
vender una pieza con cobertura.
- Las categorías de ML para usados pueden exigir reglas propias; el mapeo de categorías por segmento
queda como mejora.
- `donor_vin` no se publica en ML (no hay atributo universal); se puede añadir a la descripción.