← Arquitectura por épica

FT-PRD-05 · Edición y aprobación por campo según el dueño del dato

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-PRD-05: 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-PRD-05.json, generada con generar.py; la ficha de la épica es trazabilidad/features/FT-PRD-05-edicion-aprobacion-por-campo.md.

En 30 segundos

Cuando alguien cambia un producto que ya está publicado, esta épica decide qué pasa con cada campo según quién es su dueño. Si quien cambia es el dueño, como el comprador con el envase, se aplica y se republica al momento. Si no, el dueño revisa el cambio mientras la tienda sigue mostrando lo publicado; al aprobarse, sólo se republican los canales afectados. También cubre los cambios de sellers, las variantes nuevas, el repoblamiento y la inactivación mientras se corrige.

  • Módulo dueño: MS-02 Producto. También participan: MS-15 IA y enriquecimiento, MS-14 Avisos y ayuda, MS-08 Adaptadores de salida, MS-05 Auditoría.
  • Etapa 9 · Modificación. Recibe «PE-9 · Publicado por canal» y entrega «PE-10 · Cambio aprobado».
  • APIs: construye 2 y usa 16 que construyen otras épicas.
  • Eventos: publica 6 y consume 4.

1. Dónde encaja

Recibe

DeQué
PE-9 · Publicado por canalEl producto publicado en sus canales: todo cambio parte de la versión que ya está en la tienda.
FT-FLU-01 · Motor de estados configurable con dos carreteras y reglas…La matriz rol × acción × tarea, el dueño de cada grupo de campos y la ruta de revisión de cada tipo de cambio.
FT-USR-02 · Matriz de roles y permisos por módulo, acción, negocio y…Los roles, áreas y negocios de quien cambia, que da el directorio de MS-13.
FT-IA-06 · Asistente conversacional para que el seller reporte erroresEl reporte confirmado por el seller, ligado al producto y al paso, para que el dueño del dato lo corrija.

Entrega

AQué
PE-10 · Cambio aprobadoEl cambio aprobado: el producto vuelve a Aprobado con una versión nueva y sus canales afectados pasan de Publicado a Enviado.
FT-PRD-02 · Creación de SKU con SAPLa variante nueva o el dato de SAP que cambió, para pedirlo a SAP con SAP_CREATION_REQUESTED de tipo MODIFY.
FT-ACT-06 · Recepción del trabajo de Foro y control de edición…La solicitud de cambio que revisa el dueño del dato (API-02-310), con la que el estudio pide cambiar la plantilla.

Cambios de estado que hace

TransiciónDe → aCuándo
T09Aprobado → En modificaciónAlguien cambia un producto aprobado.
T10En modificación → AprobadoEl cambio se aplica o se descarta.
C06Publicado → Enviado (por canal)Se aprueba un cambio.

Tareas que abre o cierra: Revisión del cambio, Repoblamiento, Corrección.

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

Qué puede hacer quien llama
Revisar valores en el momento
y 5 más

PUBLICATION_REQUESTED
TASK_CHANGED
y 1 más

TASK_CHANGED
REJECTION_ADDED

Revisar la calidad con IA

PUBLICATION_REQUESTED

Manda el motivo a quien pidió el camb…

bitácora

Compras

Áreas con sección

Seller

Gobierno de Datos

Repoblamiento

Entrada Única · Vendor Center

BFF del portal

★ MS-02 Producto

MS-15 IA y enriquecimiento

MS-14 Avisos y ayuda

MS-08 Adaptadores de salida

MS-05 Auditoría

Base pim

Eventos

Servicio de correo

Contexto de FT-PRD-05

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.

