← Arquitectura por épica

FT-IA-06 · Asistente conversacional para que el seller reporte errores

Arquitectura del Nuevo PIM por épica · corte del 18-oct-2026

Propuesta del TL: no sustituye la spec de cada épica

Actualizado el 18-oct-2026. Primera versión de la arquitectura de esta épica.

Qué responde. Cómo funciona por dentro FT-IA-06: 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-06.json, generada con generar.py; la ficha de la épica es trazabilidad/features/FT-IA-06-asistente-conversacional-reporte-errores.md.

En 30 segundos

Un seller que oferta sobre un producto que ya existe no puede modificarlo, y hoy para reportar un error depende de su KAM. Esta épica le da un asistente: escribe en lenguaje natural qué ve mal (le falta una foto, un dato) o por qué su producto no avanza; el asistente lo entiende con el estatus y los motivos del PIM, le explica lo que pueda y le arma un reporte que el seller confirma y que llega como tarea a Gobierno de Datos.

  • Módulo dueño: MS-15 IA y enriquecimiento. También participan: MS-02 Producto, MS-06 Evaluación, MS-14 Avisos y ayuda.
  • Etapa T · Transversal. Recibe de otras épicas y entrega a otras épicas.
  • APIs: construye 2 y usa 3 que construyen otras épicas.
  • Eventos: publica 1 y consume 1.

1. Dónde encaja

Recibe

DeQué
FT-RAC-05 · Estatus del producto y motivos visibles para seller y…El estatus que ve el seller (etiqueta, paso, qué le toca) y los motivos abiertos de cada producto.
FT-INT-05 · Multioferta y stock outEl seller ligado a un SKU que ya existe, que no puede modificar y sobre el que sólo oferta.
FT-RAC-02 · Score de calidad del productoLa calificación y lo que le falta a un producto, para explicar por qué no avanza.

Entrega

AQué
FT-PRD-05 · Edición y aprobación por campo según el dueño del datoEl reporte confirmado por el seller, ligado al producto y al paso, para que el dueño del dato lo corrija.
FT-RAC-06 · Métricas de tiempos por paso y clasificación de erroresLos reportes clasificados por tipo de error y paso del alta, para medir dónde se atoran los sellers.

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

Sistemas externos

Nuevo PIM · un solo sistema

Pantallas y sistemas

Personas

Conversar con el asistente

Estatus visible para el proveedor o s…
Motivos de rechazo

Entiende el mensaje y arma el reporte

Responde y pide confirmar el reporte
Explica que no es un rechazo y qué co…
y 1 más

POST /api/v2/products/{id}/error-repo…

TASK_CHANGED

TASK_CHANGED

Detalle de una evaluación

Seller

Entrada Única · Vendor Center

BFF del portal

MS-02 Producto

MS-06 Evaluación

MS-14 Avisos y ayuda

★ MS-15 IA y enriquecimiento

Base pim

Eventos

Modelos de IA

Contexto de FT-IA-06

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.

