Script de pruebas reusable + evidencia de las corridas · Canal B2G (Licitaciones & Compra Ágil) + B2C (Mercado Libre / SoloTodo) del Marketplace.
Script reusable y versionado en el repo del Marketplace: scripts/smoke-b2g.sh. Hace PASS/FAIL por check, crea filas de prueba y las limpia al final, y sale 0 si todo pasa.
# local (next dev en :3020)
bash scripts/smoke-b2g.sh
# producción
bash scripts/smoke-b2g.sh https://marketplace.smconnection.cl
Requiere .env.local con CRON_SECRET y SUPABASE_SERVICE_KEY (para los checks autenticados y el cleanup).
| Grupo | Checks |
|---|---|
| B2G · Licitaciones | seguimiento 200 · optimizar canino ($/kg) · optimizar genérico (sin "no aplica") · documentos/eventos 200 (no blind) |
| B2G · Proveedores | alta (validado) · upsert refresca precio (no 409) · cleanup |
| B2G · RADAR | discovery SoloTodo → candidatos validado=false |
| B2G · Compra Ágil | listado 200 (seed + total mercado) |
| B2G · Cron | sync-licitaciones 401/Bearer · cleanup-hist Bearer |
| B2C · Marketplace | categories · search · meli items (truncated) · items-hist guard 400 |
2026-06-18 11:11 · base http://localhost:3020 (Supabase prod) · RESULTADO: PASS=16 · FAIL=0 · 🟢 TODO VERDE
| # | Check | Resultado |
|---|---|---|
| 1 | seguimiento 200 (embudo 13) | ✅ PASS |
| 2 | optimizar canino ($/kg) | ✅ PASS |
| 3 | optimizar genérico (no-canino, sin "no aplica") | ✅ PASS |
| 4 | documentos 200 (no blind) | ✅ PASS |
| 5 | eventos 200 (no blind) | ✅ PASS |
| 6 | proveedores alta (validado) | ✅ PASS |
| 7 | proveedores upsert (no 409) | ✅ PASS |
| 8 | RADAR discovery (3 candidatos SoloTodo) | ✅ PASS |
| 9 | compra-agil 200 (total 5 · mercado 8.332) | ✅ PASS |
| 10 | sync-licitaciones 401 sin auth | ✅ PASS |
| 11 | sync-licitaciones Bearer 200 | ✅ PASS |
| 12 | cleanup-hist Bearer 200 | ✅ PASS |
| 13 | marketplace categories 200 | ✅ PASS |
| 14 | marketplace search 200 (n 3.334) | ✅ PASS |
| 15 | meli items 200 (truncated=false) | ✅ PASS |
| 16 | items-hist 400 sin id (guard) | ✅ PASS |
Bearer CRON_SECRET.Pruebas manuales paso a paso para verificar que el marketplace entrega la misma info que Mercado Público. Tester sigue los clics y compara con mercadopublico.cl.
| # | Acción (clic) | Esperado | Resultado real (2026-06-18) |
|---|---|---|---|
| 1 | Abrir Licitaciones (sidebar → Licitaciones Workzone) | Carga lista + filtros izquierda + KPIs | ✅ OK |
| 2 | Buscar 3623-20-LS26 en "Buscar" | Aparece la licitación real | ✅ Aparece · SERVICIO PROFESIONAL FORMULADOR · I. Mun. Mafil · $21.864.000 (== MP) |
| 3 | Buscar un código que NO esté en BD | Botón "Traer de Mercado Público" → al click la trae (OCDS por código) | ✅ OK (endpoint buscar-mp · persiste y recarga) |
| 4 | Expandir la fila | Ficha: monto CLP+UTM, organismo, fechas, score, DECISIÓN | ✅ OK · compras/reclamos en "s/d" (Fase 2) |
| 5 | Ir a Compra Ágil · expandir 2694-122-COT26 | Ficha COT (alarma, Cartagena, $3.000.000) | ✅ OK (seed real) |
| 6 | Buscar palabra clave carne | Resultados como MP (14) | ⚠️ Fase 2 · OCDS no busca por keyword y el buscador MP es iframe/SPA → requiere bulk Datos Abiertos |
UAT-FIX-01: buscar el código de un servicio (3623-20-LS26) daba 0 resultados porque el toggle "Solo productos" (default ON) ocultaba servicios. Corregido: con búsqueda explícita el filtro "Solo productos" no aplica → muestra lo buscado aunque sea servicio. Verificado (commit 855e71d).
| Capacidad | Estado |
|---|---|
| Buscar por CÓDIGO (ej. 3623-20-LS26) | 🟢 LIVE · OCDS por código + on-demand "Traer de MP" |
| Ingesta por fecha (todos los rubros) | 🟢 LIVE · quitado el filtro canino |
| Buscar por KEYWORD (carne, aseo, medicamento…) | 🟢 LIVE (act. 2026-06-23) · paridad 10/10 por producto sobre la data poblada (ver sección 06) |
| Conteos Publicado/No-Publicado · compras/reclamos · histórico total | 🟡 Fase 2 · bulk Datos Abiertos ChileCompra |
Script reusable scripts/paridad-productos.mjs: busca 10 tipos de producto en Mercado Público (estado=activas, por Nombre) y en el Marketplace (BD, título ilike), y compara los conteos. Resultado: 10/10 paridad perfecta — el buscador del marketplace encuentra exactamente lo mismo que MP.
| Producto | MP (activas) | Marketplace (publicada) | Estado |
|---|---|---|---|
| carne | 5 | 5 | 🟢 |
| pan | 37 | 37 | 🟢 |
| computador | 5 | 5 | 🟢 |
| vestuario | 28 | 28 | 🟢 |
| aseo | 98 | 98 | 🟢 |
| medicamento | 71 | 71 | 🟢 |
| combustible | 10 | 10 | 🟢 |
| papel | 7 | 7 | 🟢 |
| neumático | 2 | 2 | 🟢 |
| alimento | 27 | 27 | 🟢 |
🔴 b2g_compra_agil vacía (0 registros) + la API Compra Ágil de ChileCompra está restringida (403). La sección usa el seed (5 ejemplos) mientras tanto. Paridad de Compra Ágil por producto = Fase 2: requiere COMPRA_AGIL_API_URL con acceso o la descarga bulk de Datos Abiertos. Anotado a la cola.
✅ Licitaciones: paridad por producto completa (10/10) · 🔴 Compra Ágil: gap estructural de fuente (Fase 2). Verificado en localhost · script versionado en el repo · smoke 16/16.