Base·pimMS-14 Avisos y ayudaEventosMS-02 ProductoEntrada Única · Vendor CenterBase·pimMS-14 Avisos y ayudaEventosMS-02 ProductoEntrada Única · Vendor CenterComprasBFFÁreas con sección1. Cambia envase y peso de un producto publicado2. Pregunta cómo puede cambiar cada grupo de camposGET /api/v2/workflow/capabilities?productIds=3. Pide el plan del envase, del que es dueñoPOST /api/v2/products/{id}/values/plans4. Pide el plan de la solicitud para el pesoPOST /api/v2/products/{id}/change-requests/plans5. Confirma los dos planesPOST /api/v2/product-plans/{planId}/apply6. Aplica el envase y lo republica al momentoPUBLICATION_REQUESTED7. Pasa a En modificación y avisa la revisión a LogísticaTASK_CHANGED8. Entrega la tarea para avisar a LogísticaTASK_CHANGED9. Logística compara lo publicado con lo propuesto10. Pide la solicitud lado a lado con lo publicadoGET /api/v2/products/{id}/change-requests11. Pide el plan para aprobar el cambioPOST /api/v2/tasks/plans12. Confirma la aprobaciónPOST /api/v2/product-plans/{planId}/apply13. Aplica el peso, guarda la versión y vuelve a Aprobado14. Pide republicar sólo los canales afectadosPUBLICATION_REQUESTEDComprasBFFÁreas con sección
Flujo principal de FT-PRD-05
Los pasos en texto
PasoDeAQué haceAPI o evento
1ComprasEntrada Única · Vendor CenterCambia envase y peso de un producto publicado—
2Entrada Única · Vendor CenterMS-02 Producto (por el BFF)Pregunta cómo puede cambiar cada grupo de camposAPI-02-027
3Entrada Única · Vendor CenterMS-02 Producto (por el BFF)Pide el plan del envase, del que es dueñoAPI-02-012
4Entrada Única · Vendor CenterMS-02 Producto (por el BFF)Pide el plan de la solicitud para el pesoAPI-02-310
5Entrada Única · Vendor CenterMS-02 Producto (por el BFF)Confirma los dos planesAPI-02-057
6MS-02 ProductoEventosAplica el envase y lo republica al momentocatalog.product.publication/PUBLICATION_REQUESTED
7MS-02 ProductoEventosPasa a En modificación y avisa la revisión a Logísticacatalog.product.changed/TASK_CHANGED
8EventosMS-14 Avisos y ayudaEntrega la tarea para avisar a Logísticacatalog.product.changed/TASK_CHANGED
9Áreas con secciónEntrada Única · Vendor CenterLogística compara lo publicado con lo propuesto—
10Entrada Única · Vendor CenterMS-02 Producto (por el BFF)Pide la solicitud lado a lado con lo publicadoAPI-02-309
11Entrada Única · Vendor CenterMS-02 Producto (por el BFF)Pide el plan para aprobar el cambioAPI-02-035
12Entrada Única · Vendor CenterMS-02 Producto (por el BFF)Confirma la aprobaciónAPI-02-057
13MS-02 ProductoBase pimAplica el peso, guarda la versión y vuelve a Aprobado—
14MS-02 ProductoEventosPide republicar sólo los canales afectadoscatalog.product.publication/PUBLICATION_REQUESTED

3.1 Un seller cambia su producto publicado: revisión con IA sin detener la venta

MS-08 Adaptadores de salidaEventosMS-15 IA y enriquecimientoBase·pimMS-02 ProductoEntrada Única · Vendor CenterMS-08 Adaptadores de salidaEventosMS-15 IA y enriquecimientoBase·pimMS-02 ProductoEntrada Única · Vendor CenterSellerBFF1. Cambia la descripción de su producto publicado2. Pide el plan de la solicitud de cambioPOST /api/v2/products/{id}/change-requests/plans3. Confirma el planPOST /api/v2/product-plans/{planId}/apply4. Guarda el cambio aparte y pasa a En modificación5. Pide revisar el cambio con IAPOST /api/v2/ai/quality-reviews6. La IA lo aprueba: aplica y vuelve a Aprobado7. Pide republicar los canales afectadosPUBLICATION_REQUESTED8. Entrega la versión nueva al adaptador de salidaPUBLICATION_REQUESTEDSellerBFF
Un seller cambia su producto publicado: revisión con IA sin detener la venta

3.2 Si el revisor rechaza el cambio

Servicio de correoMS-14 Avisos y ayudaEventosBase·pimMS-02 ProductoEntrada Única · Vendor CenterServicio de correoMS-14 Avisos y ayudaEventosBase·pimMS-02 ProductoEntrada Única · Vendor CenterÁreas con secciónBFF1. Logística rechaza el peso con su motivo2. Pide el plan del rechazo por campoPOST /api/v2/tasks/plans3. Confirma el rechazoPOST /api/v2/product-plans/{planId}/apply4. Abre Corrección, lo publicado no cambia5. Avisa el rechazo con su motivoREJECTION_ADDED6. Entrega el rechazo para avisarREJECTION_ADDED7. Manda el motivo a quien pidió el cambio8. Si vence la corrección, descarta el cambio y vuelve a AprobadoÁreas con secciónBFF
Si el revisor rechaza el cambio

