feat(ecommerce): facetas reales de Meilisearch en el sidebar del catalogo

Fase 3b (ultima) de ADR 0006 Etapa 2: los conteos de categoria/marca/edad
del sidebar de /catalog dejan de ser un snapshot client-side fijo. Ahora
se refetchean en vivo contra /api/search en cada cambio de filtro (query
debounced 300ms), tres llamadas paralelas -- una por dimension, cada una
omitiendo su propio filtro para preservar el patron Amazon de "cuantos
resultados habria si eligiera este otro valor".

- catalog-client.tsx: useMemo client-side originales pasan a ser fallback
  (mock/shopify sin searchWithFacets, o cuando la categoria activa es un
  grupo raiz sintetico que Meilisearch no puede filtrar).
- ProductFilters gana `limit` opcional; /api/search y el provider medusa
  lo reenvian -- las llamadas de solo-conteo piden limit=0 para no
  rehidratar precios de productos que no se van a mostrar.
This commit is contained in:
devops committed 2026-08-26 22:53:49 -05:00
1 parent 609fc19252
commit 83d448b282
4 files changed
+106 -6

No files matched your search

@@ -473,6 +473,6 @@ export const medusaCatalogProvider: CatalogProvider = {
},
async searchWithFacets(filters) {
return fetchWithFacets(filters);
return fetchWithFacets(filters, filters?.limit ?? 24);
},
};
@@ -38,6 +38,10 @@ export interface ProductFilters {
ageRange?: string;
minPrice?: number;
maxPrice?: number;
// Solo lo usa searchWithFacets -- limit=0 pide facetDistribution/count
// sin rehidratar precios de productos que no se van a mostrar (ver
// sidebar de facetas en catalog-client.tsx).
limit?: number;
}
export interface Category {