← Arquitectura por épica

FT-PRD-07 · Captura guiada por pasos con los mínimos primero

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-07: 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-07.json, generada con generar.py; la ficha de la épica es trazabilidad/features/FT-PRD-07-captura-guiada-por-pasos.md.

En 30 segundos

Capturar un producto hoy mezcla lo opcional con lo obligatorio y parte de la plantilla completa. Esta épica divide la captura en cinco pasos, cada uno con un área dueña: el primero pide sólo los obligatorios del negocio, los opcionales se saltan y se retoman, el avance se ve por sección y todo se guarda en la propuesta, nunca en la pantalla. Al final el proveedor o seller envía y la propuesta pasa a la Validación automática.

  • Módulo dueño: MS-02 Producto. También participan: MS-01 Catálogo, MS-11 Activos digitales, MS-14 Avisos y ayuda.
  • Etapa 3 · Captura. Recibe «PE-3 · Plantilla asignada», «PE-6 · SKU asignado» y entrega «PE-4 · Propuesta enviada», «PE-8 · Aprobado».
  • APIs: construye 5 y usa 12 que construyen otras épicas.
  • Eventos: publica 4 y consume 3.

1. Dónde encaja

Recibe

DeQué
PE-3 · Plantilla asignadaLa propuesta en Borrador con plantilla y negocio asignados: la vista efectiva dice qué pedir y qué es obligatorio.
FT-PLT-06 · Configuración de atributos por plantilla y por negocio…La sección, el orden y la obligatoriedad por negocio de cada atributo de la plantilla.
FT-RAC-01 · Motor de validación en línea y candados de datos…La validación en el momento y los candados que dicen qué falta en cada paso.
PE-6 · SKU asignadoEl producto con SKU y las tareas Sección con dueño abiertas, para que cada área llene la suya.
FT-PRD-06 · Bandeja de pendientes y depuración de borradores…El borrador que la persona retoma desde su bandeja de pendientes, abierto en el paso que le falta.
FT-PLT-10 · Fachada v1 compatible con P360 para Entrada Única y ForoEl formulario de captura de la plantilla (API-BFF-101): secciones, listas chicas y habilitadores, que la pantalla de la propuesta junta con los valores.
FT-ACT-03 · Imágenes del seller por URL con validación y corrección…La revisión que pinta en verde el bloque de imágenes cuando el seller completa el mínimo de su negocio, desde que elige la plantilla.
FT-IA-01 · Prellenado con IA y validación obligatoria del usuarioLa ficha con los valores sugeridos ya confirmados o corregidos y su procedencia, para seguir la captura guiada.
FT-IA-03 · Enriquecimiento de atributos opcionales con IA y política…Los valores del bloque opcional confirmados por el seller, para seguir la captura.
FT-PLT-03 · Listas de valores y modelo canónico con equivalencias por…La solicitud de valor nuevo (API-01-104) y el aviso LOV_VALUE_CHANGED que dice cuándo se aprobó, para que la captura deje el campo como «valor solicitado» y lo llene al aprobarse.
FT-PRD-09 · Contrato de propuestas con Entrada ÚnicaLa ruta del BFF de la pantalla de propuesta (API-BFF-201), sobre la que trabaja la captura guiada.

Entrega

AQué
FT-RAC-01 · Motor de validación en línea y candados de datos…La propuesta capturada y enviada (envío confirmado) para la Validación automática.
PE-4 · Propuesta enviadaLa propuesta En revisión; la Validación automática de FT-RAC-01 la deja lista para el visto bueno.
FT-FLU-02 · Alta individual de MarketplaceLa captura de Marketplace: el paso del alta individual donde el seller llena lo que pide su negocio.
PE-8 · AprobadoLas secciones con dueño llenas y sus tareas cerradas, para que no bloqueen el Aprobado.

Cambios de estado que hace

TransiciónDe → aCuándo
T03Borrador → En revisiónEnvía con los obligatorios completos.

Tareas que abre o cierra: Sección con dueño.

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

Nuevo PIM · un solo sistema

Pantallas y sistemas

Personas

Pantalla de propuesta

Vista efectiva de una plantilla por n…

Candados: qué le falta al producto
Revisar valores en el momento
y 9 más

Pedir permiso para subir un archivo
Avisar que terminó la carga

ASSET_VALIDATED