MS-14 Avisos y ayudaEventosBase·pimModelos de IAMS-02 ProductoMS-15 IA y enriquecimientoEntrada Única · Vendor CenterMS-14 Avisos y ayudaEventosBase·pimModelos de IAMS-02 ProductoMS-15 IA y enriquecimientoEntrada Única · Vendor CenterSellerBFF1. Escribe qué error ve en el producto2. Manda el mensaje con el producto y el pasoPOST /api/v2/ai/assistant/messages3. Lee el estatus que ve el sellerGET /api/v2/workflow/status-views4. Lee los motivos abiertos del productoGET /api/v2/workflow/comments?productIds=5. Entiende el mensaje y arma el reporte6. Guarda la conversación y el borrador del reporte7. Responde y pide confirmar el reporte8. Confirma que se mande9. Registra el reporte ligado al productoPOST /api/v2/products/{id}/error-reports10. Abre tarea de Gobierno de Datos en «Reportes de sellers»11. Avisa la tarea nuevaTASK_CHANGED12. Entrega la tarea para avisar a Gobierno de DatosTASK_CHANGEDSellerBFF
Flujo principal de FT-IA-06
Los pasos en texto
PasoDeAQué haceAPI o evento
1SellerEntrada Única · Vendor CenterEscribe qué error ve en el producto—
2Entrada Única · Vendor CenterMS-15 IA y enriquecimiento (por el BFF)Manda el mensaje con el producto y el pasoAPI-15-009
3MS-15 IA y enriquecimientoMS-02 ProductoLee el estatus que ve el sellerAPI-02-302
4MS-15 IA y enriquecimientoMS-02 ProductoLee los motivos abiertos del productoAPI-02-029
5MS-15 IA y enriquecimientoModelos de IAEntiende el mensaje y arma el reporte—
6MS-15 IA y enriquecimientoBase pimGuarda la conversación y el borrador del reporte—
7MS-15 IA y enriquecimientoEntrada Única · Vendor CenterResponde y pide confirmar el reporte—
8SellerEntrada Única · Vendor CenterConfirma que se mande—
9Entrada Única · Vendor CenterMS-02 Producto (por el BFF)Registra el reporte ligado al productoAPI-02-312
10MS-02 ProductoBase pimAbre tarea de Gobierno de Datos en «Reportes de sellers»—
11MS-02 ProductoEventosAvisa la tarea nuevacatalog.product.changed/TASK_CHANGED
12EventosMS-14 Avisos y ayudaEntrega la tarea para avisar a Gobierno de Datoscatalog.product.changed/TASK_CHANGED

3.1 ¿Por qué no avanza mi producto?

MS-06 EvaluaciónMS-02 ProductoMS-15 IA y enriquecimientoEntrada Única · Vendor CenterMS-06 EvaluaciónMS-02 ProductoMS-15 IA y enriquecimientoEntrada Única · Vendor CenterSellerBFF1. Pregunta por qué su producto no avanza2. Manda la preguntaPOST /api/v2/ai/assistant/messages3. Lee estatus y tareas abiertasGET /api/v2/workflow/status-views4. Lee la calificación: no alcanza el mínimoGET /api/v2/evaluations/{evaluationId}5. Explica que no es un rechazo y qué completarSellerBFF
¿Por qué no avanza mi producto?

3.2 Error en un paso del alta

MS-02 ProductoBase·pimMS-15 IA y enriquecimientoEntrada Única · Vendor CenterMS-02 ProductoBase·pimMS-15 IA y enriquecimientoEntrada Única · Vendor CenterSellerBFF1. Dice «estoy en el paso de imágenes y falla»2. Manda el mensaje con el pasoPOST /api/v2/ai/assistant/messages3. Guarda el reporte con el paso del alta4. Responde con el reporte por confirmar5. Registra el reporte con el paso y el errorPOST /api/v2/products/{id}/error-reportsSellerBFF
Error en un paso del alta

4. Si algo sale mal

  • El modelo del asistente no responde. La pantalla ofrece el formulario corto de reporte (producto, paso, qué falta) y el reporte llega igual a Gobierno de Datos.
  • El asistente no tiene el dato para explicar. Lo dice y ofrece mandar el reporte; nunca inventa un motivo: sólo usa el estatus, los motivos y la calificación del PIM.
  • El seller manda muchos mensajes seguidos. MS-15 responde 429 y pide esperar; los reportes ya confirmados no se pierden.
  • Gobierno de Datos no atiende el reporte a tiempo. El reloj de plazos del motor escala la tarea de su cola; el seller ve el reporte «en atención» con su fecha.

5. APIs

Las que construye esta épica (2)

POST /api/v2/ai/assistant/messages · Conversar con el asistente
CampoValor
APIAPI-15-009 · MS-15 IA y enriquecimiento
Para quéEl seller escribe en lenguaje natural qué error ve en un producto o en un paso del alta; el asistente lo entiende con el estatus y los motivos del producto, le explica por qué no avanza cuando aplica y le arma un reporte que el seller confirma antes de mandarlo.
En esta épicaConversar con el asistente y armar el reporte
Quién la llamaEntrada Única · Vendor Center (por el BFF)
PermisoSeller o proveedor autenticado; sólo sobre productos que puede ver
CabecerasAuthorization, X-Request-Id
Escribe enai_jobs

