← Arquitectura por épica

FT-CAT-03 · Categorización de productos

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-CAT-03: 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-CAT-03.json, generada con generar.py; la ficha de la épica es trazabilidad/features/FT-CAT-03-categorizacion-de-productos.md.

En 30 segundos

Un producto sin categoría web no se ve en la tienda, y hoy todas las categorías se asignan a mano, exportando y recargando archivos. Esta épica asigna la categoría: el seller o el proveedor la elige buscando en el árbol o, al enviar la captura, un agente la calcula con el mapeo de su plantilla o con la IA. Antes de aprobar, la categoría se confirma sola si la confianza alcanza; si no, la revisa Category desde su bandeja.

  • Módulo dueño: MS-02 Producto. También participan: MS-01 Catálogo, MS-06 Evaluación, MS-15 IA y enriquecimiento.
  • Etapa 7 · Calidad y categoría. Recibe «PE-C · Catálogo vigente», «PE-6 · SKU asignado» y entrega «PE-8 · Aprobado».
  • APIs: construye 3 y usa 13 que construyen otras épicas.
  • Eventos: publica 4 y consume 1.

1. Dónde encaja

Recibe

DeQué
PE-C · Catálogo vigenteEl árbol de categorías publicado y el mapeo plantilla ↔ categoría web, en Catálogo.
FT-CAT-01 · Administración del árbol de categorías webLas hojas del árbol, la búsqueda por nombre y qué categorías son restringidas, con sus requisitos.
FT-PLT-05 · Taxonomía de plantillas por familia, metadatos de…La taxonomía de plantillas por familia, base del mapeo.
FT-RAC-01 · Motor de validación en línea y candados de datos…La propuesta enviada: el momento en que el agente calcula su categoría, antes del score y del SKU.
PE-6 · SKU asignadoEl producto en enriquecimiento, donde la categoría se confirma antes de aprobar.
FT-RAC-03 · Publicación por rangos de score y revisión de calidad…QA aprobado: el momento en que se revisa si la categoría necesita a Category.
FT-IA-04 · Integración de los modelos de IA existentesLa categoría web sugerida con su certeza cuando la plantilla no tiene mapeo.
FT-MIG-05 · RemediaciónLos faltantes que llegaron sin categoría, en la tarea Category, para que el equipo de categorías complete sólo lo pendiente.

Entrega

AQué
PE-8 · AprobadoLa categoría web aprobada en el producto; si era la última tarea que bloqueaba, el producto queda Aprobado y se pide su publicación.
FT-RAC-02 · Score de calidad del productoEn Marketplace, la categoría calculada antes del score.
FT-INT-01 · Publicación a e-commerceLas categorías web del producto para publicar; sin categoría no se publica.
FT-FLU-05 · Reglas de negocio en la carga masivaEl mismo cálculo de categoría (mapeo y, si falta, IA) para cada renglón de la carga masiva.
FT-FLU-02 · Alta individual de MarketplaceEl agente de categoría dentro del alta individual de Marketplace.

Cambios de estado que hace

TransiciónDe → aCuándo
T08En enriquecimiento → AprobadoCalidad aprobada y sin tareas que bloqueen.

Tareas que abre o cierra: Category.

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

Ver una categoría
Categorías web de una plantilla

TASK_CHANGED
CLASSIFICATION_CHANGED
y 2 más

Bandeja de tareas
Sugerir la categoría web
y 3 más

Predecir el grupo de artículos y suge…

Calcular la calificación de un produc…

Buscar categorías
Hijas de una categoría
y 3 más

RULE_CHANGED

RULE_CHANGED

QA y Category

Seller

Entrada Única · Vendor Center

BFF del portal

MS-01 Catálogo

★ MS-02 Producto

MS-06 Evaluación

MS-15 IA y enriquecimiento

Base pim

Eventos

Contexto de FT-CAT-03

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.

