Actualizado el 18-oct-2026. Primera versión de la arquitectura de esta épica.
Qué responde. Cómo funciona por dentro FT-PRD-09: 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-09.json, generada con generar.py; la ficha de la épica es trazabilidad/features/FT-PRD-09-contrato-propuestas-entrada-unica.md.
En 30 segundos
Hoy las pantallas de propuesta de Vendor Center llaman a P360 y al backend de Entrada Única. En R2 cambian una sola vez al BFF del portal, que les compone la propuesta con su vista efectiva, sus listas y sus permisos, y escriben en los servicios del PIM. No se construye una capa que imite a P360: sólo queda, hasta el apagado de P360 en R3, el adaptador que usa su middleware para quitar un EAN.
- Módulo dueño: MS-02 Producto. También participan: MS-01 Catálogo, MS-13 Identidad y acceso.
- Etapa 0 · Entrada. Recibe «PE-C · Catálogo vigente» y entrega «PE-1 · Propuesta en Borrador».
- APIs: construye 3 y usa 20 que construyen otras épicas.
- Eventos: publica 4 y consume 0.
1. Dónde encaja
Recibe
| De | Qué |
|---|---|
| FT-ARQ-01 · Núcleo headless | La API de producto de MS-02: alta en Borrador, valores, variantes, acciones del flujo y recibos. |
| FT-FLU-01 · Motor de estados configurable con dos carreteras y reglas… | Qué acciones y qué grupos de campos puede usar cada quien según su rol, el estado y la tarea; la pantalla sólo los pinta. |
| FT-RAC-01 · Motor de validación en línea y candados de datos… | La validación en el momento, por campo y por variante, que la pantalla muestra tal cual. |
| FT-USR-01 · Identidad y autenticación de usuarios internos… | La sesión: el BFF valida el token en cada petición y toma los roles del directorio. |
| PE-C · Catálogo vigente | La vista efectiva, las marcas permitidas, las listas y el diccionario de proveedores sin EAN de MS-01, que compone el BFF. |
| FT-PLT-10 · Fachada v1 compatible con P360 para Entrada Única y Foro | Las rutas de catálogo del BFF (formulario de captura, valores con búsqueda, alcance de marcas y búsqueda de plantillas) que la pantalla de propuesta compone en R2. |
Entrega
| A | Qué |
|---|---|
| PE-1 · Propuesta en Borrador | La propuesta capturada en la pantalla nace en Borrador con origen PORTAL, negocio y proveedor dueño. |
| FT-PRD-07 · Captura guiada por pasos con los mínimos primero | La ruta del BFF de la pantalla de propuesta (API-BFF-201), sobre la que trabaja la captura guiada. |
| FT-MIG-04 · Convivencia P360 ↔ nuevo PIM | Las rutas de Entrada Única y de P360 que dejan de llamarse en R2, cada una con su reemplazo, y el adaptador upc-eans que se borra con P360 en R3. |
Cambios de estado que hace
| Transición | De → a | Cuándo |
|---|---|---|
| T01 | Inicio → Borrador | El proveedor o seller guarda por primera vez (pantalla, archivo, plantilla en línea o API). |
| T03 | Borrador → En revisión | Envía con los obligatorios completos. |
Tareas que abre o cierra: 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
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 | Proveedor | Entrada Única · Vendor Center | Elige negocio y plantilla para una propuesta nueva | — |
| 2 | Entrada Única · Vendor Center | BFF del portal | Revisa marcas permitidas y que la plantilla vaya con su sección | API-BFF-103 |
| 3 | Entrada Única · Vendor Center | BFF del portal | Pide el formulario de captura de la plantilla | API-BFF-101 |
| 4 | Entrada Única · Vendor Center | MS-02 Producto (por el BFF) | Revisa los EAN y si el proveedor está exento | API-02-102 |
| 5 | Entrada Única · Vendor Center | MS-02 Producto (por el BFF) | Revisa si ya existe por EAN o por marca y modelo | API-02-202 |
| 6 | Entrada Única · Vendor Center | MS-02 Producto (por el BFF) | Pide el plan del alta en Borrador con su evaluación | API-02-005 |
| 7 | Entrada Única · Vendor Center | MS-02 Producto (por el BFF) | Confirma el plan | API-02-057 |
| 8 | MS-02 Producto | Base pim | Guarda la propuesta en Borrador con origen PORTAL | — |
| 9 | MS-02 Producto | Eventos | Avisa la propuesta nueva | catalog.product.changed/PRODUCT_CREATED |
| 10 | Entrada Única · Vendor Center | BFF del portal | Abre la propuesta para capturarla | API-BFF-201 |
| 11 | BFF del portal | MS-13 Identidad y acceso | Toma los roles del usuario del directorio | API-13-001 |
| 12 | BFF del portal | MS-02 Producto | Lee la propuesta con sus variantes | API-02-002 |
| 13 | BFF del portal | MS-01 Catálogo | Lee la vista efectiva de su plantilla y negocio | API-01-028 |
| 14 | BFF del portal | MS-02 Producto | Pide qué puede editar y qué botones usar | API-02-027 |
3.1 Corregir, quitar una variante y reenviar
3.2 Placeholders desde el portal
3.3 El middleware de P360 quita un EAN (hasta R3)
4. Si algo sale mal
- Una pantalla vieja sigue llamando a P360 o al backend de Entrada Única en R2. La entrada mide el tráfico por ruta y una ruta vieja no se da por apagada hasta tener 30 días en cero. Mientras P360 viva la llamada funciona, pero lo nuevo ya se guarda en el PIM, que escribe en P360 por MS-03 mientras P360 sea la fuente.
- MS-01 no responde al armar la pantalla. El BFF devuelve la propuesta de sólo lectura con un aviso (partial = true): no se puede capturar sin vista efectiva, pero no se pierde nada de lo guardado.
- Otra persona cambió la propuesta mientras se corregía. La confirmación responde 409 VERSION_CONFLICT; la pantalla recarga la versión nueva y el proveedor ve qué cambió antes de volver a guardar.
- Quiere quitar una variante que ya tiene SKU. El plan responde 422 con el motivo; esa variante se cambia con una modificación o se da de baja, no se borra.
- El middleware de P360 manda un EAN que no está en el PIM. El adaptador responde igual que hoy y deja el caso en la bitácora; no crea ni cambia nada.
5. APIs
Las que construye esta épica (3)
GET /bff/v1/proposals/{productId} · Pantalla de propuesta
| Campo | Valor |
|---|---|
| API | API-BFF-201 · BFF del portal |
| Para qué | Junta en una sola respuesta lo que pinta la pantalla de una propuesta: la propuesta con sus variantes (MS-02), el formulario de captura de su plantilla y negocio (el mismo que arma API-BFF-101 con la vista efectiva y las listas de MS-01), qué grupos de campos puede editar quien la abre y qué acciones tiene (motor de MS-02) y los motivos de rechazo por campo. Reemplaza a GetProposals y a la composición que hoy arma el navegador en cuatro copias, y a /catalogationmanagement/product. |
| En esta épica | Pantalla de propuesta: propuesta, vista efectiva, listas, permisos y motivos en una respuesta |
| Quién la llama | Entrada Única · Vendor Center (por el BFF) |
| Permiso | La pantalla de propuestas en el menú del perfil (BFF); qué se ve, qué se edita y qué botones salen lo deciden MS-02 y MS-01 |
| Cabeceras | Authorization, X-Request-Id |
| Parámetros | productId = PRD-0004812, lang = es |
| También la usan | FT-ACT-06, FT-FLU-02, FT-PRD-05, FT-PRD-06, FT-PRD-07 |
Request
null
Response · 200
{
"success": true,
"data": {
"proposal": {
"productId": "PRD-0004812",
"business": "MER",
"status": "BORRADOR",
"visibleStatus": "Rechazada",
"version": 6,
"origin": "PORTAL",
"supplierId": "PROV-0001",
"templateId": "EU4-0412",
"base": {
"TITULO": "Licuadora de 10 velocidades",
"MARCA": "MARCA01",
"MODELO": "LV-10"
},
"variants": [
{
"variantId": "VAR-0004812-01",
"ean": "7501234567893",
"sku": null,
"axes": {
"COLOR": "ROJO"
}
},
{
"variantId": "VAR-0004812-02",
"ean": "7501234567909",
"sku": null,
"axes": {
"COLOR": "NEGRO"
}
}
]
},
"template": {
"templateId": "EU4-0412",
"version": 7,
"business": "MER",
"sections": [
{
"code": "DATOS_BASE",
"owner": "PROVEEDOR",
"attributes": [
{
"code": "COLOR",
"level": "REQUIRED",
"type": "LIST",
"list": "COLOR"
},
{
"code": "TONO",
"level": "OPTIONAL",
"type": "LIST",
"list": "TONO",
"dependsOn": "COLOR"
}
]
},
{
"code": "LOGISTICA",
"owner": "PROVEEDOR",
"attributes": [
{
"code": "ALTO_EMPAQUE",
"level": "REQUIRED",
"type": "NUMBER",
"unit": "CM"
}
]
}
]
},
"lists": {
"COLOR": [
{
"code": "ROJO",
"label": "Rojo"
},
{
"code": "NEGRO",
"label": "Negro"
}
],
"TONO": {
"byParent": {
"ROJO": [
{
"code": "ROJO_VINO",
"label": "Rojo vino"
}
]
}
}
},
"permissions": {
"fieldGroups": [
{
"group": "DATOS_BASE",
"access": "editable"
},
{
"group": "LOGISTICA",
"access": "editable"
}
],
"actions": [
"SUBMIT",
"CANCEL"
],
"isContentOwner": true
},
"rejection": {
"rejectedAt": "2026-10-18T15:04:07Z",
"byArea": "COMPRAS-HOGAR",
"reason": {
"code": "DATOS_INCOMPLETOS",
"comment": "Faltan medidas del empaque"
},
"fields": [
{
"attribute": "ALTO_EMPAQUE",
"code": "REQUIRED",
"comment": "Captura el alto en centímetros"
}
],
"correctionDueAt": "2026-12-17T15:04:05Z"
},
"partial": false
}
}
Errores
| HTTP | Código | Cuándo |
|---|---|---|
| 404 | NOT_FOUND | La propuesta no existe o no es visible para quien llama |
| 403 | AUTHORIZATION_ERROR | El perfil no tiene la pantalla de propuestas |
| 503 | DEPENDENCY_UNAVAILABLE | MS-01 no responde: si MS-02 sí, se devuelve la propuesta sólo de lectura con partial = true y un aviso |
POST /api/v2/products/{id}/variants/remove/plans · Quitar variantes sin SKU
| Campo | Valor |
|---|---|
| API | API-02-203 · MS-02 Producto |
| Para qué | Prepara el borrado lógico de variantes de una propuesta que todavía no tienen SKU y dice qué pasará; al confirmar, el genérico no se toca, sus EAN quedan libres y queda en la bitácora. |
| En esta épica | Quitar variantes sin SKU; reemplaza a EliminaVariantes |
| Quién la llama | Entrada Única · Vendor Center (por el BFF), Gateway de terceros /partner/v1 |
| Permiso | El proveedor o seller dueño de la propuesta en Borrador; Compras en En revisión |
| Cabeceras | Authorization, X-Request-Id, Idempotency-Key, If-Match |
| Parámetros | id = PRD-0004812 |
Request
{
"version": 4,
"variantIds": [
"VAR-0004812-03"
],
"reason": "Color descontinuado"
}
Response · 200
{
"success": true,
"data": {
"planId": "pln-2b7e10",
"expiresAt": "2026-10-18T16:50:00Z",
"items": [
{
"variantId": "VAR-0004812-03",
"result": "WILL_REMOVE",
"freesEans": [
"7501234567916"
]
}
],
"remainingVariants": 2,
"applyUrl": "/api/v2/product-plans/pln-2b7e10/apply"
}
}
Errores
| HTTP | Código | Cuándo |
|---|---|---|
| 422 | BUSINESS_ERROR | La variante ya tiene SKU (se usa modificación o baja) o quitarla dejaría la propuesta sin variantes |
| 409 | VERSION_CONFLICT | Alguien cambió la propuesta desde que se abrió |
| 409 | NOT_EDITABLE_IN_STATUS | La propuesta no está en Borrador ni En revisión |
DELETE /productmanagement/proposals/upc-eans · Quitar un EAN (adaptador para P360)
| Campo | Valor |
|---|---|
| API | API-02-074 · MS-02 Producto |
| Para qué | Único adaptador que queda (decisión 20). Hoy el middleware de P360 lo llama contra Entrada Única al quitar un EAN de un artículo; desde R2 MS-02 atiende el mismo contrato, libera el EAN en su registro de identidad y avisa EAN_CHANGED. Se borra con el apagado de P360 en R3 (abr–may 2027). |
| En esta épica | Adaptador upc-eans para el middleware de P360, hasta R3 |
| Quién la llama | P360 |
| Permiso | Sólo el middleware de P360, con su credencial de servicio |
| Cabeceras | Authorization, X-Request-Id |
| Escribe en | identifier_registry, products, product_outbox |
| Publica | catalog.product.changed/EAN_CHANGED |
| También la usan | FT-MIG-04, FT-PRD-03 |
| Capa temporal | Responde igual que hoy y se borra con el apagado de P360 (R3). |
Las que usa y construye otra épica (20)
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-13-001 | GET /internal/identity/permissions?userId= | Roles del usuario para los permisos de pantalla, con caché | FT-USR-01 · Identidad y autenticación de usuarios internos… |
| API-02-102 | POST /api/v2/products/ean-checks | Revisar cada EAN al teclearlo y si el dueño está exento; reemplaza a SellersAllowedNotEAN | FT-PRD-03 · EAN |
| API-06-005 | POST /api/v2/matches | Buscar parecidos por marca y modelo como referencia | FT-REF-03 · Servicio de matching |
| API-02-005 | POST /api/v2/products/plans | Alta en Borrador desde la pantalla | FT-PRD-01 · Modelo canónico de producto |
| API-02-057 | POST /api/v2/product-plans/{planId}/apply | Confirmar alta, cambios, quitar variantes y reenvío | FT-FLU-01 · Motor de estados configurable con dos carreteras y reglas… |
| API-02-002 | GET /api/v2/products/{id} | La propuesta con sus variantes | FT-PRD-01 · Modelo canónico de producto |
| API-01-028 | GET /api/v2/taxonomies/PRODUCT/nodes/{id}/effective | Vista efectiva de la plantilla y el negocio | FT-PLT-06 · Configuración de atributos por plantilla y por negocio… |
| API-02-027 | GET /api/v2/workflow/capabilities?productIds= | Qué grupos puede editar y qué acciones tiene | FT-FLU-01 · Motor de estados configurable con dos carreteras y reglas… |
| API-02-029 | GET /api/v2/workflow/comments?productIds= | Motivos de rechazo por campo | FT-PRD-04 · Propuesta del proveedor de Mercaderías |
| API-02-012 | POST /api/v2/products/{id}/values/plans | Validar y guardar los campos corregidos | FT-RAC-01 · Motor de validación en línea y candados de datos… |
| API-02-028 | POST /api/v2/workflow/actions/plans | Acciones del flujo: enviar, aprobar, cancelar, que hoy van dentro de CreateProposal | FT-FLU-01 · Motor de estados configurable con dos carreteras y reglas… |
| API-02-106 | POST /api/v2/product-groups/plans | Agrupar looks, que hoy va dentro de CreateProposal | FT-PRD-01 · Modelo canónico de producto |
| API-02-046 | POST /api/v2/product-imports | Carga de placeholders con su perfil; reemplaza la carga masiva de hoy | FT-FLU-04 · Carga masiva de productos por archivo |
| API-02-047 | POST /api/v2/product-imports/{id}/apply | Crear los placeholders válidos | FT-FLU-04 · Carga masiva de productos por archivo |
| API-02-001 | POST /api/v2/products/search | Lista de mis propuestas; reemplaza a GetProposals en las tablas | FT-PRD-01 · Modelo canónico de producto |
| API-02-201 | GET /api/v2/products/by-identifier | Leer por SKU o EAN; reemplaza a /catalogationmanagement/product | FT-ARQ-01 · Núcleo headless |
| API-BFF-103 | GET /bff/v1/catalog/capture-scope | Alcance de marcas y plantilla ligada a la sección; reemplaza a BrandsGroupOfArticleByTemplateBusinessProvider | FT-PLT-10 · Fachada v1 compatible con P360 para Entrada Única y Foro |
| API-BFF-101 | GET /bff/v1/catalog/capture-form | Formulario de captura de la plantilla y el negocio; reemplaza a GetTemplate y a los habilitadores | FT-PLT-10 · Fachada v1 compatible con P360 para Entrada Única y Foro |
| API-02-202 | POST /api/v2/products/identifications | Identificación previa al alta; reemplaza a GetArticleByEanOrBrandAndModel | FT-FLU-02 · Alta individual de Marketplace |
| API-BFF-107 | GET /bff/v1/catalog/templates | Buscar plantillas por texto con su ruta; reemplaza a /catalogationmanagement/templates | FT-PLT-10 · Fachada v1 compatible con P360 para Entrada Única y Foro |
6. Eventos
Publica
| Evento | Cuándo | Quién lo consume |
|---|---|---|
catalog.product.changed/PRODUCT_CREATED | Se guarda una propuesta nueva en la pantalla | FT-ARQ-01 |
catalog.product.changed/PRODUCT_UPDATED | Se corrige una propuesta o se quita una variante | FT-ACT-05, FT-ARQ-02, FT-IA-01, FT-PLT-07, FT-PRD-05, FT-RAC-06 |
catalog.product.changed/STATUS_CHANGED | Se reenvía a revisión | 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/EAN_CHANGED | Se quita una variante o el middleware de P360 quita un EAN | FT-ARQ-02, FT-PRD-03 |
7. Datos
Cada colección tiene un solo dueño, el único que escribe en ella.
| Colección | Dueño | Qué guarda | Esta épica |
|---|---|---|---|
products | MS-02 | La familia del producto con sus variantes, valores, imágenes (URL), clasificaciones, estado, tareas abiertas y rechazos. | escribe |
identifier_registry | MS-02 | Unicidad de SKU y de EAN por negocio. | escribe |
product_versions | MS-02 | Foto numerada del producto en cada versión. | escribe |
product_jobs | MS-02 | Trabajos asíncronos: cargas masivas de productos, edición masiva y publicación. | escribe |
tasks | MS-02 | Todo el trabajo asignado: visto bueno, corrección, Gobierno de Datos, foto, secciones, QA, revisión del cambio y repoblamiento. | escribe |
product_receipts | MS-02 | El recibo de cada escritura confirmada en el producto (antes operation_receipts). | escribe |
product_outbox | MS-02 | Los cambios del producto que esperan salir como evento (antes outbox). | escribe |
template_views | MS-01 | La vista efectiva ya resuelta por plantilla y negocio: qué atributos pide y cuáles son obligatorios. | lee |
lov_values | MS-01 | Cada valor de lista: código, etiqueta, orden y equivalencias por sistema. | 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 |
roles | MS-13 | Perfiles y roles, con sus membresías y su alcance (negocio, sección, proveedor o seller, vigencia). Los permisos de dominio los decide el servicio dueño con estos roles (decisión 19). | 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-PRD-09·H1 · Crear sin tocar EU | P1 | pasos 1, 2, 3, 4, 5, 6, 7, 8; flujo «Placeholders desde el portal»; API-02-005, API-02-046 |
| FT-PRD-09·H2 · Errores por campo | P1 | pasos 4, 5, 6; flujo «Corregir, quitar una variante y reenviar»; API-02-012, API-02-102 |
| FT-PRD-09·H3 · Consultar | P1 | pasos 10, 12, 13, 14; API-BFF-201, API-02-001, API-02-201 |
| FT-PRD-09·H4 · Una ruta, cinco flujos | P1 | flujo «Corregir, quitar una variante y reenviar»; API-02-028, API-02-106 |
| FT-PRD-09·H5 · Variantes, duplicados y URL | P2 | flujo «Corregir, quitar una variante y reenviar», «El middleware de P360 quita un EAN (hasta R3)»; API-02-203, API-02-202, API-02-074 |
| FT-PRD-09·H6 · Sin heredar huecos | P3 | pasos 10, 11; API-13-001 |
| FT-PRD-09·H7 · Sin cambios para Entrada Única y Foro | P1 | API-BFF-201. Fuera: Con ADR-12 y la decisión 20 los contratos sí cambian, una sola vez, al del BFF en R2; lo que se conserva es lo que ve y hace el usuario (D-PRD-09-1). SKU, publicación, OMS y commercetools no cambian en R2: los cubren FT-PRD-02 y FT-INT-01. |
| FT-PRD-09·H8 · Recibir placeholders del portal de catalogación | P2 | flujo «Placeholders desde el portal»; API-02-046, API-02-047 |
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-09-1. Las pantallas de propuesta, variantes y carga masiva de Vendor Center cambian una sola vez al contrato del BFF en R2; no se construye la capa /public/rt (CreateProposal, GetProposals, GetArticleByEanOrBrandAndModel, EliminaVariantes y las demás) ni adaptadores en los servicios. El backend de Entrada Única y P360 se apagan en R3 con tráfico cero. Por qué: Es la decisión 20 que adopta ADR-12: mantener capas temporales cuesta más que cambiar el front una vez, y al llegar al corte no queda nada temporal que mantener. Se apoya en ADR-12, PD-06, ADR-06, RSG-30.
- D-PRD-09-2. La composición «propuesta con su vista efectiva, listas, permisos y motivos» vive una sola vez en el BFF (API-BFF-201), en lugar de las cuatro copias que hoy tiene el navegador. El BFF no decide permisos de dominio: los pide al motor de MS-02 y sólo aplica los de pantalla. Por qué: Decisión 19: un solo lugar para componer, servicios que no saben de pantallas y ninguna regla de negocio en el BFF. Se apoya en ADR-12, PD-30, RF-GEN-10.
- D-PRD-09-3. Cada operación de hoy tiene su reemplazo: GetProposals por API-BFF-201, API-02-001 y API-02-201; GetArticleByEanOrBrandAndModel por la identificación previa al alta (API-02-202) y la revisión de cada EAN (API-02-102); EliminaVariantes por API-02-203; SellersAllowedNotEAN por API-02-102, que dice si el dueño está exento; /catalogationmanagement/product por API-BFF-201 o API-02-201; /catalogationmanagement/templates por la búsqueda de plantillas del BFF (API-BFF-107); los cinco flujos de CreateProposal por API-02-005, API-02-006, API-02-012, API-02-028 y API-02-106; y la carga masiva de Entrada Única por API-02-046. Lo de plantilla (GetTemplate, habilitadores y marcas) pasa al BFF de catálogo en R1 (API-BFF-101 a API-BFF-103). Por qué: Que ninguna función se pierda al apagar P360 (RSG-30) sin copiar los contratos de P360 con sus rarezas (RSG-31). Se apoya en RSG-30, RSG-31, RF-INT-14.
- D-PRD-09-4. El único adaptador es upc-eans (API-02-074): mientras P360 viva, MS-02 atiende el mismo contrato para su middleware, libera el EAN y avisa EAN_CHANGED; se borra con el apagado de P360 en R3. Por qué: Es la única llamada a Entrada Única que no viene de un front (decisión 20); la otra opción, reapuntar la propiedad de P360, llega a la misma ruta de MS-02. Se apoya en ADR-06, PD-06.
- D-PRD-09-6. Mientras P360 sea la fuente del producto (R2), la pantalla ya lee y escribe en el PIM y MS-02 escribe en P360 por MS-03; cada ruta vieja se da por apagada con 30 días de tráfico cero en la entrada. Por qué: La pantalla cambia una sola vez, la convivencia queda en un solo lugar (FT-MIG-04) y se apaga con evidencia. Se apoya en ADR-08, RSG-48, FT-MIG-04.
- D-PRD-09-7. Los placeholders del portal usan la carga masiva con el perfil PLACEHOLDERS, que sólo exige datos maestros y los atributos estratégicos de la plantilla enmascarada; editarlos a mano los conserva como placeholder. Pasan a propuesta sólo cuando o9 los acepta (FT-PRD-04). Por qué: H8 sin otro front ni otro contrato: la misma carga, con un perfil. Se apoya en FT-PRD-04, DEC-PRD-08.
Qué falta decidir
| ID | Qué falta |
|---|---|
| PD-06 | Se cierra con ADR-12 y la decisión 20 cuando la TDA registre ADR-06: sin capa de compatibilidad para los fronts. |
| DUD-28 | Medir el portal de Foro, cuyo repositorio no está en el espacio de trabajo, para confirmar que no llama a las rutas de propuestas. |
| DUD-39 | Confirmar con 30 días de bitácora que nadie llama ProcessProductsMarketplace ni GetLastSentTimeBySKU. |
También siguen abiertos: RSG-24, El apagado de P360 depende de que la publicación nueva ya esté operando; sin publicador no hay corte de propuestas.
Fuentes
- [D]
trazabilidad/features/FT-PRD-09-contrato-propuestas-entrada-unica.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.