ASSET_VALIDATED

TASK_CHANGED

TASK_CHANGED

Proveedor

Seller

Áreas con sección

Entrada Única · Vendor Center

BFF del portal

MS-01 Catálogo

★ MS-02 Producto

MS-11 Activos digitales

MS-14 Avisos y ayuda

Base pim

Eventos

Contexto de FT-PRD-07

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-02 ProductoMS-01 CatálogoEntrada Única · Vendor CenterBase·pimMS-02 ProductoMS-01 CatálogoEntrada Única · Vendor CenterProveedorBFF1. Abre su propuesta en Borrador para capturar2. Pide la pantalla de la propuesta con su vista efectivaGET /bff/v1/proposals/{productId}3. Trae la vista efectiva con secciones y listasGET /api/v2/taxonomies/PRODUCT/nodes/{id}/effective4. Pide los pasos con su avance y área dueñaGET /api/v2/products/{id}/gates5. Captura el paso 1: sólo los obligatorios6. Revisa los valores en el momentoPOST /api/v2/products/{id}/values/plans7. Guarda el paso en la propuestaPOST /api/v2/product-plans/{planId}/apply8. Salta los opcionales y define colores y tallas9. Pide armar las variantes con sus datos logísticosPOST /api/v2/products/guided/plans10. Confirma las variantesPOST /api/v2/product-plans/{planId}/apply11. Guarda las variantes y marca los pasos pendientes12. Envía la propuesta con lo indispensable13. Pide el plan de envío con la lista de faltantesPOST /api/v2/workflow/actions/plans14. Confirma el envío a la Validación automáticaPOST /api/v2/product-plans/{planId}/applyProveedorBFF
Flujo principal de FT-PRD-07
Los pasos en texto
PasoDeAQué haceAPI o evento
1ProveedorEntrada Única · Vendor CenterAbre su propuesta en Borrador para capturar—
2Entrada Única · Vendor CenterBFF del portalPide la pantalla de la propuesta con su vista efectivaAPI-BFF-201
3BFF del portalMS-01 CatálogoTrae la vista efectiva con secciones y listasAPI-01-028
4Entrada Única · Vendor CenterMS-02 Producto (por el BFF)Pide los pasos con su avance y área dueñaAPI-02-101
5ProveedorEntrada Única · Vendor CenterCaptura el paso 1: sólo los obligatorios—
6Entrada Única · Vendor CenterMS-02 Producto (por el BFF)Revisa los valores en el momentoAPI-02-012
7Entrada Única · Vendor CenterMS-02 Producto (por el BFF)Guarda el paso en la propuestaAPI-02-057
8ProveedorEntrada Única · Vendor CenterSalta los opcionales y define colores y tallas—
9Entrada Única · Vendor CenterMS-02 Producto (por el BFF)Pide armar las variantes con sus datos logísticosAPI-02-006
10Entrada Única · Vendor CenterMS-02 Producto (por el BFF)Confirma las variantesAPI-02-057
11MS-02 ProductoBase pimGuarda las variantes y marca los pasos pendientes—
12ProveedorEntrada Única · Vendor CenterEnvía la propuesta con lo indispensable—
13Entrada Única · Vendor CenterMS-02 Producto (por el BFF)Pide el plan de envío con la lista de faltantesAPI-02-028
14Entrada Única · Vendor CenterMS-02 Producto (por el BFF)Confirma el envío a la Validación automáticaAPI-02-057

3.1 Retomar después: autoguardado y pasos pendientes

MS-02 ProductoEntrada Única · Vendor CenterMS-02 ProductoEntrada Única · Vendor CenterProveedorBFF1. Empieza el paso de atributos y se va a medias2. Abre el autoguardado del pasoPOST /api/v2/products/guided/drafts3. Autoguarda cada cambio, aunque no pase la validaciónPUT /api/v2/products/guided/drafts/{id}4. Regresa otro día a su propuesta5. Busca sus autoguardados de esa propuestaGET /api/v2/products/guided/drafts6. Recupera lo que dejó a mediasGET /api/v2/products/guided/drafts/{id}7. Revisa lo recuperado contra la versión actualPOST /api/v2/products/{id}/values/plans8. Guarda el paso, el autoguardado se borraPOST /api/v2/product-plans/{planId}/applyProveedorBFF
Retomar después: autoguardado y pasos pendientes