Entrada Única · Vendor CenterEventosMS-01 CatálogoBase·pimMS-02 ProductoEntrada Única · Vendor CenterEventosMS-01 CatálogoBase·pimMS-02 ProductoQA y CategoryBFF1. Al aprobar QA, revisa la categoría que quedó al enviar2. Confirma que siga siendo una hoja publicadaGET /api/v2/categories/{id}3. Abre Category si no alcanza la confianza o cae en la muestra4. Avisa la tarea abiertaTASK_CHANGED5. Abre su bandeja de Category6. Pide sus tareas de CategoryGET /api/v2/tasks7. Pide otras sugerencias si la propuesta no convencePOST /api/v2/products/{id}/category-suggestions8. Confirma o cambia la categoría9. Pide el plan de la categoría elegidaPOST /api/v2/products/classifications/plans10. Confirma el planPOST /api/v2/product-plans/{planId}/apply11. Cierra Category, sin otra tarea que bloquee, pasa a Aprobado12. Avisa la categoría aprobadaCLASSIFICATION_CHANGED13. Avisa que el producto quedó AprobadoSTATUS_CHANGED14. Pide publicar en los canales de su negocioPUBLICATION_REQUESTEDQA y CategoryBFF
Flujo principal de FT-CAT-03
Los pasos en texto
PasoDeAQué haceAPI o evento
1MS-02 ProductoBase pimAl aprobar QA, revisa la categoría que quedó al enviar—
2MS-02 ProductoMS-01 CatálogoConfirma que siga siendo una hoja publicadaAPI-01-036
3MS-02 ProductoBase pimAbre Category si no alcanza la confianza o cae en la muestra—
4MS-02 ProductoEventosAvisa la tarea abiertacatalog.product.changed/TASK_CHANGED
5QA y CategoryEntrada Única · Vendor CenterAbre su bandeja de Category—
6Entrada Única · Vendor CenterMS-02 Producto (por el BFF)Pide sus tareas de CategoryAPI-02-032
7Entrada Única · Vendor CenterMS-02 Producto (por el BFF)Pide otras sugerencias si la propuesta no convenceAPI-02-110
8QA y CategoryEntrada Única · Vendor CenterConfirma o cambia la categoría—
9Entrada Única · Vendor CenterMS-02 Producto (por el BFF)Pide el plan de la categoría elegidaAPI-02-016
10Entrada Única · Vendor CenterMS-02 Producto (por el BFF)Confirma el planAPI-02-057
11MS-02 ProductoBase pimCierra Category; sin otra tarea que bloquee, pasa a Aprobado—
12MS-02 ProductoEventosAvisa la categoría aprobadacatalog.product.changed/CLASSIFICATION_CHANGED
13MS-02 ProductoEventosAvisa que el producto quedó Aprobadocatalog.product.changed/STATUS_CHANGED
14MS-02 ProductoEventosPide publicar en los canales de su negociocatalog.product.publication/PUBLICATION_REQUESTED

3.1 Al enviar, el agente calcula la categoría

MS-06 EvaluaciónEventosBase·pimMS-15 IA y enriquecimientoMS-01 CatálogoMS-02 ProductoMS-06 EvaluaciónEventosBase·pimMS-15 IA y enriquecimientoMS-01 CatálogoMS-02 Producto1. Pide la categoría del mapeo de su plantillaPOST /internal/governance/rules/web-category-classify2. Si no hay mapeo, pide la sugerencia con su confianzaPOST /api/v2/ai/category-suggestions3. Revisa que sea hoja publicada y si es restringidaGET /api/v2/categories/{id}4. Guarda la categoría en el padre, marcada como automática5. Avisa la clasificación calculadaCLASSIFICATION_CHANGED6. En Marketplace, pide el score ya con la categoríaPOST /api/v2/scores
Al enviar, el agente calcula la categoría

3.2 El seller elige la categoría en el árbol

Base·pimMS-02 ProductoMS-01 CatálogoEntrada Única · Vendor CenterBase·pimMS-02 ProductoMS-01 CatálogoEntrada Única · Vendor CenterSellerBFF1. Escribe «playera» en el buscador de categorías2. Busca las categorías que coincidenGET /api/v2/categories3. Navega hasta una hojaGET /api/v2/categories/{id}/children4. Pide el plan de la categoría elegidaPOST /api/v2/products/classifications/plans5. Lee si la categoría es restringida y qué pideGET /api/v2/categories/{id}6. Confirma con los requisitos a la vistaPOST /api/v2/product-plans/{planId}/apply7. Liga la categoría al padre, nunca a la variante8. Si ninguna sirve, abre Category con la propuesta del seller9. Para carga masiva, baja la plantilla de esa hojaGET /api/v2/product-imports/profiles/{p}/templateSellerBFF
El seller elige la categoría en el árbol

