Actualizado el 18-oct-2026. Primera versión de la arquitectura de esta épica.
Qué responde. Cómo funciona por dentro FT-REF-04: qué piezas participan, en qué orden hablan, qué APIs hay que construir con su request y su response, y qué le entrega a la épica siguiente.
Para quién. Los equipos que van a construir la épica, QA y arquitectura.
Estado. [Propuesta] del TL del Nuevo PIM, 18-oct-2026, construida sobre ADR-12. La spec de cada épica dice el qué; estas páginas, el cómo.
Fuente. docs/arquitectura/por-epica/epicas/FT-REF-04.json, generada con generar.py; la ficha de la épica es trazabilidad/features/FT-REF-04-matching-por-imagen-y-url.md.
En 30 segundos
Los sellers evaden la revisión con EAN inventados o atributos alterados, y la foto es lo más difícil de falsear. Esta épica deja que el seller entre por una imagen o por la URL de su página de producto: la IA lee la página (EAN, marca, atributos, fotos) o mira la imagen, busca productos parecidos en el catálogo y le entrega todo a Evaluación para la lista negra y la decisión por negocio. Lo extraído se guarda para prellenar sin volver a pagar el modelo.
- Módulo dueño: MS-15 IA y enriquecimiento. También participan: MS-01 Catálogo, MS-02 Producto, MS-06 Evaluación, MS-11 Activos digitales.
- Etapa 1 · ¿Ya existe?. Recibe «PE-1 · Propuesta en Borrador» y entrega «PE-2 · Sin duplicado».
- APIs: construye 1 y usa 10 que construyen otras épicas.
- Eventos: publica 0 y consume 0.
1. Dónde encaja
Recibe
| De | Qué |
|---|---|
| PE-1 · Propuesta en Borrador | La propuesta de un seller recién nacida en Borrador con la URL de su página de producto o una imagen de consulta, con su negocio y su dueño. |
| FT-REF-03 · Servicio de matching | La lógica de coincidencia y su respuesta, en la que entran los candidatos visuales y lo extraído de la página. |
| FT-ACT-03 · Imágenes del seller por URL con validación y corrección… | La carga de imágenes por URL con propósito MATCHING (sin ficha técnica) y, si el seller las quiere en su producto, la validación técnica. |
Entrega
| A | Qué |
|---|---|
| FT-FLU-03 · Decisión por negocio ante coincidencia | Los candidatos visuales con su parecido y la marca leída de la página, para la lista negra y la decisión por negocio. |
| PE-2 · Sin duplicado | La propuesta con su evaluación guardada cuando ni el EAN leído ni la imagen coinciden con nada. |
| FT-IA-01 · Prellenado con IA y validación obligatoria del usuario | Lo extraído de la página o de la imagen (EAN, atributos, fotos) guardado en un trabajo de IA, para prellenar la plantilla. |
| FT-IA-02 · Sugerencia de plantilla por IA a partir del producto… | Los productos parecidos que no llegaron a coincidencia, como homólogos para sugerir la plantilla. |
2. Diagrama de contexto
Quién participa y cómo se conecta. Las pantallas llegan por el BFF del portal, que valida el token y compone; cada módulo vuelve a validar el token y decide sus permisos con los roles de MS-13.
🟩 Verde: nuevo, se construye · 🟦 Azul: ya existe y se queda, se reutiliza su código · 🟧 Naranja: temporal o se retira (se apaga en R3) · ⬜ Gris: sistema externo · ★ módulo dueño
3. Diagrama de flujo
El camino principal, paso por paso. Cuando una pantalla llama a un módulo se ven dos flechas: la pantalla al BFF y el BFF al módulo. Los eventos salen del outbox del módulo después de guardar; quien los consume ignora los repetidos.
Los pasos en texto
| Paso | De | A | Qué hace | API o evento |
|---|---|---|---|---|
| 1 | Seller | Entrada Única · Vendor Center | Pega la URL de su página de producto | — |
| 2 | Entrada Única · Vendor Center | MS-02 Producto (por el BFF) | Pide el plan de la propuesta con la URL | API-02-005 |
| 3 | Entrada Única · Vendor Center | MS-02 Producto (por el BFF) | Confirma el plan | API-02-057 |
| 4 | MS-02 Producto | MS-06 Evaluación | Pide evaluar la propuesta con la URL | API-06-001 |
| 5 | MS-06 Evaluación | MS-15 IA y enriquecimiento | Pide extraer la página y buscar parecidos | API-15-006 |
| 6 | MS-15 IA y enriquecimiento | Sitios web públicos | Lee la página pública del producto | — |
| 7 | MS-15 IA y enriquecimiento | Modelos de IA | Extrae EAN, marca, modelo, atributos y fotos | — |
| 8 | MS-15 IA y enriquecimiento | MS-01 Catálogo | Traduce la marca leída a su código | API-01-007 |
| 9 | MS-15 IA y enriquecimiento | Modelos de IA | Busca imágenes parecidas en el catálogo | — |
| 10 | MS-15 IA y enriquecimiento | Base pim | Guarda lo extraído para reusarlo | — |
| 11 | MS-15 IA y enriquecimiento | MS-06 Evaluación | Responde lo extraído y los candidatos visuales | — |
| 12 | MS-06 Evaluación | Base pim | Evalúa lista negra y coincidencias con lo extraído | — |
| 13 | MS-06 Evaluación | MS-02 Producto | Responde CONTINUE con lo extraído para prellenar | — |
| 14 | MS-02 Producto | Base pim | Guarda la evaluación y el trabajo de IA en la propuesta | — |
3.1 Camino imagen
3.2 Ver referencias para precargar
3.3 Posible duplicado por imagen en Mercaderías
4. Si algo sale mal
- La página no se puede leer o no trae datos de producto. MS-15 responde que no pudo leerla; el seller ve «no pudimos leer tu página» y puede seguir por imagen o por características. Nada se da por identificado sin evaluación.
- La IA no termina en 15 segundos. La evaluación responde RUNNING y el seller ve «seguimos revisando tu producto»; no puede elegir plantilla hasta que llegue EVALUATION_DONE. Si el modelo está caído, puede seguir por características con la marca y el EAN.
- La foto delata un producto que ya existe con otro EAN. El candidato visual pasa la banda alta y entra a la decisión por negocio: multioferta, stock out o bloqueo, con explicación. El intento queda en la evaluación.
- La marca leída de la página no está en el catálogo de marcas. No se da por buena: la evaluación queda en revisión de Gobierno de Datos, porque sin código de marca no se puede revisar la lista negra.
5. APIs
Las que construye esta épica (1)
POST /api/v2/ai/image-matches · Extraer de la URL o la imagen y buscar parecidos
| Campo | Valor |
|---|---|
| API | API-15-006 · MS-15 IA y enriquecimiento |
| Para qué | Para la evaluación de MS-06: lee la página pública del producto del seller (o mira la imagen de consulta), extrae EAN, marca, modelo, atributos e imágenes, y busca en el catálogo productos visualmente parecidos. Guarda lo extraído para que el prellenado y la sugerencia de plantilla lo reusen sin volver a pagar el modelo. La imagen de consulta no se carga al producto ni se le exige ficha técnica. |
| En esta épica | Extraer de la URL o de la imagen y buscar parecidos para la evaluación |
| Quién la llama | MS-06 Evaluación |
| Permiso | Sólo MS-06 (cuenta de servicio) |
| Cabeceras | Authorization, X-Request-Id, Idempotency-Key |
| Escribe en | ai_jobs |
Request
{
"evaluationId": "evl-0000733",
"business": "MKP",
"source": {
"type": "URL",
"pdpUrl": "<URL pública del PDP del seller>",
"imageAssetId": null
},
"want": [
"EXTRACTION",
"VISUAL_CANDIDATES"
]
}
Response · 200
{
"success": true,
"data": {
"jobId": "job-0003311",
"status": "DONE",
"partial": false,
"extraction": {
"from": "PDP",
"ean": "7501234567893",
"brandText": "Marca Uno",
"brandCode": "MARCA01",
"model": "PF-100",
"title": "Perfume floral para mujer 100 ml",
"attributes": [
{
"code": "CONTENIDO_ML",
"value": 100,
"unit": "ML",
"confidence": 0.95
},
{
"code": "GENERO",
"value": "MUJER",
"confidence": 0.9
}
],
"imagesFound": 4
},
"visualCandidates": [
{
"productId": "PRD-0001190",
"business": "MER",
"sku": "1000001190",
"similarity": 0.93
}
]
}
}
Errores
| HTTP | Código | Cuándo |
|---|---|---|
| 422 | VALIDATION_ERROR | No trae imagen ni URL, o la URL no es pública |
| 422 | BUSINESS_ERROR | La página no se pudo leer o no trae datos de producto |
| 503 | DEPENDENCY_UNAVAILABLE | El modelo no respondió: MS-06 evalúa con lo que dio el seller y deja pendiente la revisión visual |
Las que usa y construye otra épica (10)
Su request y su response están en la página de la épica que la construye.
| API | Método y ruta | Para qué, aquí | La construye |
|---|---|---|---|
| API-06-001 | POST /api/v2/evaluations | Evaluar la propuesta con lo extraído y los candidatos visuales | FT-REF-02 · Blacklist de Marketplace por marca, negocio y grupo de… |
| API-06-005 | POST /api/v2/matches | Ver productos parecidos a una imagen sin guardar nada | FT-REF-03 · Servicio de matching |
| API-06-004 | GET /api/v2/evaluations/{evaluationId} | Mostrar a Compras la comparación del posible duplicado | FT-FLU-03 · Decisión por negocio ante coincidencia |
| API-15-003 | POST /api/v2/ai/prefill | Prellenar con la referencia elegida o con lo extraído | FT-IA-01 · Prellenado con IA y validación obligatoria del usuario |
| API-02-005 | POST /api/v2/products/plans | Preparar la propuesta en Borrador con la URL o la imagen | FT-PRD-01 · Modelo canónico de producto |
| API-02-057 | POST /api/v2/product-plans/{planId}/apply | Confirmar el alta; MS-02 pide la evaluación | FT-FLU-01 · Motor de estados configurable con dos carreteras y reglas… |
| API-01-007 | GET /api/v2/lovs/{id}/values | Traducir la marca leída al código del catálogo de marcas | FT-PLT-03 · Listas de valores y modelo canónico con equivalencias por… |
| API-11-004 | POST /api/v2/assets/uploads | Subir la imagen de consulta con propósito MATCHING | FT-ACT-02 · Registro, congelado y publicación de URLs de activos |
| API-11-005 | POST /api/v2/assets/{assetId}/complete | Cerrar la carga de la imagen de consulta sin ficha técnica | FT-ACT-02 · Registro, congelado y publicación de URLs de activos |
| API-11-008 | GET /api/v2/assets/{assetId} | Leer la imagen de consulta para compararla | FT-ACT-02 · Registro, congelado y publicación de URLs de activos |
6. Eventos
Esta épica no publica ni consume eventos.
7. Datos
Cada colección tiene un solo dueño, el único que escribe en ella.
| Colección | Dueño | Qué guarda | Esta épica |
|---|---|---|---|
ai_jobs | MS-15 | Cada trabajo de IA con su entrada, su resultado y su confianza. | escribe |
ai_config | MS-15 | Qué modelo atiende cada tarea y con qué umbral. | lee |
assets | MS-11 | Cada archivo una vez: a qué producto, variante y posición pertenece, su validación técnica, URL de trabajo y URL congelada. | lee |
lov_values | MS-01 | Cada valor de lista: código, etiqueta, orden y equivalencias por sistema. | lee |
validation_results | MS-06 | El resultado de cada evaluación: lista negra, coincidencias con su confianza y score. | lee |
8. Historias que cubre
| Historia | Prioridad | Cómo la cubre |
|---|---|---|
| FT-REF-04·H1 · La foto delata la evasión | P1 | pasos 5, 9, 11, 12; flujo «Camino imagen»; API-15-006 |
| FT-REF-04·H2 · Mi URL basta | P1 | pasos 1, 4, 5, 6, 7, 8, 10, 12; API-15-006, API-01-007 |
| FT-REF-04·H3 · Imagen para consultar no es imagen para cargar | P2 | flujo «Camino imagen»; API-11-004, API-11-005 |
| FT-REF-04·H4 · Duplicados en Mercaderías | P3 | flujo «Posible duplicado por imagen en Mercaderías» |
| FT-REF-04·H5 · Catalogar a partir de una imagen | P2 | flujo «Ver referencias para precargar»; API-06-005, API-15-003 |
9. Decisiones de esta épica
Las tomó el TL como arquitecto; quedan como [Propuesta] hasta que el equipo de la épica las revise.
- D-REF-04-1. MS-15 es el único que lee páginas de sellers y habla con los modelos. MS-06 le pide la extracción y los parecidos (API-15-006) y decide con su tabla; ni MS-02 ni la pantalla llaman a la IA para identificar. Por qué: Un solo motor de IA y una sola decisión: si cada quien llamara a los modelos habría reglas y costos repartidos. Se apoya en ADR-12, DUD-35, RN-MAT-10.
- D-REF-04-2. La imagen de consulta se sube a Activos con propósito MATCHING: no se le exige ficha técnica ni se liga al producto, y si nadie la usa se borra a los 30 días. Las fotos encontradas en la página del seller no se guardan: se ofrecen como sugerencia y, si el seller las quiere, se registran por URL en Activos con su validación técnica (FT-ACT-03). Por qué: Imagen para consultar no es imagen para cargar; cada archivo vive una sola vez en MS-11. Se apoya en RF-IMG-05, PEN-53.
- D-REF-04-3. Lo extraído se guarda una vez en ai_jobs y lo reusan el prellenado (FT-IA-01) y la sugerencia de plantilla (FT-IA-02) con su jobId: un solo pago del modelo por propuesta. Por qué: Leer la página tres veces triplicaría el costo y podría dar respuestas distintas. Se apoya en RF-ENR-05, RF-MAT-05.
- D-REF-04-4. Con URL, la lista negra se evalúa con la marca leída de la página, traducida al código del catálogo de marcas; si no se puede traducir, la evaluación queda en revisión. Una publicación sin EAN se busca con marca, modelo e imagen, y nunca da coincidencia directa: sólo por confianza. Por qué: El camino URL no puede saltarse la lista negra y las publicaciones viejas suelen no traer EAN. Se apoya en DEC-29, PEN-21, RN-MAT-08.
- D-REF-04-5. La identificación por imagen o URL tiene 15 segundos; si la IA no termina, la evaluación queda RUNNING y avisa con EVALUATION_DONE. Si el modelo no está disponible, el seller sigue por características. Por qué: Lo que tarda es asíncrono con recibo, y una caída de la IA no puede detener el alta. Se apoya en DUD-35, ADR-12.
- D-REF-04-6. En Mercaderías la imagen sólo avisa: si la propuesta trae foto, al enviarla se compara y Compras ve el posible duplicado en su visto bueno; no bloquea. Por qué: Mercaderías pidió la detección a futuro y no definió si bloquea; avisar no frena al proveedor y deja decidir a Compras. Se apoya en PEN-25, RF-MAT-04.
Qué falta decidir
| ID | Qué falta |
|---|---|
| DUD-35 | Con el equipo de IA: si se retoma el modelo de comparación congelado, su umbral y el contrato de extracción de páginas. |
| PD-01 | Si la búsqueda por imagen y URL entra en el primer corte o es mejora posterior (la IA es prioridad 2 del BRD). |
También siguen abiertos: PEN-46, Confirmar si la IA puede validar existencia y buscar fuera con certeza; PEN-53, Confirmar si, sin coincidencia, se usan las imágenes de la página como imágenes del producto.
Fuentes
- [D]
trazabilidad/features/FT-REF-04-matching-por-imagen-y-url.md: la ficha de la épica, con sus historias, reglas y bloqueos. - [D] ADR-12 · Un solo sistema: backend compartido y una sola base (sección 3.4).
- [D]
docs/arquitectura/por-epica/base/: piezas, colecciones, eventos y el hilo de punta a punta. - [D]
docs/arquitectura/omega-a-pim-headless/contratos-api.md: convenciones y endpoints de partida. - [D]
docs/arquitectura/maquina-de-estados-to-be/propuesta-maquina-de-estados.md§7: estados, tareas y canales. - [I] Las decisiones de la sección 9 son del TL sobre esas fuentes.