3.3 Inactivar y repoblar un producto publicado

EventosBase·pimMS-02 ProductoEntrada Única · Vendor CenterEventosBase·pimMS-02 ProductoEntrada Única · Vendor CenterGobierno de DatosBFFRepoblamiento1. Inactiva un producto con un dato equivocado2. Pide el plan INACTIVATEPOST /api/v2/workflow/actions/plans3. Confirma la inactivaciónPOST /api/v2/product-plans/{planId}/apply4. Pasa a En modificación y abre Repoblamiento5. Pide retirarlo de todos sus canalesPUBLICATION_REQUESTED6. Corrige el dato equivocado7. Pide el plan de los valores corregidosPOST /api/v2/products/{id}/values/plans8. Pide el plan REACTIVATEPOST /api/v2/workflow/actions/plans9. Confirma la reactivaciónPOST /api/v2/product-plans/{planId}/apply10. Cierra Repoblamiento y vuelve a Aprobado11. Pide republicar en los mismos canalesPUBLICATION_REQUESTEDGobierno de DatosBFFRepoblamiento
Inactivar y repoblar un producto publicado

4. Si algo sale mal

  • Dos personas proponen cambios al mismo campo. La segunda solicitud se junta con la primera en la misma Revisión del cambio y el revisor ve las dos; quien confirma sobre una versión vieja del mismo grupo de campos recibe 409 VERSION_CONFLICT y vuelve a ver lo vigente.
  • La IA no responde o duda al revisar un cambio. El cambio no se aplica sin dato: la revisión pasa a QA manual con el motivo «Sin dato» y la tienda conserva lo publicado.
  • Alguien intenta cambiar el EAN o el SKU. La solicitud responde 422 BUSINESS_ERROR: el EAN va por la liberación de EAN (FT-PRD-03) o por Gobierno de Datos, y el SKU no cambia nunca.
  • El cambio aprobado toca un dato que usa SAP. Además de republicar, se pide a SAP con SAP_CREATION_REQUESTED de tipo MODIFY. Si SAP lo rechaza, se abre Gobierno de Datos con el mensaje de SAP y el proveedor ve «En proceso Liverpool».
  • Un seller intenta cambiar el contenido de un producto ajeno. Responde 403: sólo puede agregar variantes. La pantalla ya lo muestra, porque la matriz deja ese grupo de campos en sólo lectura para él.

5. APIs

Las que construye esta épica (2)

POST /api/v2/products/{id}/change-requests/plans · Pedir un cambio que revisa el dueño del dato
CampoValor
APIAPI-02-310 · MS-02 Producto
Para quéPrepara una solicitud de cambio sobre un producto que ya salió de Borrador cuando quien cambia no es el dueño del dato, o cuando el cambio a un producto aprobado debe revisarse (contenido del seller, dato maestro o variante nueva). Dice quién revisa cada campo y que la tienda conserva lo publicado; al confirmar, el producto aprobado pasa a En modificación con una Revisión del cambio.
En esta épicaPedir un cambio que revisa el dueño del dato, sin tocar lo publicado
Quién la llamaBFF del portal, Gateway de terceros /partner/v1
PermisoCualquier rol con acceso al producto que la matriz deje proponer cambios sobre ese grupo de campos; el seller que no es dueño del contenido sólo puede proponer variantes nuevas
CabecerasAuthorization, X-Request-Id, Idempotency-Key, If-Match
Parámetrosid = PRD-0004812
También la usanFT-ACT-06, FT-RAC-04

Request

{
  "version": 12,
  "comment": "El proveedor actualizó la ficha técnica del empaque",
  "changes": [
    {
      "attribute": "PESO_EMPAQUE",
      "value": "1.4",
      "unit": "kg"
    }
  ]
}

Response · 200

{
  "success": true,
  "data": {
    "planId": "pln-5d21f0",
    "expiresAt": "2026-10-18T15:14:05Z",
    "productId": "PRD-0004812",
    "from": "APROBADO",
    "to": "EN_MODIFICACION",
    "fields": [
      {
        "attribute": "PESO_EMPAQUE",
        "published": "1.2 kg",
        "proposed": "1.4 kg",
        "reviewer": {
          "kind": "AREA",
          "area": "LOGISTICA"
        },
        "route": "OWNER_REVIEW"
      }
    ],
    "opensTasks": [
      "REVISION_DEL_CAMBIO"
    ],
    "storeKeepsVersion": 12,
    "needsSap": false,
    "applyUrl": "/api/v2/product-plans/pln-5d21f0/apply"
  }
}