3.3 Mantener el mapeo plantilla ↔ categoría

MS-02 ProductoEventosMS-01 CatálogoEntrada Única · Vendor CenterMS-02 ProductoEventosMS-01 CatálogoEntrada Única · Vendor CenterQA y CategoryBFF1. Carga el mapeo inicial de todas las categorías base2. Valida el archivo del mapeo sin escribirPOST /api/v2/catalog-imports3. Confirma la cargaPOST /api/v2/catalog-imports/{id}/apply4. Avisa las reglas nuevasRULE_CHANGED5. Entrega el cambio, MS-02 refresca su caché del mapeoRULE_CHANGED6. Ajusta el mapeo de una plantilla7. Pide el plan de la regla del mapeoPOST /api/v2/rules/plansQA y CategoryBFF
Mantener el mapeo plantilla ↔ categoría

4. Si algo sale mal

  • La plantilla no tiene mapeo y la IA no alcanza el umbral. Se guarda la mejor sugerencia marcada como automática con su confianza; al aprobar QA se abre Category con las sugerencias y no se aprueba hasta que Category confirme.
  • La categoría se desligó o dejó de estar publicada después de asignarla. La revisión del paso 2 lo detecta y abre Category con el motivo «la categoría ya no está publicada»; el producto no se aprueba con una categoría que la tienda no tiene.
  • La IA (MS-15) no responde. Se usa sólo el mapeo; si tampoco hay mapeo, el producto sigue sin categoría y Category recibe la tarea con el motivo «sin sugerencia».
  • El seller elige una categoría restringida sin sus documentos. El plan le muestra los requisitos; según lo que diga Catálogo, bloquea o avisa, y el candado de publicación (FT-RAC-01) no deja aprobar sin cumplirlos.
  • Category no atiende la tarea a tiempo. El reloj de plazos de MS-02 le recuerda y, al vencer, la pasa a la cola del líder de Category; el seller ve «En revisión de categoría» con su fecha.

5. APIs

Las que construye esta épica (3)

POST /api/v2/products/{id}/category-suggestions · Sugerir la categoría web
CampoValor
APIAPI-02-110 · MS-02 Producto
Para quéPropone la categoría web del producto: primero la del mapeo de su plantilla en Catálogo y, si no hay mapeo, la que sugiere la IA; cada una con su ruta, su fuente, su confianza y si alcanza el umbral. No escribe nada.
En esta épicaSugerir categorías con su fuente y su confianza
Quién la llamaBFF del portal
PermisoEl proveedor o seller dueño; Category
CabecerasAuthorization, X-Request-Id
Parámetrosid = PRD-0004812

Request

{
  "siteIds": [
    "LIVERPOOL"
  ],
  "max": 3
}

Response · 200

{
  "success": true,
  "data": {
    "productId": "PRD-0004812",
    "templateId": "EU4-0412",
    "suggestions": [
      {
        "categoryId": "catst0012345",
        "site": "LIVERPOOL",
        "path": "Ropa > Hombre > Playeras",
        "source": "MAPPING",
        "confidence": 1.0,
        "meetsThreshold": true,
        "restricted": false
      },
      {
        "categoryId": "catst0012390",
        "site": "LIVERPOOL",
        "path": "Deportes > Ropa deportiva > Playeras",
        "source": "AI",
        "confidence": 0.71,
        "meetsThreshold": false,
        "restricted": false
      }
    ]
  }
}

Errores

HTTPCódigoCuándo
404NOT_FOUNDEl producto no existe o no es visible para quien llama
422BUSINESS_ERROREl producto todavía no tiene plantilla
503DEPENDENCY_UNAVAILABLENi el mapeo ni la IA respondieron; se elige a mano en el árbol
POST /api/v2/products/classifications/plans · Asignar plantilla o categorías web
CampoValor
APIAPI-02-016 · MS-02 Producto
Para quéPrepara asignar, quitar o reemplazar la plantilla o las categorías web de hasta 100 productos y revisa cada regla: sólo hojas publicadas, sólo en el padre, una plantilla por producto, una categoría por sitio salvo permiso de Category, y los requisitos de una categoría restringida.
En esta épicaAsignar, cambiar o quitar categorías con las reglas de hojas, padre y sitio
Quién la llamaBFF del portal
PermisoCLA-E; el proveedor o seller dueño para su propuesta en Borrador; Category después
CabecerasAuthorization, X-Request-Id, Idempotency-Key
Publicacatalog.product.changed/CLASSIFICATION_CHANGED
También la usanFT-ACT-06, FT-CAT-01, FT-CAT-04, FT-CAT-05, FT-FLU-02, FT-IA-02, FT-IA-04, FT-PLT-05