Request

{
  "conversationId": null,
  "context": {
    "productId": "PRD-0001190",
    "sku": "1000001190",
    "step": "DETALLE_OFERTA"
  },
  "message": "Estoy colgando este producto y le falta la foto del empaque"
}

Response · 200

{
  "success": true,
  "data": {
    "conversationId": "cnv-0000412",
    "reply": "Entendido: al producto 1000001190 le falta la foto del empaque. ¿Mando el reporte para que lo corrijan?",
    "reportDraft": {
      "draftId": "rpt-0000077",
      "productId": "PRD-0001190",
      "step": "DETALLE_OFERTA",
      "errorType": "FALTA_IMAGEN",
      "detail": "Falta la foto del empaque",
      "suggestedQueue": "REPORTES_SELLERS"
    },
    "statusExplanation": null
  }
}

Errores

HTTPCódigoCuándo
404NOT_FOUNDEl producto no existe o no es visible para quien llama
429RATE_LIMITEDDemasiados mensajes por minuto
503DEPENDENCY_UNAVAILABLEEl modelo no respondió: la pantalla ofrece el formulario corto de reporte
POST /api/v2/products/{id}/error-reports · El seller o proveedor reporta un error de un producto que pu
CampoValor
APIAPI-02-312 · MS-02 Producto
Para quéEl seller o proveedor reporta un error de un producto que puede ver pero no modificar (o de un paso de su alta): MS-02 abre una tarea de Gobierno de Datos en la cola «Reportes de sellers», ligada al producto, al paso y al borrador del asistente, y avisa con TASK_CHANGED. No cambia el producto.
En esta épicaRegistrar el reporte confirmado como tarea de Gobierno de Datos

Request

{
  "reportDraftId": "rpt-0000077",
  "source": "ASSISTANT",
  "step": "DETALLE_OFERTA",
  "errorType": "FALTA_IMAGEN",
  "detail": "Falta la foto del empaque",
  "sku": "1000001190"
}

Response · 201

{
  "success": true,
  "data": {
    "reportId": "rep-0000301",
    "productId": "PRD-0001190",
    "taskId": "tsk-60412",
    "taskType": "GOBIERNO_DE_DATOS",
    "queue": "REPORTES_SELLERS",
    "status": "OPEN",
    "visibleToSeller": "En atención"
  }
}

Errores

HTTPCódigoCuándo
403AUTHORIZATION_ERRORQuien llama no tiene el permiso o no es el módulo autorizado
422VALIDATION_ERRORFalta un dato o viene con un formato inválido; el detalle dice qué campo
409IDEMPOTENCY_MISMATCHSe repite la llave de idempotencia con otro cuerpo

Las que usa y construye otra épica (3)

Su request y su response están en la página de la épica que la construye.

APIMétodo y rutaPara qué, aquíLa construye
API-02-302GET /api/v2/workflow/status-viewsLeer el estatus que ve el seller y en qué paso vaFT-RAC-05 · Estatus del producto y motivos visibles para seller y…
API-02-029GET /api/v2/workflow/comments?productIds=Leer los motivos abiertos del productoFT-PRD-04 · Propuesta del proveedor de Mercaderías
API-06-004GET /api/v2/evaluations/{evaluationId}Leer la calificación y lo que le falta para avanzarFT-FLU-03 · Decisión por negocio ante coincidencia

6. Eventos

Publica

EventoCuándoQuién lo consume
catalog.product.changed/TASK_CHANGEDMS-02 abre la tarea del reporte del sellerFT-ACT-05, FT-ACT-06, FT-ARQ-02, FT-CAT-06, FT-FLU-01, 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

EventoPara quéQuién lo publica
catalog.product.changed/TASK_CHANGEDMS-14 avisa a Gobierno de Datos que llegó un reporte a su colaesta misma épica

7. Datos

Cada colección tiene un solo dueño, el único que escribe en ella.