Errores

HTTPCódigoCuándo
422BUSINESS_ERRORSe pide cambiar el EAN o el SKU: el EAN va por la liberación de EAN y el SKU no cambia nunca
409NOT_EDITABLE_IN_STATUSEl producto está en Borrador (se edita directo), en Foro (sólo se consulta) o Cancelado
403AUTHORIZATION_ERRORUn seller que no es dueño del contenido intenta cambiar algo distinto de agregar variantes
422VALIDATION_ERRORUn valor no pasa la vista efectiva de su plantilla y negocio
409VERSION_CONFLICTCambió el mismo grupo de campos desde que se leyó
GET /api/v2/products/{id}/change-requests · Solicitudes de cambio de un producto
CampoValor
APIAPI-02-309 · MS-02 Producto
Para quéMuestra las solicitudes de cambio abiertas o recientes de un producto, campo por campo: lo publicado contra lo propuesto, quién lo pidió, quién lo revisa, cómo terminó y qué canales se republicarán al aprobarlo. Mientras se revisa, la tienda sigue con lo publicado.
En esta épicaVer las solicitudes de cambio lado a lado con lo publicado
Quién la llamaBFF del portal, Gateway de terceros /partner/v1
PermisoQuien pidió el cambio, el revisor y las áreas con lectura; el seller sólo ve las de sus productos
CabecerasAuthorization, X-Request-Id
Parámetrosid = PRD-0004812, state = OPEN
También la usanFT-RAC-04

Request

null

Response · 200

{
  "success": true,
  "data": {
    "productId": "PRD-0004812",
    "status": "EN_MODIFICACION",
    "publishedVersion": 12,
    "items": [
      {
        "changeId": "chg-7a10",
        "taskId": "tsk-52108",
        "kind": "VALUES",
        "requestedBy": {
          "area": "COMPRAS-HOGAR",
          "role": "COMPRAS"
        },
        "requestedAt": "2026-10-18T15:04:07Z",
        "reviewer": {
          "kind": "AREA",
          "area": "LOGISTICA"
        },
        "state": "IN_REVIEW",
        "fields": [
          {
            "attribute": "PESO_EMPAQUE",
            "label": "Peso del empaque",
            "published": "1.2 kg",
            "proposed": "1.4 kg"
          }
        ],
        "republishChannels": [
          "TIENDA",
          "OMS"
        ]
      }
    ]
  }
}

Errores

HTTPCódigoCuándo
404NOT_FOUNDEl producto no existe o no es visible para quien llama