3.2 Guía de tallas: tabla o imagen

Base·pimEventosMS-11 Activos digitalesMS-02 ProductoEntrada Única · Vendor CenterBase·pimEventosMS-11 Activos digitalesMS-02 ProductoEntrada Única · Vendor CenterSellerBFF1. Elige crear la tabla de tallas2. Revisa los renglones de talla y medidasPOST /api/v2/products/{id}/values/plans3. Guarda la tabla en la propuestaPOST /api/v2/product-plans/{planId}/apply4. O elige subir la imagen de su tabla5. Pide permiso para subir la imagenPOST /api/v2/assets/uploads6. Avisa que terminó, se valida como guía de tallasPOST /api/v2/assets/{assetId}/complete7. Avisa la imagen validadaASSET_VALIDATED8. Entrega el aviso para ligar la guía al productoASSET_VALIDATED9. Liga la guía de tallas al productoSellerBFF
Guía de tallas: tabla o imagen

3.3 Un área completa su sección

Entrada Única · Vendor CenterMS-14 Avisos y ayudaEventosBase·pimMS-02 ProductoEntrada Única · Vendor CenterMS-14 Avisos y ayudaEventosBase·pimMS-02 ProductoÁreas con secciónBFF1. Con el SKU, abre la tarea de cada sección con dueño2. Avisa la tarea abiertaTASK_CHANGED3. Entrega la tarea para avisar al área dueñaTASK_CHANGED4. Abre su bandeja de secciones por llenar5. Pide sus tareas de secciónGET /api/v2/tasks6. Revisa los valores de su secciónPOST /api/v2/products/{id}/values/plans7. Guarda la secciónPOST /api/v2/product-plans/{planId}/apply8. Cierra su tarea de secciónPOST /api/v2/tasks/plans9. Avisa la tarea cerradaTASK_CHANGEDÁreas con secciónBFF
Un área completa su sección

4. Si algo sale mal

  • El proveedor intenta cerrar un paso con un obligatorio vacío. Puede guardar lo que capturó, pero el paso no se cierra: la pantalla marca con asterisco rojo cada faltante y muestra la lista que devuelve el plan.
  • Se corta la sesión a media captura. Lo tecleado está en el autoguardado del servidor; al volver, la pantalla lo recupera y lo revisa contra la versión actual antes de guardarlo. El portal no guarda nada.
  • Otra persona cambió la propuesta o cambió la plantilla mientras se capturaba. La confirmación responde 409 VERSION_CONFLICT; la pantalla recarga la propuesta, vuelve a revisar lo autoguardado y señala los campos que cambiaron.
  • El proveedor envía y faltan datos de candado. El plan de envío sale bloqueado con la lista de faltantes por sección (por ejemplo, imagen principal o datos logísticos); la propuesta sigue en Borrador.
  • Un área no llena su sección obligatoria. Su tarea sigue abierta y bloquea el Aprobado; MS-14 le recuerda al área dueña y la bandeja de pendientes la muestra con su antigüedad.

5. APIs

Las que construye esta épica (5)

POST /api/v2/products/guided/plans · Armar la familia en la captura guiada
CampoValor
APIAPI-02-006 · MS-02 Producto
Para quéArma la familia de una vez: datos base, ejes de variante (por ejemplo color y talla, hasta 1,000 combinaciones), el EAN y los datos logísticos de cada variante; dice qué variantes va a crear, qué falta para cerrar el paso y qué errores hay por campo, sin escribir nada. Con productId completa la propuesta que ya está en Borrador (captura guiada). Sin productId crea la propuesta y la familia juntas desde cualquier puerta: catalogador interno, renglón de carga masiva (origen BULK) o API de terceros (origen PARTNER_API); con submitOnApply la envía al confirmar, y entonces corre la Validación automática.
En esta épicaArmar la familia: ejes, EAN y datos logísticos de cada variante
Quién la llamaBFF del portal, Gateway de terceros /partner/v1
PermisoENT-E + VAL-E; el proveedor o seller dueño de la propuesta en Borrador, o el tercero con alta de productos
CabecerasAuthorization, X-Request-Id, Idempotency-Key, If-Match
Publicacatalog.product.changed/PRODUCT_CREATED, catalog.product.changed/VARIANT_LINKED, catalog.product.changed/EAN_CHANGED, catalog.product.changed/PRODUCT_UPDATED, catalog.product.changed/STATUS_CHANGED
También la usanFT-ARQ-01, FT-CAT-04, FT-FLU-01, FT-FLU-04, FT-PRD-05, FT-PRD-10, FT-USR-03

