Merge fix/adr0006-nota-implementacion-2-gate-fase2 into main
Build and Push Docs Portal / Escaneo de Secretos (Gitleaks) (push) Successful in 20s
Build and Push Docs Portal / Construir y publicar Docs Portal (push) Successful in 4m2s

This commit is contained in:
devops committed 2026-08-26 17:12:13 -05:00
commit 72ae63f2e3
1 file changed
+33
@@ -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.