Las que usa y construye otra épica (16)

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-027GET /api/v2/workflow/capabilities?productIds=Saber si cada grupo de campos se cambia directo, con revisión o es de sólo lecturaFT-FLU-01 · Motor de estados configurable con dos carreteras y reglas…
API-02-012POST /api/v2/products/{id}/values/plansAplicar lo que el dueño cambia directo (lo construye FT-RAC-01)FT-RAC-01 · Motor de validación en línea y candados de datos…
API-02-035POST /api/v2/tasks/plansAprobar o rechazar la Revisión del cambio con motivo por campoFT-FLU-01 · Motor de estados configurable con dos carreteras y reglas…
API-02-057POST /api/v2/product-plans/{planId}/applyConfirmar los planesFT-FLU-01 · Motor de estados configurable con dos carreteras y reglas…
API-02-028POST /api/v2/workflow/actions/plansVista previa de INACTIVATE, REACTIVATE y REQUEST_REPOPULATIONFT-FLU-01 · Motor de estados configurable con dos carreteras y reglas…
API-15-005POST /api/v2/ai/quality-reviewsRevisar con IA el cambio puntual de un seller o proveedorFT-IA-05 · Enriquecimiento continuo después de crear el SKU y después…
API-02-029GET /api/v2/workflow/comments?productIds=Motivos del rechazo de un cambio, por campoFT-PRD-04 · Propuesta del proveedor de Mercaderías
API-02-030GET /api/v2/workflow/config/{type}Leer FIELD_OWNERS y CHANGE_ROUTESFT-FLU-01 · Motor de estados configurable con dos carreteras y reglas…
API-02-031POST /api/v2/workflow/config/{type}/plansCambiar el dueño de un grupo de campos sin desplegar códigoFT-FLU-01 · Motor de estados configurable con dos carreteras y reglas…
API-02-006POST /api/v2/products/guided/plansAlta de la variante de un seller sobre un genérico ajeno, partiendo de su ficha (lo construye FT-PRD-07)FT-PRD-07 · Captura guiada por pasos con los mínimos primero
API-02-045GET /api/v2/product-imports/profiles/{p}/templateDescargar la plantilla de modificación o de variantes con la columna índice (lo construye FT-FLU-04)FT-FLU-04 · Carga masiva de productos por archivo
API-02-046POST /api/v2/product-importsValidar la plantilla de modificación renglón por renglónFT-FLU-04 · Carga masiva de productos por archivo
API-02-047POST /api/v2/product-imports/{id}/applyConfirmar la carga: cada renglón se vuelve una solicitud de cambioFT-FLU-04 · Carga masiva de productos por archivo
API-BFF-201GET /bff/v1/proposals/{productId}La ficha de la propuesta que compone el BFF (lo construye FT-PRD-09)FT-PRD-09 · Contrato de propuestas con Entrada Única
API-02-001POST /api/v2/products/searchLa lista de resultados para ir al producto anterior y al siguienteFT-PRD-01 · Modelo canónico de producto
API-05-001GET /api/v2/audit/entities/{entityType}/{entityId}/eventsHistorial de quién cambió cada campo y si se aprobóFT-ARQ-02 · Bitácora inmutable y versionado de producto, plantilla y…

6. Eventos

Publica

EventoCuándoQuién lo consume
catalog.product.changed/STATUS_CHANGEDEl producto pasa a En modificación (T09) o vuelve a Aprobado (T10)FT-ACT-05, FT-ARQ-02, FT-CAT-05, FT-FLU-01, FT-IA-04, FT-PRD-02, FT-PRD-04, FT-PRD-06, FT-PRD-10, FT-RAC-03, FT-RAC-05, FT-RAC-06
catalog.product.changed/TASK_CHANGEDSe abre, se aprueba o se rechaza una Revisión del cambio o un RepoblamientoFT-ACT-05, FT-ACT-06, FT-ARQ-02, FT-CAT-06, FT-FLU-01, FT-IA-06, FT-PRD-02, FT-PRD-06, FT-PRD-07, FT-PRD-08, FT-RAC-02, FT-RAC-03, FT-RAC-04, FT-RAC-05, FT-RAC-06
catalog.product.changed/REJECTION_ADDEDEl revisor rechaza un cambio con motivo por campoFT-INT-07, FT-PRD-04, FT-PRD-10, FT-RAC-01, FT-RAC-03, FT-RAC-05, FT-RAC-06
catalog.product.changed/PRODUCT_UPDATEDSe aplica un cambio, con el antes y el después de cada campoFT-ACT-05, FT-ARQ-02, FT-IA-01, FT-PLT-07, FT-RAC-06
catalog.product.publication/PUBLICATION_REQUESTEDSe aprueba un cambio (C06), se inactiva (retiro) o se reactiva (republicación)FT-CAT-05, FT-CAT-06, FT-INT-01, FT-INT-02, FT-INT-05, FT-INT-07, FT-PLT-08, FT-RAC-03
catalog.product.publication/SAP_CREATION_REQUESTEDEl cambio aprobado es una variante nueva o toca un dato de SAP (tipo MODIFY)FT-PRD-02

Consume

EventoPara quéQuién lo publica
catalog.product.publication/PUBLICATION_REQUESTEDMS-08 arma y manda la versión nueva, el retiro o la republicación a cada canal afectadoesta misma épica
catalog.product.changed/TASK_CHANGEDMS-14 avisa al revisor que tiene un cambio por revisaresta misma épica
catalog.product.changed/REJECTION_ADDEDMS-14 manda el motivo a quien pidió el cambioesta misma épica
catalog.product.changed/PRODUCT_UPDATEDMS-05 guarda quién cambió cada campo, con el antes y el despuésesta misma épica

7. Datos

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