Request

{
  "productId": "PRD-0004812",
  "draftId": "drf-20c9",
  "origin": "PORTAL",
  "evaluationId": null,
  "submitOnApply": false,
  "base": {
    "supplierPartNumber": "PL-889"
  },
  "axes": [
    {
      "attributeId": "COLOR",
      "codes": [
        "NEGRO",
        "BLANCO"
      ]
    },
    {
      "attributeId": "TALLA",
      "codes": [
        "CH",
        "M",
        "G"
      ]
    }
  ],
  "variants": [
    {
      "axisValues": {
        "COLOR": "NEGRO",
        "TALLA": "CH"
      },
      "ean": "7501234567916",
      "values": [
        {
          "attributeId": "PESO_NETO",
          "value": "0.18",
          "unit": "kg"
        },
        {
          "attributeId": "ALTO_EMPAQUE",
          "value": "3",
          "unit": "cm"
        }
      ]
    }
  ]
}

Response · 200

{
  "success": true,
  "data": {
    "planId": "pln-5d92e1",
    "expiresAt": "2026-10-18T16:45:00Z",
    "canApply": true,
    "summary": {
      "variantsToCreate": 6,
      "withEan": 1,
      "withoutEan": 5
    },
    "variants": [
      {
        "axisValues": {
          "COLOR": "NEGRO",
          "TALLA": "CH"
        },
        "ean": "7501234567916",
        "fieldErrors": []
      },
      {
        "axisValues": {
          "COLOR": "BLANCO",
          "TALLA": "G"
        },
        "ean": null,
        "fieldErrors": [
          {
            "path": "/variants/5/values/PESO_NETO",
            "code": "REQUIRED",
            "message": "El peso neto es dato logístico obligatorio para pedir el SKU",
            "effect": "BLOCKS_SUBMIT"
          }
        ]
      }
    ],
    "stepComplete": false,
    "applyUrl": "/api/v2/product-plans/pln-5d92e1/apply"
  }
}

Errores

HTTPCódigoCuándo
422VALIDATION_ERRORMás de 1,000 combinaciones, o un eje que la plantilla no marca como eje de variante
409VERSION_CONFLICTCambió la propuesta o la vista efectiva de su plantilla desde que se abrió
409NOT_EDITABLE_IN_STATUSLa propuesta ya no está en Borrador ni en Corrección
GET /api/v2/products/guided/drafts · Mis autoguardados
CampoValor
APIAPI-02-007 · MS-02 Producto
Para quéLista los autoguardados de quien llama: lo que tecleó en un paso y no ha confirmado, por propuesta y paso, con la versión de la propuesta sobre la que se hizo.
En esta épicaBuscar los autoguardados propios de una propuesta
Quién la llamaBFF del portal
PermisoSólo su dueño
CabecerasAuthorization, X-Request-Id
ParámetrosproductId = PRD-0004812

Request

null

Response · 200

{
  "success": true,
  "data": {
    "items": [
      {
        "draftId": "drf-20c9",
        "productId": "PRD-0004812",
        "step": "ATRIBUTOS",
        "baseVersion": 7,
        "version": 3,
        "updatedAt": "2026-10-17T23:10:00Z",
        "expiresAt": "2027-01-15T18:02:00Z"
      }
    ],
    "page": 1,
    "size": 50,
    "total": 1
  }
}

Errores

HTTPCódigoCuándo
403AUTHORIZATION_ERRORSe piden autoguardados de otra persona
POST /api/v2/products/guided/drafts · Abrir un autoguardado
CampoValor
APIAPI-02-008 · MS-02 Producto
Para quéAbre el autoguardado de un paso de una propuesta: guarda lo tecleado aunque todavía no pase la validación, ligado a la versión de la propuesta, para no perderlo si la sesión se corta.
En esta épicaAbrir el autoguardado de un paso
Quién la llamaBFF del portal
PermisoQuien captura la propuesta
CabecerasAuthorization, X-Request-Id, Idempotency-Key
Escribe enproduct_drafts

Request

