docs(adr): marcar ADR 0006 como aceptada, nota de implementación
Aprobada tras el diagnóstico de memoria del host (swap saturado resuelto, ~500-700MiB liberados al desactivar monitoring). Agrega nota de implementación con 3 desviaciones reales encontradas al verificar el código fuente del plugin en el tag v1.4.1 antes de escribir código: no hace falta subscriber propio (el plugin trae los suyos), las rutas del plugin no devuelven facetDistribution (se agrega una ruta Store API propia), y se conecta vía plugins: no modules:. Ninguna cambia la decisión, solo el cómo.
This commit is contained in:
1 parent
31782a2838
commit
c243f02ec4
1 file changed
+42
-1
@@ -1,6 +1,6 @@
|
||||
# ADR 0006 — Motor de búsqueda y filtros facetados (Fase 5, Etapa 3)
|
||||
|
||||
**Estado:** propuesta — pendiente de aprobación antes de Etapa 2 (implementación)
|
||||
**Estado:** aceptada — Etapa 2 en implementación (aprobada 2026-08-26 tras diagnóstico de memoria del host)
|
||||
**Fecha:** 2026-08-25
|
||||
|
||||
## Contexto
|
||||
@@ -254,3 +254,44 @@ Medusa.
|
||||
— no hay migración de datos que deshacer, porque Meilisearch nunca
|
||||
es la fuente de verdad, solo una copia de solo lectura indexada
|
||||
desde Medusa.
|
||||
|
||||
## Nota de implementación (2026-08-26, antes de escribir código de Etapa 2)
|
||||
|
||||
Antes de tocar código se verificó el código fuente real de
|
||||
`@rokmohar/medusa-plugin-meilisearch` en el tag exacto `v1.4.1`
|
||||
(`github.com/rokmohar/medusa-plugin-meilisearch`), no su README
|
||||
genérico ni memoria de entrenamiento — misma disciplina que ya destapó
|
||||
el bug de `+categories` en `/store/products`. Aparecieron tres
|
||||
desviaciones reales respecto al diseño de §4/§5 de este ADR:
|
||||
|
||||
1. **No se escribe un subscriber nuevo.** El plugin trae sus propios
|
||||
subscribers (`meilisearch-product-upsert.ts`,
|
||||
`meilisearch-category-upsert.ts`, variantes/colección/inventario),
|
||||
auto-registrados al instalar el paquete — el propio README dice
|
||||
*"You don't need custom subscribers anymore, you can remove them."*
|
||||
Escribir `sync-search-index.ts` como describe §4 causaría doble
|
||||
indexado. La escucha de `product-category.*` que pedía §4 ya viene
|
||||
incluida en los subscribers del plugin.
|
||||
2. **Las rutas Store API del plugin no devuelven `facetDistribution`**,
|
||||
pese a que §5 asume que sí. El servicio interno
|
||||
(`MeiliSearchService.search()`) sí puede pedirlo vía
|
||||
`additionalOptions: { facets: [...] }`, pero las rutas
|
||||
empaquetadas nunca lo piden ni lo reenvían. Se agrega una ruta
|
||||
Store API propia (`src/api/store/search/route.ts`) que resuelve el
|
||||
servicio del plugin desde el container y arma
|
||||
`{ products, facetDistribution }`. Consecuencia positiva no
|
||||
buscada: Meilisearch queda 100% `ClusterIP`-only, sin Ingress, sin
|
||||
key pública ni ruta de red navegador→Meilisearch — todo pasa por
|
||||
Medusa.
|
||||
3. **El plugin se conecta vía un array `plugins:` nuevo en
|
||||
`medusa-config.ts`**, no otra entrada en `modules:` (el único
|
||||
precedente en este repo, el file-provider S3, usa `modules:`), y
|
||||
usa nombres de env var propios (`MEILISEARCH_HOST`/
|
||||
`MEILISEARCH_API_KEY`, leídos por el plugin) distintos del env var
|
||||
del servidor Meilisearch en sí (`MEILI_MASTER_KEY`, leído por el
|
||||
contenedor `getmeili/meilisearch`) — mismo valor, dos nombres de
|
||||
secret.
|
||||
|
||||
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).
|
||||
Reference in new issue
Block a user