Actualizado el 18-oct-2026. Primera versión de la arquitectura de esta épica.
Qué responde. Cómo funciona por dentro FT-IA-02: 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-IA-02.json, generada con generar.py; la ficha de la épica es trazabilidad/features/FT-IA-02-sugerencia-plantilla-por-homologo.md.
En 30 segundos
El seller no conoce el árbol de plantillas y elige mal, lo que causa rechazos y cobros por grupos de artículo equivocados. Esta épica toma lo que se sacó de la imagen o de la URL, busca en el catálogo el producto más parecido y propone su plantilla general de familia con la pregunta «¿es tu plantilla?». Si dice que no, elige otra en el árbol; si ninguna sirve, elige su familia y se le asigna la plantilla general o «otros», sin levantar un ticket.
- Módulo dueño: MS-15 IA y enriquecimiento. También participan: MS-01 Catálogo, MS-02 Producto.
- Etapa 2 · Plantilla. Recibe «PE-2 · Sin duplicado» y entrega «PE-3 · Plantilla asignada».
- APIs: construye 1 y usa 5 que construyen otras épicas.
- Eventos: publica 1 y consume 2.
1. Dónde encaja
Recibe
| De | Qué |
|---|---|
| PE-2 · Sin duplicado | La propuesta de un seller sin duplicado que entró por imagen o URL, con su evaluación guardada. |
| FT-REF-04 · Matching por imagen y por URL del seller | Lo extraído de la página o de la imagen (en un trabajo de IA) y los productos parecidos que no llegaron a coincidencia. |
| FT-REF-03 · Servicio de matching | Los candidatos cercanos de la evaluación, como pista del homólogo. |
| FT-PLT-05 · Taxonomía de plantillas por familia, metadatos de… | El árbol, las palabras clave y las plantillas generales de familia en las que se busca la sugerencia. |
Entrega
| A | Qué |
|---|---|
| PE-3 · Plantilla asignada | La propuesta con plantilla asignada, por sugerencia aceptada o elegida en el árbol, y la vista efectiva de su negocio lista para capturar. |
| FT-PLT-05 · Taxonomía de plantillas por familia, metadatos de… | La plantilla general de familia que sugiere la IA, con su confianza, para el selector de plantillas. |
| FT-IA-01 · Prellenado con IA y validación obligatoria del usuario | La plantilla aceptada y el trabajo de IA con lo extraído, para prellenar sin volver a leer la página. |
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 | Sigue su alta por imagen o URL, sin coincidencia | — |
| 2 | Entrada Única · Vendor Center | MS-15 IA y enriquecimiento (por el BFF) | Pide plantillas sugeridas para su propuesta | API-15-001 |
| 3 | MS-15 IA y enriquecimiento | Base pim | Toma lo extraído en la identificación | — |
| 4 | MS-15 IA y enriquecimiento | Modelos de IA | Busca el producto homólogo más parecido | — |
| 5 | MS-15 IA y enriquecimiento | MS-01 Catálogo | Sube a la plantilla general de su familia | API-01-021 |
| 6 | MS-15 IA y enriquecimiento | Base pim | Guarda la sugerencia con su confianza | — |
| 7 | MS-15 IA y enriquecimiento | Entrada Única · Vendor Center | Responde la plantilla y «¿es tu plantilla?» | — |
| 8 | Seller | Entrada Única · Vendor Center | Responde «sí, es mi plantilla» | — |
| 9 | Entrada Única · Vendor Center | MS-02 Producto (por el BFF) | Pide asignar la plantilla con la sugerencia aceptada | API-02-016 |
| 10 | Entrada Única · Vendor Center | MS-02 Producto (por el BFF) | Confirma el plan | API-02-057 |
| 11 | MS-02 Producto | Eventos | Avisa la plantilla asignada | catalog.product.changed/CLASSIFICATION_CHANGED |
| 12 | Eventos | MS-15 IA y enriquecimiento | Entrega la respuesta para medir la sugerencia | catalog.product.changed/CLASSIFICATION_CHANGED |
3.1 No es mi plantilla
3.2 Ninguna plantilla sirve
3.3 Medir las sugerencias
4. Si algo sale mal
- La IA no responde. La pantalla muestra el selector de plantillas completo, con la plantilla general de cada familia primero; el seller no se queda detenido.
- La sugerencia es equivocada. El seller responde «no es mi plantilla» y elige otra; cuenta como sugerencia rechazada en las métricas de esa familia.
- El seller cambia de plantilla con valores ya prellenados. Se conservan, como sugerencias por confirmar, sólo los valores cuyos atributos existen en la plantilla nueva; los demás se descartan y quedan en el trabajo de IA.
- La familia no tiene plantilla general. Se asigna «otros» de la familia y el caso queda en las métricas para que Gobierno de Producto decida si crea una plantilla (FT-IA-04).
5. APIs
Las que construye esta épica (1)
POST /api/v2/ai/template-suggestions · Sugerir la plantilla por el producto homólogo
| Campo | Valor |
|---|---|
| API | API-15-001 · MS-15 IA y enriquecimiento |
| Para qué | Busca en el catálogo el producto más parecido (el homólogo) con lo que se extrajo de la imagen o de la URL y propone su plantilla general de familia, no una por producto, para preguntarle al seller «¿es tu plantilla?». Sirve antes de guardar la propuesta (con el evaluationId de la identificación) o después (con el productId). Si no encuentra ninguna, propone las familias; con la familia que elija el seller devuelve la plantilla general o «otros» de esa familia. |
| En esta épica | Sugerir la plantilla general de familia del homólogo, o la general de la familia que elija el seller |
| Quién la llama | Entrada Única · Vendor Center (por el BFF), MS-02 Producto, Gateway de terceros /partner/v1 |
| Permiso | El dueño de la propuesta (seller o proveedor); MS-02 como servicio |
| Cabeceras | Authorization, X-Request-Id |
| Escribe en | ai_jobs |
| También la usan | FT-FLU-02, FT-PLT-05 |
Request
{
"business": "MKP",
"evaluationId": "evl-0000733",
"productId": null,
"inputs": {
"sourceJobId": "job-0003311",
"imageAssetIds": [
"ast-0004410"
],
"title": "Bujía de iridio para motor de 4 tiempos",
"homologueHints": [
"PRD-0002277"
],
"family": null
},
"max": 3
}
Response · 200
{
"success": true,
"data": {
"suggestionId": "sug-7f3a",
"question": "¿Es tu plantilla?",
"items": [
{
"templateId": "EU4-0412",
"path": "Automotriz > Refacciones > Refacciones generales",
"family": "REFACCIONES",
"general": true,
"confidence": 0.88,
"homologue": {
"productId": "PRD-0002277",
"productName": "Bujía de platino para motocicleta"
}
},
{
"templateId": "EU4-0398",
"path": "Automotriz > Motocicletas > Accesorios",
"family": "MOTOCICLETAS",
"general": true,
"confidence": 0.41,
"homologue": null
}
],
"fallback": null
}
}
Errores
| HTTP | Código | Cuándo |
|---|---|---|
| 404 | NOT_FOUND | La propuesta o la evaluación no existen o no son de quien llama |
| 422 | BUSINESS_ERROR | No hay insumo (entró por características, sin imagen ni URL) y no trae familia: el seller elige en el árbol |
| 503 | DEPENDENCY_UNAVAILABLE | El modelo no respondió: la pantalla muestra el árbol completo |
Las que usa y construye otra épica (5)
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-15-013 | GET /api/v2/ai/metrics | Medir cuántas sugerencias se aceptan, se rechazan o se cambian | FT-IA-04 · Integración de los modelos de IA existentes |
| API-01-021 | GET /api/v2/structures/{id}/tree | Subir del homólogo a la plantilla general de su familia | FT-PLT-05 · Taxonomía de plantillas por familia, metadatos de… |
| API-01-022 | GET /api/v2/structures/{id}/leaves | Buscar en todas las plantillas permitidas cuando la sugerencia no sirve | FT-PLT-05 · Taxonomía de plantillas por familia, metadatos de… |
| API-02-016 | POST /api/v2/products/classifications/plans | Asignar la plantilla a la propuesta, con la sugerencia aceptada | FT-CAT-03 · Categorización de productos |
| API-02-057 | POST /api/v2/product-plans/{planId}/apply | Confirmar la asignación de plantilla | FT-FLU-01 · Motor de estados configurable con dos carreteras y reglas… |
6. Eventos
Publica
| Evento | Cuándo | Quién lo consume |
|---|---|---|
catalog.product.changed/CLASSIFICATION_CHANGED | MS-02 asigna la plantilla, sugerida o elegida | FT-ACT-05, FT-ACT-06, FT-CAT-05, FT-IA-04 |
Consume
| Evento | Para qué | Quién lo publica |
|---|---|---|
catalog.product.changed/CLASSIFICATION_CHANGED | MS-15 registra si la sugerencia se aceptó, se rechazó o se cambió | esta misma épica |
catalog.governance.changed/TAXONOMY_NODE_CHANGED | MS-15 renueva su índice de plantillas y familias | FT-CAT-04, FT-INT-03, FT-INT-04, FT-PLT-05, FT-PLT-09 |
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 |
taxonomy_nodes | MS-01 | Plantillas y nodos de grupo de artículo, con la configuración de atributos de cada plantilla. | lee |
products | MS-02 | La familia del producto con sus variantes, valores, imágenes (URL), clasificaciones, estado, tareas abiertas y rechazos. | 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-IA-02·H1 · Que el PIM me proponga la plantilla del producto más parecido del catálogo | P1 | pasos 2, 3, 4, 5, 7, 8, 9, 10; API-15-001 |
| FT-IA-02·H2 · Responder "no es mi plantilla" y elegir otra | P1 | flujo «No es mi plantilla»; API-01-022 |
| FT-IA-02·H3 · Responder unas preguntas mínimas | P2 | flujo «Ninguna plantilla sirve» |
| FT-IA-02·H4 · Saber cuántas sugerencias se aceptan o se rechazan | P3 | flujo «Medir las sugerencias»; API-15-013 |
9. Decisiones de esta épica
Las tomó el TL como arquitecto; quedan como [Propuesta] hasta que el equipo de la épica las revise.
- D-IA-02-1. La sugerencia sale del producto homólogo más parecido del catálogo (búsqueda por imagen y texto en el embedding lake) y siempre propone la plantilla general de su familia, no una por producto; hasta tres opciones con su confianza. Por qué: Las plantillas por producto generan rechazos; cada familia tiene una plantilla general y así siempre hay un papá. Se apoya en RN-PLA-10, RN-PLA-12, RF-ENR-05, FT-PLT-05.
- D-IA-02-2. Reusa lo extraído en la identificación (el trabajo de IA de FT-REF-04) y los candidatos cercanos de la evaluación; no vuelve a leer la página ni a pagar el modelo. Por qué: Un solo pago por propuesta y la misma lectura del producto en toda el alta. Se apoya en RF-ENR-05, DEC-40.
- D-IA-02-3. Sólo hay sugerencia cuando el alta entró por imagen o URL; por características el seller elige en el selector de plantillas, y sin insumo no se inventa una. Por qué: Es la ruta acordada por camino; sin imagen ni texto la IA adivinaría. Se apoya en RN-ENR-06, PEN-16.
- D-IA-02-4. Si el seller cambia de plantilla, se conservan como sugerencias por confirmar sólo los valores cuyos atributos existen en la plantilla nueva; los demás se descartan y quedan en el trabajo de IA por si vuelve atrás. Por qué: No se pierde lo útil, no se arrastran datos que la nueva plantilla no pide y todo sigue pasando por la confirmación del usuario. Se apoya en RN-ENR-05.
- D-IA-02-5. Sin plantilla que sirva, el seller elige su familia y se le asigna la general o «otros» de esa familia, sin ticket; el caso se cuenta para que Gobierno de Producto decida si pide a la IA una plantilla nueva (FT-IA-04). Por qué: Hoy la plantilla que no existe se resuelve con un ticket que detiene al seller. Se apoya en RF-CAT-09, PEN-15.
- D-IA-02-6. La aceptación se mide con la asignación que guarda MS-02 con el suggestionId (CLASSIFICATION_CHANGED), no con lo que reporte la pantalla. Por qué: Una sola fuente de verdad para las métricas por familia. Se apoya en RF-ENR-06, RF-ENR-09.
Qué falta decidir
| ID | Qué falta |
|---|---|
| DUD-35 | Con el equipo de IA: cómo se elige el homólogo (imagen, texto o ambos) y su umbral. |
| PD-01 | Si la sugerencia por IA entra en el primer corte o es mejora posterior. |
También siguen abiertos: PEN-15, Confirmar con Marketplace las ramas cuando no hay plantilla (preguntas por familia o «otros»); PEN-16, Qué hacer en un alta manual desde cero sin imagen ni URL (aquí: el seller elige en el selector).
Fuentes
- [D]
trazabilidad/features/FT-IA-02-sugerencia-plantilla-por-homologo.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.