{
  "productId": "PRD-0004812",
  "step": "ATRIBUTOS",
  "baseVersion": 7,
  "payload": {
    "values": [
      {
        "attributeId": "COMPOSICION",
        "text": "100% algod"
      }
    ]
  }
}

Response · 201

{
  "success": true,
  "data": {
    "draftId": "drf-20c9",
    "version": 1,
    "expiresAt": "2027-01-15T18:02:00Z"
  }
}

Errores

HTTPCódigoCuándo
422BUSINESS_ERRORYa existe un autoguardado de ese paso para esa propuesta (se actualiza con PUT)
422VALIDATION_ERROREl contenido pasa de 2 MiB
GET /api/v2/products/guided/drafts/{id} · Leer un autoguardado
CampoValor
APIAPI-02-009 · MS-02 Producto
Para quéDevuelve lo que quedó a medias en un paso y avisa si la propuesta cambió desde entonces, para revisarlo contra la versión actual antes de guardarlo.
En esta épicaRecuperar un autoguardado
Quién la llamaBFF del portal
PermisoSólo su dueño
CabecerasAuthorization, X-Request-Id
Parámetrosid = drf-20c9

Request

null

Response · 200

{
  "success": true,
  "data": {
    "draftId": "drf-20c9",
    "productId": "PRD-0004812",
    "step": "ATRIBUTOS",
    "baseVersion": 7,
    "currentProductVersion": 8,
    "stale": true,
    "payload": {
      "values": [
        {
          "attributeId": "COMPOSICION",
          "text": "100% algodón"
        },
        {
          "attributeId": "CUIDADOS",
          "text": "Lavar a mano"
        }
      ]
    },
    "version": 3
  }
}

Errores

HTTPCódigoCuándo
404NOT_FOUNDEl autoguardado no existe, venció o es de otra persona
PUT /api/v2/products/guided/drafts/{id} · Autoguardar
CampoValor
APIAPI-02-010 · MS-02 Producto
Para quéReemplaza el contenido del autoguardado con lo último que tecleó el usuario; si el contenido es idéntico no crea versión nueva.
En esta épicaAutoguardar lo último que se tecleó
Quién la llamaBFF del portal
PermisoSólo su dueño
CabecerasAuthorization, X-Request-Id, If-Match
Parámetrosid = drf-20c9
Escribe enproduct_drafts

Request

{
  "payload": {
    "values": [
      {
        "attributeId": "COMPOSICION",
        "text": "100% algodón"
      },
      {
        "attributeId": "CUIDADOS",
        "text": "Lavar a mano"
      }
    ]
  }
}

Response · 200

{
  "success": true,
  "data": {
    "draftId": "drf-20c9",
    "version": 4,
    "payloadSha256": "5c2d81e0",
    "unchanged": false
  }
}

Errores

HTTPCódigoCuándo
409VERSION_CONFLICTSe autoguardó desde otra pestaña con otra versión
422VALIDATION_ERROREl contenido pasa de 2 MiB

Las que usa y construye otra épica (12)

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-BFF-201GET /bff/v1/proposals/{productId}La pantalla de la propuesta con su vista efectiva, listas y permisos, que compone el BFFFT-PRD-09 · Contrato de propuestas con Entrada Única
API-BFF-101GET /bff/v1/catalog/capture-formEl formulario de captura de la plantilla que el BFF junta con la propuestaFT-PLT-10 · Fachada v1 compatible con P360 para Entrada Única y Foro
API-01-028GET /api/v2/taxonomies/PRODUCT/nodes/{id}/effectiveLa vista efectiva con secciones, orden y obligatoriedad por negocioFT-PLT-06 · Configuración de atributos por plantilla y por negocio…
API-02-101GET /api/v2/products/{id}/gatesLos candados y el avance por sección, con su área dueñaFT-RAC-01 · Motor de validación en línea y candados de datos…
API-02-012POST /api/v2/products/{id}/values/plansRevisar los valores de un paso en el momentoFT-RAC-01 · Motor de validación en línea y candados de datos…
API-02-057POST /api/v2/product-plans/{planId}/applyGuardar un paso, las variantes o el envíoFT-FLU-01 · Motor de estados configurable con dos carreteras y reglas…
API-02-028POST /api/v2/workflow/actions/plansPedir el plan de envío con la lista de faltantesFT-FLU-01 · Motor de estados configurable con dos carreteras y reglas…
API-11-004POST /api/v2/assets/uploadsPedir permiso para subir la imagen de la guía de tallasFT-ACT-02 · Registro, congelado y publicación de URLs de activos
API-11-005POST /api/v2/assets/{assetId}/completeValidar la imagen como guía de tallas y ligarla al productoFT-ACT-02 · Registro, congelado y publicación de URLs de activos
API-02-032GET /api/v2/tasksLa bandeja de tareas de sección del áreaFT-PRD-06 · Bandeja de pendientes y depuración de borradores…
API-02-035POST /api/v2/tasks/plansCerrar la tarea de secciónFT-FLU-01 · Motor de estados configurable con dos carreteras y reglas…
API-02-030GET /api/v2/workflow/config/{type}Leer qué área es dueña de cada grupo de campos (tabla FIELD_OWNERS del motor)FT-FLU-01 · Motor de estados configurable con dos carreteras y reglas…

