Actualizado el 18-oct-2026. Primera versión de la arquitectura de esta épica.
Qué responde. Cómo funciona por dentro FT-REF-03: 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-03.json, generada con generar.py; la ficha de la épica es trazabilidad/features/FT-REF-03-servicio-de-matching.md.
En 30 segundos
Antes de catalogar algo hay que saber si ya existe y en qué negocio, para no tener dos fichas del mismo producto. Esta épica busca el producto en Marketplace, Liverpool y Suburbia por EAN y por características (marca, modelo, tipo, color…), le pone una confianza a cada coincidencia y responde lo mismo al alta individual, a la carga masiva y a la API. Si la confianza queda en la zona gris, decide una persona de Gobierno de Datos.
- Módulo dueño: MS-06 Evaluación. También participan: MS-01 Catálogo, MS-02 Producto.
- Etapa 1 · ¿Ya existe?. Recibe «PE-1 · Propuesta en Borrador» y entrega «PE-2 · Sin duplicado».
- APIs: construye 6 y usa 8 que construyen otras épicas.
- Eventos: publica 3 y consume 1.
1. Dónde encaja
Recibe
| De | Qué |
|---|---|
| PE-1 · Propuesta en Borrador | La propuesta recién nacida en Borrador con lo que la identifica (EAN, marca, modelo y características), su negocio y su dueño; antes de guardarla, la pantalla pregunta por los mismos datos. |
| FT-REF-02 · Blacklist de Marketplace por marca, negocio y grupo de… | La marca ya revisada contra la lista negra en la misma evaluación. |
| FT-PRD-01 · Modelo canónico de producto | El modelo de producto y el registro de EAN por negocio contra los que se busca, servidos por MS-02. |
| FT-REF-01 · Datos de referencia administrables | Los catálogos de marcas, grupos y proveedores que usa la búsqueda para normalizar marca y modelo. |
Entrega
| A | Qué |
|---|---|
| PE-2 · Sin duplicado | La propuesta en Borrador con su evaluación guardada: no existe otro igual en ningún negocio (o una persona confirmó que es distinto). |
| FT-FLU-03 · Decisión por negocio ante coincidencia | Las coincidencias con su negocio, SKU, dueño, estado y confianza, para decidir qué toca según el negocio. |
| FT-FLU-02 · Alta individual de Marketplace | Las coincidencias por EAN, marca y modelo o características, con su confianza, para el alta individual de Marketplace. |
| FT-IA-02 · Sugerencia de plantilla por IA a partir del producto… | Los candidatos cercanos que no llegaron a coincidencia, como pista del producto homólogo. |
| FT-REF-04 · Matching por imagen y por URL del seller | La lógica de coincidencia y su respuesta, en la que entran lo extraído de la página y los candidatos visuales. |
| FT-FLU-05 · Reglas de negocio en la carga masiva | La misma búsqueda por renglón, sólo con EAN y marca, para la carga masiva. |
Tareas que abre o cierra: Gobierno de Datos.
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 | Captura EAN, marca y modelo de su producto | — |
| 2 | Entrada Única · Vendor Center | MS-06 Evaluación (por el BFF) | Pregunta si ya existe antes de guardar | API-06-005 |
| 3 | MS-06 Evaluación | Entrada Única · Vendor Center | Responde «no existe»: puede seguir | — |
| 4 | Entrada Única · Vendor Center | MS-02 Producto (por el BFF) | Pide el plan de la propuesta con su identificación | API-02-005 |
| 5 | Entrada Única · Vendor Center | MS-02 Producto (por el BFF) | Confirma el plan | API-02-057 |
| 6 | MS-02 Producto | MS-06 Evaluación | Pide evaluar con EAN y características | API-06-001 |
| 7 | MS-06 Evaluación | MS-01 Catálogo | Revisa primero la lista negra | API-01-016 |
| 8 | MS-06 Evaluación | MS-02 Producto | Pide candidatos en los tres negocios | API-02-123 |
| 9 | MS-06 Evaluación | Base pim | Calcula la confianza con pesos y bandas; la guarda | — |
| 10 | MS-06 Evaluación | MS-02 Producto | Responde CONTINUE con los candidatos cercanos | — |
| 11 | MS-02 Producto | Base pim | Guarda la evaluación en la propuesta | — |
| 12 | MS-02 Producto | Eventos | Avisa la propuesta nueva, ya sin duplicado | catalog.product.changed/PRODUCT_CREATED |
3.1 Coincidencia dudosa: decide una persona
3.2 Buscar para ofertar
3.3 Ajustar pesos, bandas y acciones
4. Si algo sale mal
- La confianza cae entre las dos bandas. La propuesta se guarda y se abre una tarea de Gobierno de Datos. El seller ve «encontramos un producto muy parecido; lo estamos revisando», puede seguir capturando pero no enviar hasta que se resuelva; si era el mismo, se le lleva a ofertar con un aviso.
- El EAN coincide pero la marca no. No pasa como producto nuevo: la confianza se calcula por pesos y cae en revisión, porque puede ser un EAN inventado o un error de captura.
- MS-02 no responde con los candidatos. MS-06 responde 503: la propuesta queda en Borrador sin darse por identificada, no puede elegir plantilla ni enviarse, y MS-02 reintenta; el seller ve que se está revisando su producto.
- Un cambio de bandas manda demasiados casos a revisión. El plan muestra antes cuántas decisiones cambiarían con las evaluaciones de 30 días; si se aplicó y no sirvió, otro plan regresa la versión anterior. Cada evaluación guarda con qué versión se hizo.
5. APIs
Las que construye esta épica (6)
POST /api/v2/matches · Buscar productos que ya existen
| Campo | Valor |
|---|---|
| API | API-06-005 · MS-06 Evaluación |
| Para qué | Busca sin guardar nada: por un identificador (EAN o SKU) para ofertar sin recapturar, o por parecido (marca y modelo, características o una imagen de consulta) para ver referencias. Cada resultado trae su confianza y la acción que le tocaría a quien pregunta según la lista negra y su negocio. El gateway la usa para el «¿ya existe?» de terceros (API-GW-007). |
| En esta épica | Preguntar desde la pantalla si ya existe, antes de guardar, y buscar por EAN o SKU para ofertar |
| Quién la llama | Entrada Única · Vendor Center (por el BFF), MS-02 Producto, Gateway de terceros /partner/v1 |
| Permiso | Seller o proveedor con alta de propuestas (ENT-E), por pantalla o por API; sólo ve datos públicos del producto, nunca quién más lo oferta |
| Cabeceras | Authorization, X-Request-Id |
| También la usan | FT-ACT-03, FT-ARQ-01, FT-FLU-02, FT-FLU-03, FT-IA-01, FT-PRD-09, FT-REF-02, FT-REF-04 |
Request
{
"mode": "LOOKUP",
"business": "MKP",
"identifier": {
"type": "EAN",
"value": "7501234567893"
},
"similar": null,
"max": 10
}
Response · 200
{
"success": true,
"data": {
"items": [
{
"productId": "PRD-0004812",
"business": "MKP",
"sku": "1000004812",
"productName": "Batería externa de 20,000 mAh con carga rápida USB-C",
"brandCode": "MARCA01",
"mainImageAssetId": "ast-0009120",
"confidence": 1.0,
"allowedAction": "MULTI_OFFER",
"message": "Vas a ofertar sobre un producto que ya existe: sólo capturas precio e inventario."
}
],
"page": 1,
"size": 10,
"total": 1
}
}
Errores
| HTTP | Código | Cuándo |
|---|---|---|
| 422 | VALIDATION_ERROR | LOOKUP sin identificador, EAN con dígito verificador inválido o SIMILAR sin ningún dato |
| 503 | DEPENDENCY_UNAVAILABLE | La búsqueda por imagen no respondió; se devuelve lo encontrado por datos y se marca partial |
GET /api/v2/validation-thresholds · Umbrales y reglas de evaluación vigentes
| Campo | Valor |
|---|---|
| API | API-06-007 · MS-06 Evaluación |
| Para qué | Lee, por negocio, lo que gobierna las evaluaciones: los pesos de la coincidencia y sus dos bandas, la tabla de decisión por negocio, los pesos de la calificación, el mínimo del visto bueno de Marketplace y los rangos de publicación por calificación que usa FT-RAC-03. |
| En esta épica | Leer pesos, bandas y tabla de decisión por negocio |
| Quién la llama | Entrada Única · Vendor Center (por el BFF), MS-02 Producto |
| Permiso | Administración del catálogo y Gobierno de Datos; MS-02 como servicio (con caché de 5 minutos) |
| Cabeceras | Authorization, X-Request-Id |
| Parámetros | business = MKP |
| También la usan | FT-FLU-03, FT-RAC-02, FT-RAC-03 |
Request
null
Response · 200
{
"success": true,
"data": {
"business": "MKP",
"version": 4,
"updatedAt": "2026-10-15T18:20:00Z",
"match": {
"directRule": "EAN_Y_MARCA",
"weights": {
"MARCA": 25,
"MODELO": 25,
"TIPO_PRODUCTO": 15,
"COLOR": 10,
"CATEGORIA": 10,
"GENERO": 10,
"CONTENIDO": 5
},
"bands": {
"low": 0.7,
"high": 0.9
},
"bulkFields": [
"EAN",
"MARCA"
]
},
"decisionTable": [
{
"rule": "MARCA_O_GRUPO_VETADO",
"action": "BLOCK",
"message": "No se puede catalogar: son productos que comercializa Liverpool (1P o Mercaderías)."
},
{
"rule": "MARCA_SOLO_SELLERS_AUTORIZADOS",
"action": "BLOCK",
"message": "Esta marca sólo la catalogan los sellers autorizados."
},
{
"matchBusiness": "MKP",
"sameOwner": false,
"action": "MULTI_OFFER",
"message": "Crear multioferta porque existe en Marketplace"
},
{
"matchBusiness": "MKP",
"sameOwner": true,
"action": "OWN_DUPLICATE",
"message": "Ya tienes este producto: modifícalo en lugar de darlo de alta otra vez"
},
{
"matchBusiness": "MER",
"brandRule": "PERMITIDA",
"action": "STOCK_OUT",
"message": "Crear multioferta porque está en Liverpool"
},
{
"matchBusiness": "MER",
"brandRule": "CON_PERMISO",
"action": "REVIEW",
"message": "Necesita autorización antes de ofertar sobre este producto"
},
{
"matchBusiness": "MER",
"brandRule": "VETADA_PARA_MER",
"action": "BLOCK",
"message": "No se puede catalogar: es producto de Mercaderías"
},
{
"matchBusiness": "MER",
"targetStatus": "DESCONTINUADO",
"action": "REVIEW",
"message": "Producto descontinuado en Liverpool: una persona decide si se puede ofertar"
},
{
"matchBusiness": "SUB",
"brandRule": "CUALQUIERA",
"action": "BLOCK",
"message": "No se puede catalogar: es producto de Suburbia y Marketplace sólo vende en Liverpool"
},
{
"match": "ENTRE_BANDAS",
"action": "REVIEW",
"message": "Encontramos un producto muy parecido; una persona lo revisa antes de seguir"
},
{
"match": "NINGUNO",
"action": "CONTINUE",
"message": "Producto nuevo"
}
],
"score": {
"weights": {
"MANDATORY": "CHECK",
"RECOMMENDED": 2,
"OPTIONAL": 1
},
"vistoBuenoMinimum": 0,
"publicationBands": [
{
"from": 95,
"band": "PUBLICAR"
},
{
"from": 85,
"to": 95,
"band": "REVISION_PRIORITARIA"
},
{
"to": 85,
"band": "RETENER"
}
]
}
}
}
Errores
| HTTP | Código | Cuándo |
|---|---|---|
| 404 | NOT_FOUND | El negocio no existe |
POST /api/v2/validation-thresholds/plans · Preparar un cambio de umbrales o de la tabla de decisión
| Campo | Valor |
|---|---|
| API | API-06-008 · MS-06 Evaluación |
| Para qué | Prepara un cambio a los pesos, bandas, tabla de decisión o mínimos de un negocio y dice, volviendo a correr las evaluaciones de los últimos 30 días, cuántas decisiones cambiarían y hacia qué acción, sin cambiar nada todavía. |
| En esta épica | Preparar un cambio de umbrales con su impacto |
| Quién la llama | Entrada Única · Vendor Center (por el BFF) |
| Permiso | Administración del catálogo (Gobierno de Producto); la tabla de decisión de Suburbia, con visto bueno del área comercial de Suburbia |
| Cabeceras | Authorization, X-Request-Id, Idempotency-Key, If-Match |
| También la usan | FT-FLU-03, FT-RAC-02, FT-RAC-03 |
Request
{
"business": "MKP",
"version": 4,
"changes": {
"match": {
"bands": {
"low": 0.75
}
},
"decisionTable": [
{
"matchBusiness": "SUB",
"brandRule": "CUALQUIERA",
"action": "REVIEW"
}
]
},
"reason": "Bajar falsos positivos de la revisión de coincidencias"
}
Response · 200
{
"success": true,
"data": {
"planId": "pln-6e21b0",
"expiresAt": "2026-10-18T16:40:00Z",
"impact": {
"window": "últimos 30 días",
"replayedEvaluations": 5000,
"decisionsChanged": 214,
"byChange": [
{
"from": "REVIEW",
"to": "CONTINUE",
"count": 187
},
{
"from": "BLOCK",
"to": "REVIEW",
"count": 27
}
]
},
"applyUrl": "/api/v2/validation-plans/pln-6e21b0/apply"
}
}
Errores
| HTTP | Código | Cuándo |
|---|---|---|
| 409 | VERSION_CONFLICT | Los umbrales cambiaron desde que se leyeron |
| 422 | VALIDATION_ERROR | La banda baja queda arriba de la alta, un peso es negativo o una acción no existe |
| 403 | AUTHORIZATION_ERROR | Quien llama no administra umbrales de ese negocio |
POST /api/v2/validation-plans/{planId}/apply · Confirmar un plan de Evaluación
| Campo | Valor |
|---|---|
| API | API-06-009 · MS-06 Evaluación |
| Para qué | Confirma un plan de MS-06: guarda la nueva versión de umbrales y la evaluación siguiente ya la usa. Lo ya decidido no se recalcula; cada evaluación guarda con qué versión se hizo. |
| En esta épica | Confirmar el cambio de umbrales |
| Quién la llama | Entrada Única · Vendor Center (por el BFF) |
| Permiso | El mismo que pidió el plan |
| Cabeceras | Authorization, X-Request-Id, Idempotency-Key |
| Parámetros | planId = pln-6e21b0 |
| Escribe en | validation_thresholds |
| También la usan | FT-FLU-03, FT-RAC-02, FT-RAC-03 |
Request
{}
Response · 200
{
"success": true,
"data": {
"planId": "pln-6e21b0",
"status": "APPLIED",
"business": "MKP",
"version": 5,
"appliedAt": "2026-10-18T16:12:30Z"
}
}
Errores
| HTTP | Código | Cuándo |
|---|---|---|
| 409 | PLAN_EXPIRED | Pasaron más de 10 minutos desde la vista previa |
| 409 | VERSION_CONFLICT | Otra persona cambió los umbrales después de la vista previa |
| 409 | IDEMPOTENCY_MISMATCH | Se repite la llave de idempotencia con otro plan |
POST /api/v2/evaluations/{evaluationId}/reviews · Resolver una coincidencia dudosa
| Campo | Valor |
|---|---|
| API | API-06-010 · MS-06 Evaluación |
| Para qué | Una persona de Gobierno de Datos dice si la propuesta es el mismo producto que el candidato (o autoriza un caso «con permiso»). MS-06 guarda su veredicto en la evaluación, recalcula la decisión y avisa con EVALUATION_DONE para que MS-02 siga o lleve al seller a ofertar. |
| En esta épica | Registrar el veredicto de Gobierno de Datos sobre una coincidencia dudosa |
| Quién la llama | Entrada Única · Vendor Center (por el BFF) |
| Permiso | Gobierno de Datos con la tarea de revisión asignada; los casos «con permiso», el área que defina PEN-20 (arranca Gobierno de Datos) |
| Cabeceras | Authorization, X-Request-Id, Idempotency-Key |
| Parámetros | evaluationId = evl-0000740 |
| Escribe en | validation_results |
| Publica | catalog.validation.result/EVALUATION_DONE |
| También la usan | FT-FLU-03 |
Request
{
"verdict": "SAME_PRODUCT",
"candidateProductId": "PRD-0002031",
"taskId": "tsk-40211",
"comment": "Mismo cargador: el modelo coincide y el EAN del seller es interno"
}
Response · 200
{
"success": true,
"data": {
"evaluationId": "evl-0000740",
"status": "DONE",
"review": {
"verdict": "SAME_PRODUCT",
"candidateProductId": "PRD-0002031",
"reviewedAt": "2026-10-19T15:10:00Z",
"reviewer": {
"area": "GOBIERNO-DATOS",
"role": "GOBIERNO_DE_DATOS"
}
},
"decision": {
"action": "MULTI_OFFER",
"reasonCode": "EXISTS_IN_MKP_REVIEWED",
"targetSku": "1000002031",
"targetBusiness": "MKP",
"message": "Este producto ya existe en Marketplace: puedes ofertar sobre su SKU."
}
}
}
Errores
| HTTP | Código | Cuándo |
|---|---|---|
| 409 | NOT_EDITABLE_IN_STATUS | La evaluación no está en revisión o ya se resolvió |
| 403 | AUTHORIZATION_ERROR | Quien llama no tiene la tarea de revisión ni el rol de Gobierno de Datos |
| 422 | VALIDATION_ERROR | SAME_PRODUCT sin candidato, o un candidato que no estaba en la evaluación |
GET /bff/v1/match-reviews/{taskId} · Pantalla de revisión de una coincidencia dudosa: junta la ta
| Campo | Valor |
|---|---|
| API | API-BFF-303 · BFF del portal |
| Para qué | Pantalla de revisión de una coincidencia dudosa: junta la tarea y la propuesta (MS-02), la evaluación con sus candidatos y la confianza por campo (MS-06) y la foto principal de la propuesta y de cada candidato (MS-11), para comparar lado a lado. |
| En esta épica | Pantalla de revisión de una coincidencia dudosa (composición del BFF) |
Request
null
Response · 200
{
"success": true,
"data": {
"taskId": "tsk-40211",
"taskType": "GOBIERNO_DE_DATOS",
"queue": "COINCIDENCIAS",
"proposal": {
"productId": "PRD-0004815",
"business": "MKP",
"seller": "SELLER-0002",
"title": "Cargador rápido 25 W",
"brandCode": "MARCA03",
"model": "CG-25W",
"ean": "7509876500018",
"mainImageAssetId": "ast-0004502"
},
"evaluation": {
"evaluationId": "evl-0000740",
"bands": {
"low": 0.7,
"high": 0.9
},
"decision": "REVIEW"
},
"candidates": [
{
"productId": "PRD-0002031",
"business": "MKP",
"sku": "1000002031",
"productName": "Cargador de pared 25 W USB-C",
"confidence": 0.78,
"fields": [
{
"field": "MARCA",
"matched": true
},
{
"field": "MODELO",
"matched": true
},
{
"field": "EAN",
"matched": false
}
],
"mainImageAssetId": "ast-0002210"
}
],
"actions": [
"SAME_PRODUCT",
"DIFFERENT_PRODUCT"
]
}
}
Errores
| HTTP | Código | Cuándo |
|---|---|---|
| 403 | AUTHORIZATION_ERROR | Quien llama no tiene el permiso o no es el módulo autorizado |
| 404 | NOT_FOUND | No existe lo que se pide o no es visible para quien llama |
Las que usa y construye otra épica (8)
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: lista negra, coincidencias y decisión | FT-REF-02 · Blacklist de Marketplace por marca, negocio y grupo de… |
| API-06-002 | POST /api/v2/evaluations/batches | La misma búsqueda por renglón en la carga masiva | FT-FLU-05 · Reglas de negocio en la carga masiva |
| API-06-003 | GET /api/v2/evaluations/batches/{batchId} | Leer el resultado por renglón de la carga masiva | FT-FLU-05 · Reglas de negocio en la carga masiva |
| API-01-016 | GET /api/v2/rules?type= | Leer la lista negra antes de buscar coincidencias | FT-PLT-07 · Reglas de atributos |
| API-02-005 | POST /api/v2/products/plans | Preparar la propuesta en Borrador con su identificación | FT-PRD-01 · Modelo canónico de producto |
| API-02-057 | POST /api/v2/product-plans/{planId}/apply | Confirmar el alta de la propuesta | FT-FLU-01 · Motor de estados configurable con dos carreteras y reglas… |
| API-02-404 | GET /api/v2/offer-targets/{sku} | Llevar al seller a ofertar sobre el SKU encontrado | FT-INT-05 · Multioferta y stock out |
| API-02-123 | POST /internal/product/match-candidates | Pedir a MS-02 candidatos por EAN y características sin leer su base | FT-FLU-05 · Reglas de negocio en la carga masiva |
6. Eventos
Publica
| Evento | Cuándo | Quién lo consume |
|---|---|---|
catalog.validation.result/EVALUATION_DONE | Gobierno de Datos resuelve una coincidencia dudosa y MS-06 recalcula la decisión | FT-FLU-02, FT-FLU-03, FT-FLU-04, FT-FLU-05, FT-FLU-06, FT-PRD-10, FT-RAC-06 |
catalog.product.changed/PRODUCT_CREATED | MS-02 guarda la propuesta con su evaluación | FT-ARQ-01 |
catalog.product.changed/TASK_CHANGED | MS-02 abre o cierra la tarea de revisión de coincidencia | FT-ACT-05, FT-ACT-06, FT-ARQ-02, FT-CAT-06, FT-FLU-01, FT-IA-06, FT-PRD-02, FT-PRD-05, FT-PRD-06, FT-PRD-07, FT-PRD-08, FT-RAC-02, FT-RAC-03, FT-RAC-04, FT-RAC-05, FT-RAC-06 |
Consume
| Evento | Para qué | Quién lo publica |
|---|---|---|
catalog.validation.result/EVALUATION_DONE | MS-02 aplica la decisión revisada: sigue con la propuesta o la lleva a la oferta (FT-INT-05) y cierra la tarea | esta misma épica |
7. Datos
Cada colección tiene un solo dueño, el único que escribe en ella.
| Colección | Dueño | Qué guarda | Esta épica |
|---|---|---|---|
validation_results | MS-06 | El resultado de cada evaluación: lista negra, coincidencias con su confianza y score. | escribe |
validation_thresholds | MS-06 | Los umbrales de coincidencia y de calificación por negocio. | escribe |
products | MS-02 | La familia del producto con sus variantes, valores, imágenes (URL), clasificaciones, estado, tareas abiertas y rechazos. | lee |
identifier_registry | MS-02 | Unicidad de SKU y de EAN por negocio. | lee |
governance_rules | MS-01 | Reglas de captura y clasificación: marcas por plantilla, grupo de artículo a plantilla, alcance del proveedor y lista negra de Marketplace. | lee |
8. Historias que cubre
| Historia | Prioridad | Cómo la cubre |
|---|---|---|
| FT-REF-03·H1 · ¿Ya existe y dónde? | P1 | pasos 2, 3, 6, 8, 9, 10; API-06-001, API-06-005, API-02-123 |
| FT-REF-03·H2 · Misma respuesta en la masiva | P1 | API-06-002, API-06-003 |
| FT-REF-03·H3 · Confianza configurable | P1 | flujo «Ajustar pesos, bandas y acciones», «Coincidencia dudosa: decide una persona»; API-06-007, API-06-008, API-06-009, API-06-010 |
| FT-REF-03·H4 · Buscar para ofertar | P2 | flujo «Buscar para ofertar»; API-06-005, API-02-404 |
| FT-REF-03·H5 · Mercaderías | P3 | API-06-001. Fuera: La lógica propia de Mercaderías espera su sesión (DUD-32); mientras, aplica D-REF-03-6. |
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-03-1. MS-06 no lee products ni identifier_registry: pide candidatos a MS-02 por una ruta interna (PEDIDA-FT-REF-03-1) que busca por índice (EAN exacto; marca y modelo normalizados) y devuelve a lo más 10 por consulta. MS-06 calcula la confianza con sus pesos. Por qué: Un dato, un dueño: el producto es de MS-02. Buscar por índice y con tope evita recorrer todo el catálogo en cada alta. Se apoya en ADR-12, RF-MAT-08, DEC-33.
- D-REF-03-2. Cómo se mide: EAN igual con la misma marca es coincidencia directa (confianza 1.0); sin EAN igual, la confianza es la suma de los pesos de las características que coinciden entre las que trae la propuesta. EAN igual con marca distinta nunca pasa como nuevo. Bandas por negocio que arrancan en 0.70 y 0.90: arriba de la alta es el mismo producto (decide FT-FLU-03), entre las dos revisa una persona y abajo es producto nuevo. Por qué: Toma el criterio de taller (match contra el producto por EAN con la marca como peso, umbrales de referencia 70 y 90) y deja la acción de cada rango explícita, que era lo abierto. Se apoya en RF-MAT-06, RF-MAT-07, RN-MAT-11, PEN-22.
- D-REF-03-3. Pesos y bandas son de MS-06 (validation_thresholds) y se cambian con plan y vista previa del impacto. Los MatchingWeights de P360 se migran como punto de partida; la mención de «pesos» en product_reference_tables de MS-02 se retira en la conciliación. Por qué: Quien calcula la confianza es quien guarda sus parámetros; dejarlos también en MS-02 serían dos copias. El umbral de hoy ni siquiera se lee por un nombre mal escrito. Se apoya en DUD-32, RF-MAT-07, ADR-12.
- D-REF-03-4. La zona gris la decide una persona: MS-02 guarda la propuesta, abre GOBIERNO_DE_DATOS en la cola «Coincidencias» y el seller puede seguir capturando pero no enviar hasta que se resuelva. El veredicto se registra en MS-06 (API-06-010), que avisa con EVALUATION_DONE. Reemplaza la bandeja «Revisión Matching» de P360. Por qué: La IA y las reglas proponen y una persona decide lo dudoso, sin que el seller pueda darle la vuelta ni pierda su avance. Se apoya en PEN-22, RN-MAT-07, DEC-62.
- D-REF-03-5. La carga masiva usa la misma evaluación por renglón, sólo con EAN y marca (sin imagen ni URL), con los mismos pesos y la misma tabla: con los mismos datos, el alta individual y la masiva dan la misma decisión. Por qué: Si los canales usan reglas distintas el seller recibe respuestas distintas para el mismo producto. Se apoya en RF-MAT-20, DEC-57, DEC-61, RN-MAS-03.
- D-REF-03-6. En propuestas de Mercaderías y Suburbia, el EAN igual en su propio negocio es duplicado y no se crea (lo cuida además el registro de identificadores de FT-PRD-03); una coincidencia por características sólo avisa a Compras en su visto bueno, no bloquea. Por qué: La sesión de matching de Mercaderías no tiene fecha; esto conserva la regla de hoy (EAN duplicado) sin frenar al proveedor con reglas de Marketplace. Se apoya en DUD-32, PEN-25.
- D-REF-03-7. EVALUATION_DONE sirve para tres casos: el bloque de una carga masiva, la evaluación que tardó por la IA y la revisión de una persona; el cuerpo dice cuál (kind). No se pide un tipo nuevo. API-06-001 y API-06-002 sólo los llama MS-02: aunque su ruta es /api/v2, el BFF no los publica. Por qué: Un solo aviso de «la evaluación cambió» basta para MS-02, que es su único consumidor; menos tipos que mantener. Se apoya en ADR-12.
Qué falta decidir
| ID | Qué falta |
|---|---|
| DUD-32 | Agendar la sesión de matching de Mercaderías (lógica propia o por plantilla) y confirmar el nombre real del umbral de hoy en la base de P360. |
También siguen abiertos: PEN-22, Ratificar con Gobierno de Producto y Marketplace las bandas (aquí 0.70 y 0.90) y la acción de cada rango; PEN-25, Confirmar que en Mercaderías una coincidencia por características o por imagen sólo avisa.
Fuentes
- [D]
trazabilidad/features/FT-REF-03-servicio-de-matching.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.