ColecciónDueñoQué guardaEsta épica
productsMS-02La familia del producto con sus variantes, valores, imágenes (URL), clasificaciones, estado, tareas abiertas y rechazos.escribe
tasksMS-02Todo el trabajo asignado: visto bueno, corrección, Gobierno de Datos, foto, secciones, QA, revisión del cambio y repoblamiento.escribe
product_versionsMS-02Foto numerada del producto en cada versión.escribe
product_delivery_statusMS-02El estado de publicación por producto y canal: Pendiente, Enviado, Publicado, Error o Retirado.escribe
product_receiptsMS-02El recibo de cada escritura confirmada en el producto (antes operation_receipts).escribe
product_outboxMS-02Los cambios del producto que esperan salir como evento (antes outbox).escribe
product_reference_tablesMS-02Configuración del motor de estados y del matching: transiciones, estados externos y pesos.lee
product_versionsMS-02Foto numerada del producto en cada versión.lee
productsMS-02La familia del producto con sus variantes, valores, imágenes (URL), clasificaciones, estado, tareas abiertas y rechazos.lee

8. Historias que cubre

HistoriaPrioridadCómo la cubre
FT-PRD-05·H1 · El comprador corrige lo suyoP1pasos 1, 3, 4, 5, 6, 7, 13; flujo «Si el revisor rechaza el cambio»; API-02-310
FT-PRD-05·H2 · EAN protegidoP1pasos 2; API-02-027, API-02-310
FT-PRD-05·H3 · Rechazo por atributoP2flujo «Si el revisor rechaza el cambio»; API-02-035, API-02-029
FT-PRD-05·H4 · Matriz configurableP3API-02-030, API-02-031
FT-PRD-05·H5 · Dos áreas a la vezP2API-02-012, API-02-057
FT-PRD-05·H6 · Ficha del producto en pestañasP2API-BFF-201, API-02-001. Fuera: La ficha en pestañas con anterior y siguiente es diseño de pantalla: la compone el BFF de la propuesta (FT-PRD-09) con la ficha y la búsqueda de FT-PRD-01. Esta épica sólo garantiza que cada grupo de campos diga si se edita directo, con revisión o es de sólo lectura.
FT-PRD-05·H7 · Dato puntual: sólo vuelve a QAP1flujo «Un seller cambia su producto publicado: revisión con IA sin detener la venta»; API-15-005
FT-PRD-05·H8 · Dato maestro o variante: regresa a ComprasP1API-02-310, API-02-030
FT-PRD-05·H9 · El seller sólo cambia lo suyoP1flujo «Un seller cambia su producto publicado: revisión con IA sin detener la venta»; API-02-027
FT-PRD-05·H10 · Modificación masiva por plantillaP2API-02-046, API-02-047
FT-PRD-05·H11 · Agregar una variante a un genérico ajenoP2API-02-006, API-02-310
FT-PRD-05·H12 · Agregar variantes en masa a un papá existenteP2API-02-045, API-02-046, API-02-047
FT-PRD-05·H13 · Revisar el cambio sin detener la ventaP2pasos 6, 7, 8, 13, 14; flujo «Un seller cambia su producto publicado: revisión con IA sin detener la venta», «Si el revisor rechaza el cambio»; API-02-309
FT-PRD-05·H14 · Inactivar un producto publicado mientras se corrigeP2flujo «Inactivar y repoblar un producto publicado»; API-02-028

9. Decisiones de esta épica