6. Eventos

Publica

EventoCuándoQuién lo consume
catalog.product.changed/PRODUCT_UPDATEDSe guarda un paso o una secciónFT-ACT-05, FT-ARQ-02, FT-IA-01, FT-PLT-07, FT-PRD-05, FT-RAC-06
catalog.product.changed/VARIANT_LINKEDSe confirman las variantes armadas con los ejesFT-ACT-04
catalog.product.changed/STATUS_CHANGEDEl proveedor o seller envía y la propuesta pasa a En revisiónFT-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 o se cierra una tarea Sección con dueñoFT-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-08, FT-RAC-02, FT-RAC-03, FT-RAC-04, FT-RAC-05, FT-RAC-06

Consume

EventoPara quéQuién lo publica
catalog.asset.changed/ASSET_VALIDATEDMS-02 liga al producto la imagen de la guía de tallasFT-ACT-01, FT-ACT-02, FT-ACT-03
catalog.product.changed/TASK_CHANGEDMS-14 avisa al área dueña que tiene una sección por llenaresta misma épica
catalog.product.changed/VARIANT_LINKEDMS-11 propone heredar a las variantes nuevas las imágenes de su coloresta 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
product_draftsMS-02Borradores del alta guiada.escribe
tasksMS-02Todo el trabajo asignado: visto bueno, corrección, Gobierno de Datos, foto, secciones, QA, revisión del cambio y repoblamiento.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
template_viewsMS-01La vista efectiva ya resuelta por plantilla y negocio: qué atributos pide y cuáles son obligatorios.lee
lov_valuesMS-01Cada valor de lista: código, etiqueta, orden y equivalencias por sistema.lee
product_reference_tablesMS-02Configuración del motor de estados y del matching: transiciones, estados externos y pesos.lee
assetsMS-11Cada archivo una vez: a qué producto, variante y posición pertenece, su validación técnica, URL de trabajo y URL congelada.lee

8. Historias que cubre

