- 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
52 lines
3.0 KiB
Markdown
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.
|