From 4afc63bdc63063b65fcb29da0e0ae61ca1df4d8d Mon Sep 17 00:00:00 2001 From: Cristian Felipe Cruz Buitron Date: Wed, 26 Aug 2026 17:12:10 -0500 Subject: [PATCH] docs(adr): nota de implementacion 2 -- hallazgos del gate en vivo de Fase 2 --- .../decisiones/0006-motor-busqueda-facetas.md | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/workloads/docs-portal/docs/decisiones/0006-motor-busqueda-facetas.md b/workloads/docs-portal/docs/decisiones/0006-motor-busqueda-facetas.md index 117db3a..4d0810d 100644 --- a/workloads/docs-portal/docs/decisiones/0006-motor-busqueda-facetas.md +++ b/workloads/docs-portal/docs/decisiones/0006-motor-busqueda-facetas.md @@ -295,3 +295,36 @@ desviaciones reales respecto al diseño de §4/§5 de este ADR: Ninguna de las tres cambia la decisión ni sus consecuencias — cambian el cómo, no el qué. Plan de implementación completo, fase por fase, en la sesión que aprobó esta Etapa 2 (2026-08-26). + +## Nota de implementación 2 (2026-08-26, gate en vivo de Fase 2) + +Dos bugs reales encontrados y corregidos durante el gate de +verificación en vivo (crear/editar productos, categoría y colección +reales y confirmar que llegan a Meilisearch), ambos con la misma causa +raíz: `variants.calculated_price` de Medusa exige `region_id` **y** +`currency_code` resueltos en el contexto de pricing de la consulta, y +ninguno de los dos caminos nuevos de este ADR pasa por el middleware +nativo (`setPricingContext`) que se lo da gratis a `/store/products`: + +1. El job de sync inicial del plugin (`sync-products.js`, corre una + vez al boot) hacía fallar el indexado de **todos** los productos + con `Method calculatePrices requires currency_code in the pricing + context` — las categorías sí indexaban bien (no llevan precio). + Arreglado indexando el precio crudo (`variants.prices`, sin + resolver promociones/reglas) en vez de `calculated_price` — alcanza + para el filtro/orden por precio de la búsqueda. +2. La ruta propia `/store/search` pegaba el mismo error al re-hidratar + productos vía `query.graph`. Pasar `region_id` solo no alcanzó; + hubo que resolver el `currency_code` real de la región con una + consulta adicional antes de armar el `QueryContext`. + +Confirmado en vivo, con el fix aplicado: búsqueda por texto, facetas +sobre las 27 unidades del catálogo real, y precio calculado correcto +(`calculated_amount`/`currency_code`) en la respuesta de +`/store/search`. También confirmado en vivo que los tres eventos que +el ADR original marcaba como "verificar, no asumir" — `product.*`, +`product-category.*` y **`product-collection.updated`** (el que tenía +un reporte público de no disparar siempre) — sí sincronizan de forma +confiable en esta combinación exacta (Medusa 2.18.0 + plugin 1.4.1), +propagando un rename de categoría/colección al documento indexado en +menos de 10 segundos.