ColecciónDueñoQué guardaEsta épica
ai_jobsMS-15Cada trabajo de IA con su entrada, su resultado y su confianza.escribe
productsMS-02La familia del producto con sus variantes, valores, imágenes (URL), clasificaciones, estado, tareas abiertas y rechazos.lee
tasksMS-02Todo el trabajo asignado: visto bueno, corrección, Gobierno de Datos, foto, secciones, QA, revisión del cambio y repoblamiento.lee
validation_resultsMS-06El resultado de cada evaluación: lista negra, coincidencias con su confianza y score.lee

8. Historias que cubre

HistoriaPrioridadCómo la cubre
FT-IA-06·H1 · Reportarlo en lenguaje naturalP1pasos 1, 2, 3, 4, 5, 6, 7, 8, 9, 10; API-15-009, API-02-312
FT-IA-06·H2 · Decir en qué paso estoy y qué error veoP1flujo «Error en un paso del alta»
FT-IA-06·H3 · Que el asistente me diga por qué mi producto no avanza, usando el estatus y…P2flujo «¿Por qué no avanza mi producto?»; API-06-004, API-02-302
FT-IA-06·H4 · Saber si el asistente es una iniciativa transversalP3API-15-009. Fuera: Lo decide PEN-48; mientras, aplica D-IA-06-1: el PIM expone el asistente como API y no construye un chat aparte.

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-06-1. El PIM no construye un chat por pantalla: expone el asistente como una API (API-15-009) con el contexto del producto y del paso. Si existe una iniciativa transversal de asistentes, su asistente usa esta misma API y el PIM sólo pone los datos y recibe los reportes. Por qué: No construir dos asistentes y que cualquier canal reporte igual. Se apoya en PEN-48, ADR-12.
  • D-IA-06-2. El reporte lo confirma el seller y lo registra MS-02 como tarea de Gobierno de Datos en la cola «Reportes de sellers», ligada al producto y al paso; Gobierno de Datos lo resuelve o lo manda al dueño del dato (FT-PRD-05). El asistente no escribe en el producto ni abre tareas por su cuenta. Por qué: Con coincidencia el seller no modifica el SKU existente: el reporte es su vía para pedir la corrección, y la IA propone mientras la persona confirma. Se apoya en RF-ENR-15, RN-MAT-18.
  • D-IA-06-3. Lo que el asistente explica sale del estatus que ve el seller y de los motivos de MS-02, y de la calificación de MS-06; si no hay dato, lo dice. Un producto que no alcanza la calificación se explica como «por completar», no como rechazo. Por qué: El asistente no puede contradecir lo que muestra el portal ni inventar motivos. Se apoya en RN-CAL-06, FT-RAC-05.
  • D-IA-06-4. La conversación se guarda en ai_jobs con el seller y el producto, para saber qué se le dijo; el asistente rechaza y no guarda datos de clientes ni de pago si aparecen en el mensaje. Por qué: Trazabilidad de lo que respondió la IA sin guardar datos que el PIM no debe tener. Se apoya en ADR-12.

Qué falta decidir

IDQué falta
DUD-35Modelo y contrato del asistente con el equipo de IA.
PD-02La fase del alta TO-BE de sellers, de la que depende cuándo se abre el asistente.

También siguen abiertos: PEN-48, Si el asistente es una iniciativa transversal para todas las áreas o lo construye el PIM.

Fuentes

  1. [D] trazabilidad/features/FT-IA-06-asistente-conversacional-reporte-errores.md: la ficha de la épica, con sus historias, reglas y bloqueos.
  2. [D] ADR-12 · Un solo sistema: backend compartido y una sola base (sección 3.4).
  3. [D] docs/arquitectura/por-epica/base/: piezas, colecciones, eventos y el hilo de punta a punta.
  4. [D] docs/arquitectura/omega-a-pim-headless/contratos-api.md: convenciones y endpoints de partida.
  5. [D] docs/arquitectura/maquina-de-estados-to-be/propuesta-maquina-de-estados.md §7: estados, tareas y canales.
  6. [I] Las decisiones de la sección 9 son del TL sobre esas fuentes.