Request

{
  "items": [
    {
      "productId": "PRD-0004812",
      "version": 9
    }
  ],
  "structure": "WEB_CATEGORIES",
  "op": "ASSIGN",
  "nodeIds": [
    "catst0012345"
  ],
  "source": "MANUAL"
}

Response · 200

{
  "success": true,
  "data": {
    "planId": "pln-c73a10",
    "expiresAt": "2026-10-18T17:05:00Z",
    "summary": {
      "ok": 1,
      "blocked": 0,
      "withWarnings": 1
    },
    "items": [
      {
        "productId": "PRD-0004812",
        "result": "OK",
        "before": [],
        "after": [
          "catst0012345"
        ],
        "site": "LIVERPOOL",
        "path": "Ropa > Hombre > Playeras",
        "restriction": null,
        "warnings": [
          {
            "code": "OUTSIDE_MAPPING",
            "message": "No es la categoría del mapeo de la plantilla; Category la revisará"
          }
        ]
      }
    ],
    "applyUrl": "/api/v2/product-plans/pln-c73a10/apply"
  }
}

Errores

HTTPCódigoCuándo
422VALIDATION_ERRORLa categoría no es hoja o no está publicada
422BUSINESS_ERRORSe intenta categorizar una variante: la categoría va en el padre
422BUSINESS_ERRORUna segunda categoría en el mismo sitio sin permiso de Category
422VALIDATION_ERRORDos plantillas para el mismo producto
409VERSION_CONFLICTEl producto cambió después de seleccionarlo
POST /internal/governance/rules/web-category-classify · Categorías web de una plantilla
CampoValor
APIAPI-01-205 · MS-01 Catálogo
Para quéResuelve el mapeo plantilla ↔ categoría web (regla TEMPLATE_WEB_CATEGORY): con una plantilla y un negocio devuelve las hojas publicadas que le tocan por sitio, con si son restringidas; con una categoría devuelve las plantillas que le corresponden. Lo llama MS-02 al calcular la categoría y al bajar la plantilla de carga de una hoja. Es lo que FT-CAT-03 pidió como PEDIDA-CAT-03-1.
En esta épicaResolver el mapeo plantilla ↔ categoría web en Catálogo
Quién la llamaMS-02 Producto
PermisoSólo MS-02 (cuenta de servicio)
CabecerasAuthorization, X-Request-Id

Request

{
  "templateId": "EU4-0412",
  "business": "MKP",
  "siteIds": [
    "LIVERPOOL"
  ]
}

Response · 200

{
  "success": true,
  "data": {
    "templateId": "EU4-0412",
    "business": "MKP",
    "categories": [
      {
        "categoryId": "catst10045",
        "siteId": "LIVERPOOL",
        "path": "Ropa > Caballero > Camisas de vestir",
        "isLeaf": true,
        "publication": {
          "status": "PUBLICADO",
          "version": 8
        },
        "restricted": false
      }
    ],
    "rule": {
      "ruleId": "rul-088120",
      "type": "TEMPLATE_WEB_CATEGORY",
      "version": 3
    }
  }
}

Errores

HTTPCódigoCuándo
404NOT_FOUNDLa plantilla o la categoría no existen
400VALIDATION_ERRORNo llega ni plantilla ni categoría, o un sitio no existe