HistoriaPrioridadCómo la cubre
FT-PRD-07·H1 · Primero lo obligatorioP1pasos 2, 3, 4, 5, 6; API-02-101
FT-PRD-07·H2 · Saltar y retomarP1pasos 8, 11; flujo «Retomar después: autoguardado y pasos pendientes»
FT-PRD-07·H3 · Avance visibleP1pasos 4; API-02-101, API-BFF-201
FT-PRD-07·H4 · Guía de tallasP2flujo «Guía de tallas: tabla o imagen»
FT-PRD-07·H5 · Pocos clicsP2pasos 6; API-02-012
FT-PRD-07·H6 · Atributo en su secciónP3pasos 3; API-01-028
FT-PRD-07·H7 · Captura propia para MarketplaceP1pasos 2, 3, 5
FT-PRD-07·H8 · Cinco pasos, cada uno con un área dueñaP1pasos 3, 4; flujo «Un área completa su sección»; API-02-030
FT-PRD-07·H9 · Conservar los datos logísticosP1pasos 9, 10; API-02-006, API-02-101

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-07-1. El borrador es la propuesta en Borrador dentro de products: cada «Guardar» confirma los valores del paso con el plan de valores. El portal no guarda datos del catálogo. Por qué: Un solo dueño del dato y una sola copia; la propuesta vive en el PIM desde que se guarda. Se apoya en ADR-12, FT-PRD-04.
  • D-PRD-07-2. El autoguardado (product_drafts) guarda sólo lo tecleado en el paso en curso que todavía no se confirma, aunque no pase la validación; es por usuario, va ligado a la versión de la propuesta, se borra al guardar el paso y vence con la propuesta. No es una segunda copia de la ficha. Por qué: No se pierde trabajo si se corta la sesión y el portal no tiene que guardar nada; lo confirmado vive sólo en products. Se apoya en DMS-39, ADR-12.
  • D-PRD-07-3. Cinco pasos con área dueña: 1 Datos básicos (Compras); 2 Atributos (Gobierno de Producto, con secciones de Sostenibilidad, VAS y Legal); 3 Variantes y datos logísticos (Compras, proveedor y Logística); 4 Imágenes y videos (Gobierno de Producto y E-commerce); 5 Manuales y NOM (proveedor, E-commerce y Legal). El paso de cada atributo sale de su sección en la plantilla (Catálogo) y el área dueña, de la tabla de dueños de campos del motor; cambiar el reparto es configuración. Por qué: Es la propuesta del tablero; los datos logísticos van con las variantes porque son por artículo y SAP los exige para crear el SKU. Se apoya en P-22, RF-ALT-03.
  • D-PRD-07-4. El primer paso muestra sólo las tres capas que se llenan sí o sí (datos maestros, súper obligatorios y obligatorios del negocio); sugeridos y opcionales van en bloques que se saltan y se retoman. La completitud de obligatorios es sí o no. Por qué: Separa lo indispensable de lo opcional, como pidió el taller, sin volver la completitud un porcentaje. Se apoya en DEC-43, DEC-48, P-23, PEN-33.
  • D-PRD-07-5. La composición de la pantalla (propuesta, vista efectiva, listas y permisos) vive en el BFF del portal, en la pantalla de propuesta de FT-PRD-09 (API-BFF-201); el avance por paso y el autoguardado los pide la pantalla a MS-02. MS-02 sólo da dominio: valores, planes, candados y autoguardado. Por qué: Hoy esa composición está copiada en 4 apps del navegador; ponerla en MS-02 lo ataría a una pantalla, y hacer otra composición para la captura duplicaría la de la propuesta. Lo fija la decisión 19 que adopta ADR-12. Se apoya en ADR-12.
  • D-PRD-07-6. Una sola captura para los tres negocios: la de Marketplace es más corta porque su vista efectiva pide menos, no porque haya otra pantalla, otro motor u otra máquina de estados. Por qué: Las plantillas se comparten y sólo cambia la obligatoriedad; dos capturas duplicarían reglas. Se apoya en DEC-03, DEC-43, RN-GEN-02.
  • D-PRD-07-7. Toda validación nueva corre dentro del plan del paso donde se captura el dato (por ejemplo, la lista negra al capturar la marca); ninguna agrega una pantalla. Por qué: Cada candado suma clics; correrlos dentro del mismo plan cumple «pocos clics» sin perder control. Se apoya en RF-GEN-06.
  • D-PRD-07-8. La guía de tallas es un atributo compuesto de la plantilla (renglones de talla con sus medidas) o una imagen con tipo de activo «guía de tallas» en Activos digitales; aplica a los tres negocios cuando la plantilla tiene talla. Por qué: No existe en P360 ni en los diseños; así no se crea una entidad nueva y cada dato queda con su dueño. Se apoya en RF-PLA-20.
  • D-PRD-07-9. Las secciones de las áreas se llenan en la misma pantalla, desde su tarea Sección con dueño, después del SKU y en paralelo con la foto. Por qué: Es la segunda carretera de la máquina de estados: el proveedor no espera a Legal o a Sostenibilidad para pedir su SKU. Se apoya en PD-29, P-22.

Qué falta decidir

IDQué falta
P-22Gobierno de Producto confirma el reparto de los cinco pasos y sus áreas dueñas.
P-23Decidir qué datos se piden al inicio y cuáles después.
P-26Definir hasta dónde llega la IA en la captura (prellenado en el paso 2).
PD-02Confirmar si los sellers entran en la primera salida; cambia cuándo se usa la captura de Marketplace.

Fuentes

  1. [D] trazabilidad/features/FT-PRD-07-captura-guiada-por-pasos.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.