Las tomó el TL como arquitecto; quedan como [Propuesta] hasta que el equipo de la épica las revise.

  • D-PRD-05-1. Cada grupo de campos tiene un dueño por negocio en la tabla FIELD_OWNERS del motor, con dos modos: directo o con revisión. Si quien cambia es el dueño en modo directo (el envase para Compras), el cambio se aplica con el plan de valores, queda quién y cuándo, y se republica al momento (T09 y T10 en la misma transacción). Si no, se pide con una solicitud de cambio (API-02-310) que revisa el dueño. Por qué: El comprador corrige lo suyo sin ticket y nada de quien no es dueño se aplica sin aprobación. El «archivo de roles» del taller se vuelve una tabla que Gobierno de Producto cambia sin desplegar código. Se apoya en RF-ALT-05, RN-CAL-05, DMS-71, DUD-22.
  • D-PRD-05-2. Lo publicado no se toca mientras se revisa: la propuesta vive en la tarea Revisión del cambio, el producto pasa a En modificación (T09) y la tienda conserva su versión. Al aprobar, se aplica en una transacción con versión nueva, vuelve a Aprobado (T10) y sólo los canales afectados pasan de Publicado a Enviado (C06). Por qué: Así se revisa el cambio sin detener la venta, como pidió Marketplace: se detiene la tarea, no el SKU. Se apoya en S30-RF-09, PD-29.
  • D-PRD-05-3. Quién revisa sale de la tabla CHANGE_ROUTES: un dato puntual del contenido lo revisa la QA con IA; un dato maestro o una variante nueva, Compras en Mercaderías y Suburbia o la calificación en Marketplace. El EAN no se cambia por aquí: va por la liberación de EAN (FT-PRD-03) o por Gobierno de Datos. Por qué: Es la regla del taller: el dato puntual sólo vuelve a la revisión con IA y el dato maestro o la variante regresan a Compras, que cuida lo que va a SAP. Se apoya en S34-RF-07, P-41, DEC-PRD-04.
  • D-PRD-05-4. Si el revisor rechaza, se abre una Corrección para quien pidió el cambio, con el motivo por campo y su destino, y el proveedor ve «Por actualizar». Si la corrección vence, se descarta el cambio, nunca el producto, y vuelve a Aprobado (T10). Por qué: Un producto aprobado no se cancela; rechazar un cambio sólo debe deshacer el cambio. Se apoya en PD-29, P-01.
  • D-PRD-05-5. Una variante nueva sobre un producto aprobado, propia o de un seller sobre un genérico ajeno, entra por la misma solicitud. Al aprobarse, la familia vuelve a Aprobado y la variante lleva su propio estado: pide su SKU con SAP_CREATION_REQUESTED de tipo MODIFY y entra a sus canales cuando esté lista. Las variantes publicadas y los datos del genérico no se tocan, y la variante queda con su seller como dueño. Por qué: Vender un color o una talla nueva sin duplicar el producto ni tocar la ficha ajena; el producto es un documento por familia con estado de familia y de variante. Se apoya en S30-RF-01, DEC-PRD-02.
  • D-PRD-05-6. El seller dueño del contenido puede proponer cambios a todo su producto, que vuelven a la revisión con IA; si el producto es de otro seller o de Liverpool, sólo puede agregar variantes. La modificación masiva usa la carga masiva de FT-FLU-04 con la columna índice del papá o del SKU, y cada renglón se vuelve una solicitud de cambio, sin pedir SKU nuevo. Por qué: «Sólo puedes solicitar en tu catálogo»: nadie cambia fichas ajenas, y la plantilla de modificación no repite el alta. Se apoya en S30-RF-07, PD-02.
  • D-PRD-05-7. Dos áreas pueden trabajar a la vez en un producto: ninguna tarea bloquea la edición (salvo Foro, que lo deja sólo para consulta) y el conflicto de versión se revisa por grupo de campos, así que Publicación edita lo suyo mientras Categoría trabaja en lo suyo. Por qué: Hoy un área le quita la propuesta a la otra; con un dueño por grupo, los cambios de áreas distintas no chocan. Se apoya en RF-INT-08, PD-29.
  • D-PRD-05-8. Inactivar un producto publicado es una acción del motor (INACTIVATE): pasa a En modificación con una tarea de Repoblamiento y pide retirarlo de todos sus canales con la misma operación de retiro de la publicación (FT-CAT-05). Al reactivar (REACTIVATE) vuelve a Aprobado y se republica en los mismos canales, sin SKU nuevo. Por qué: Un producto aprobado no se cancela: se retira de cada canal, como pide el servicio para inactivar mientras se corrige. Se apoya en S34-RF-02, PD-29.

Qué falta decidir

IDQué falta
DUD-22Negocio con Seguridad firma la matriz y el dueño de cada grupo de campos; el motor arranca con el envase en Compras, los datos logísticos en Logística y el EAN en Gobierno de Datos.
PD-14Si el dueño se fija por campo o por grupo de campos; aquí es por grupo, como en STEP y en el diseño de plantillas.
P-29Qué datos maestros edita Compras directo y cuáles revisa Gobierno de Datos.
PD-02Si los sellers entran en la primera salida: las historias de Marketplace de esta épica dependen de eso.

También siguen abiertos: PEN-167, La precedencia de lo que manda el proveedor frente a lo que propone la IA o Foro en un producto publicado.

Fuentes

  1. [D] trazabilidad/features/FT-PRD-05-edicion-aprobacion-por-campo.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.