Las que usa y construye otra épica (13)

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-01-036GET /api/v2/categories/{id}Confirmar que la categoría sea hoja publicada y saber si es restringidaFT-CAT-01 · Administración del árbol de categorías web
API-02-032GET /api/v2/tasksLa bandeja de tareas CategoryFT-PRD-06 · Bandeja de pendientes y depuración de borradores…
API-02-057POST /api/v2/product-plans/{planId}/applyConfirmar la categoríaFT-FLU-01 · Motor de estados configurable con dos carreteras y reglas…
API-15-002POST /api/v2/ai/category-suggestionsSugerencia de categoría web con su certeza cuando no hay mapeoFT-IA-04 · Integración de los modelos de IA existentes
API-06-006POST /api/v2/scoresCalcular el score de Marketplace ya con la categoríaFT-RAC-02 · Score de calidad del producto
API-01-035GET /api/v2/categoriesBuscar categorías por nombreFT-CAT-01 · Administración del árbol de categorías web
API-01-037GET /api/v2/categories/{id}/childrenNavegar a las hijas de una categoríaFT-CAT-01 · Administración del árbol de categorías web
API-02-045GET /api/v2/product-imports/profiles/{p}/templateBajar la plantilla de carga masiva que le toca a la hoja elegidaFT-FLU-04 · Carga masiva de productos por archivo
API-01-031POST /api/v2/catalog-importsValidar el archivo de carga inicial del mapeoFT-PLT-09 · Carga masiva de configuración de plantillas con…
API-01-032POST /api/v2/catalog-imports/{id}/applyAplicar la carga inicial del mapeoFT-PLT-09 · Carga masiva de configuración de plantillas con…
API-01-017POST /api/v2/rules/plansMantener una regla de mapeo plantilla ↔ categoríaFT-PLT-07 · Reglas de atributos
API-02-030GET /api/v2/workflow/config/{type}Leer el porcentaje de la muestra de revisión por negocio (SWITCHES del motor)FT-FLU-01 · Motor de estados configurable con dos carreteras y reglas…
API-02-031POST /api/v2/workflow/config/{type}/plansCambiar el porcentaje de la muestra de revisiónFT-FLU-01 · Motor de estados configurable con dos carreteras y reglas…

6. Eventos

Publica

EventoCuándoQuién lo consume
catalog.product.changed/CLASSIFICATION_CHANGEDEl agente asigna la categoría al enviar, el seller la elige o Category la confirma o la cambiaFT-ACT-05, FT-ACT-06, FT-CAT-05, FT-IA-02, FT-IA-04
catalog.product.changed/TASK_CHANGEDSe abre o se cierra la tarea CategoryFT-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-07, FT-PRD-08, FT-RAC-02, FT-RAC-03, FT-RAC-04, FT-RAC-05, FT-RAC-06
catalog.product.changed/STATUS_CHANGEDAl cerrar Category ya no queda otra tarea que bloquee y el producto pasa a AprobadoFT-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.publication/PUBLICATION_REQUESTEDEl producto queda Aprobado y se pide publicar en los canales de su negocioFT-CAT-05, FT-CAT-06, FT-INT-01, FT-INT-02, FT-INT-05, FT-INT-07, FT-PLT-08, FT-PRD-05, FT-RAC-03

Consume

EventoPara quéQuién lo publica
catalog.governance.changed/RULE_CHANGEDMS-02 refresca su caché del mapeo plantilla ↔ categoríaFT-CAT-04, FT-PLT-07, FT-REF-02

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_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
categoriesMS-01Cada categoría web con su lugar en el árbol y su estado.lee
governance_rulesMS-01Reglas de captura y clasificación: marcas por plantilla, grupo de artículo a plantilla, alcance del proveedor y lista negra de Marketplace.lee
ai_configMS-15Qué modelo atiende cada tarea y con qué umbral.lee
product_reference_tablesMS-02Configuración del motor de estados y del matching: transiciones, estados externos y pesos.lee

8. Historias que cubre

