From b94b1942171dbe2bd11864bc37e3961ae33c448f Mon Sep 17 00:00:00 2001 From: consultoria-as Date: Wed, 29 Apr 2026 08:44:26 +0000 Subject: [PATCH] docs: update FASES_IMPLEMENTADAS.md with QWEN 3.6 AI Vehicle Fitment - Added QWEN env vars section - Added completed QWEN fitment feature with architecture details - Documented retry logic, fuzzy matching, and fail-safe behavior --- docs/FASES_IMPLEMENTADAS.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/docs/FASES_IMPLEMENTADAS.md b/docs/FASES_IMPLEMENTADAS.md index 099136f..148aa55 100644 --- a/docs/FASES_IMPLEMENTADAS.md +++ b/docs/FASES_IMPLEMENTADAS.md @@ -100,6 +100,25 @@ | **Cobertura templates POS** | ✅ 14/14 templates tienen chat widget | | **Dashboard público** | ✅ Chat público con voz completa (sin cámara) | +## QWEN 3.6 AI Vehicle Fitment (COMPLETADA) + +| Componente | Archivo | Descripción | +|------------|---------|-------------| +| **Servicio QWEN** | `pos/services/qwen_fitment.py` | Consulta API OpenAI-compatible (`qwen3.6`) con part_number + name + brand; parsea JSON robusto (vehicles/confidence/notes); valida contra `model_year_engine` | +| **Integración Inventario** | `pos/blueprints/inventory_bp.py` | `create_item()` llama QWEN después de TecDoc auto-match; inserta en `inventory_vehicle_compat` con `source='qwen_ai'` | +| **UI** | `pos/static/js/inventory.js`, `pos/templates/inventory.html` | Toast muestra count de vehículos asignados por IA; tabla de compatibilidad muestra columna "Origen" | +| **Retry / Fallback** | `qwen_fitment.py` | 3 reintentos ante respuesta vacía; fallback sin filtro de motor (descripciones de motor rara vez coinciden entre QWEN y TecDB); búsqueda parcial de modelo (`%Corolla%`) para nombres TecDoc | + +**Flujo:** +1. Usuario crea ítem de inventario (part_number, name, brand) +2. TecDoc auto-match ejecuta primero (si hay coincidencia exacta) +3. QWEN 3.6 recibe los datos y devuelve lista de vehículos compatibles en JSON +4. Cada vehículo se busca en la DB maestra (fuzzy match por modelo, fallback sin motor) +5. Los `model_year_engine_id` válidos se insertan en `inventory_vehicle_compat` con `source='qwen_ai'` +6. Frontend muestra toast: "27 vehículo(s) asignado(s) por IA" + +**Fail-safe:** Si QWEN no está configurado o la API falla, el ítem se crea normalmente; la asignación de vehículos se omite silenciosamente. + --- ## Infraestructura Desplegada @@ -149,6 +168,11 @@ WHATSAPP_BRIDGE_KEY= # AI (opcional) OPENROUTER_API_KEY= +# QWEN AI Fitment (opcional) +QWEN_API_URL=https://api.nan.builders/v1 +QWEN_API_KEY= +QWEN_MODEL=qwen3.6 + # Metabase (opcional) METABASE_DB_PASS= METABASE_URL=http://localhost:3000 @@ -174,6 +198,7 @@ METABASE_URL=http://localhost:3000 | — | **Dashboard in-app charts** | 2026-04-29 | `12989e3` | | — | **Stubs BNPL / ERP / WhatsApp Cloud / Supplier Portal** | 2026-04-29 | `2cfe4b3` | | — | **nexus-pos.service systemd** | 2026-04-29 | `c766571` | +| — | **QWEN 3.6 AI Vehicle Fitment** | 2026-04-29 | `623c57b` | ---