HistoriaPrioridadCómo la cubre
FT-CAT-03·H1 · Elegir la categoría de un producto nuevo buscando o navegando el árbolP1flujo «El seller elige la categoría en el árbol»; API-01-035, API-02-045
FT-CAT-03·H2 · Que un agente calcule la categoría web al terminar la capturaP1flujo «Al enviar, el agente calcula la categoría»; API-01-205, API-15-002, API-06-006
FT-CAT-03·H3 · Mantener el mapeo plantilla ↔ taxonomía con una carga inicialP1flujo «Mantener el mapeo plantilla ↔ categoría»; API-01-017
FT-CAT-03·H4 · Avanzar aunque no exista una categoría adecuada, sin ticketP1flujo «El seller elige la categoría en el árbol»
FT-CAT-03·H5 · Revisar la categoría asignada y un porcentaje de lo asignado por proveedor o IAP2pasos 1, 3, 5, 6, 7, 8, 9, 10; API-02-030, API-02-031
FT-CAT-03·H6 · Ligar productos sólo a hojas y en el padreP2flujo «El seller elige la categoría en el árbol»; API-02-016
FT-CAT-03·H7 · Controlar los productos en dos categorías (pP3API-02-016
FT-CAT-03·H8 · Categorías restringidasP2flujo «El seller elige la categoría en el árbol»; API-01-036

9. Decisiones de esta épica

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

  • D-CAT-03-1. La categoría no es un estado. El agente la calcula al enviar la captura, antes del score y del SKU: primero con el mapeo de la plantilla en Catálogo y, si no hay mapeo, con la sugerencia de la IA de MS-15. Queda marcada como automática, con su fuente y su confianza. Por qué: Es lo que acordó el taller: categoría calculada por mapeo tras capturar todo, sin estado propio. Se apoya en DEC-25, RN-CAT-07, RN-CAT-08.
  • D-CAT-03-2. Un producto no se aprueba sin al menos una categoría web que sea hoja y esté publicada. Por qué: Sin categoría no se ve: 23 mil productos sin categoría tumbaron los visibles de un seller. Conserva lo que hoy exige la etapa Category de P360. Se apoya en PD-22, RF-PUB-06, RN-PUB-01.
  • D-CAT-03-3. Se conserva la tarea Category, pero sólo se abre al aprobar QA cuando hace falta: confianza bajo el umbral, plantilla sin mapeo, categoría elegida fuera del mapeo, categoría restringida o producto en la muestra de revisión (por negocio; arranca en 5 %). Mientras está abierta, bloquea el Aprobado. Por qué: Revisar todo repetiría el cuello de botella de hoy; no revisar nada deja pasar errores de la IA. La muestra cumple «revisar un porcentaje». Se apoya en P-37, PEN-40.
  • D-CAT-03-4. El mapeo plantilla ↔ categoría web es una regla de clasificación de Catálogo (tipo nuevo en governance_rules), con carga inicial para todas las categorías base; MS-02 la consulta con caché y no la copia. Por qué: Plantillas, categorías y reglas de clasificación ya son de Catálogo; el mapeo hoy no existe y nace vacío. Se apoya en RF-CAT-05, ADR-12.
  • D-CAT-03-5. Sólo hojas y sólo en el padre: la variante hereda la categoría. Un producto puede tener una categoría por sitio (por ejemplo, Liverpool y Suburbia); una segunda en el mismo sitio sólo con permiso de Category. Desligar borra sólo la relación. Por qué: Paridad con P360 y control central de la doble categoría que pidió el taller. Se apoya en PEN-43, DMS-36.
  • D-CAT-03-6. Si ninguna categoría sirve, el seller no se detiene: deja su propuesta en texto y se abre Category, que asigna una existente o pide la nueva en Catálogo (FT-CAT-01). Sin tickets. Por qué: Hoy se levanta un ticket y el producto espera; la tarea deja rastro y no frena la captura. Se apoya en PEN-15, DEC-27.
  • D-CAT-03-7. Una categoría restringida trae en Catálogo sus documentos, sus requisitos y si bloquea o avisa; al elegirla, el plan los muestra y el candado de publicación no deja aprobar sin cumplirlos. Por qué: Evita publicar y retirar después productos como medicamentos con receta. Se apoya en FT-CAT-01, RF-CAL-05.
  • D-CAT-03-8. El umbral de confianza de la categoría vive en la configuración de MS-15 y el porcentaje de la muestra, en la configuración del motor de MS-02 (SWITCHES). Por qué: Cada modelo de IA califica su resultado con el umbral de su tarea; la muestra es una regla de flujo, no de IA. Se apoya en PEN-40, DUD-35.

Qué falta decidir

IDQué falta
PD-22Ratificar con Category y Publicación que no se aprueba sin categoría.

También siguen abiertos: PEN-40, Confirmar quién revisa y qué porcentaje de lo asignado por proveedor o IA (aquí arranca en 5 %); PEN-15, Definir cómo se crea una categoría nueva cuando ninguna sirve; PEN-43, Fijar la regla de homologación de la doble categoría; PEN-41, Medir el parecido entre la taxonomía de plantillas y el árbol web, que sostiene el mapeo; PEN-130, Confirmar si la «categoría» que se elige para la carga masiva es la del árbol web.

Fuentes

  1. [D] trazabilidad/features/FT-CAT-03-categorizacion-de-productos.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.