Módulo Web Catálogo
Módulo Catálogo
Section titled “Módulo Catálogo”Objetivo
Section titled “Objetivo”Explorar catálogo comercial real de BoostAPI sin resolver negocio en frontend.
Rutas reales
Section titled “Rutas reales”/catalogo/catalogo/lead/:leadId
Contrato operativo
Section titled “Contrato operativo”- El backend es dueño de:
- precio efectivo
- precio público vs especial
- stock visible
- media final
- seller/agencia contextual
- Frontend:
- renderiza la UI actual
- usa
response.products - pagina con
pagination.nextItemsOffsetypagination.nextBundlesOffset - abre detalle con
GET /api/catalogo/products/:catalogId
Flujo web
Section titled “Flujo web”- La página protegida carga
contexty la primera página deproductsen modoquote. CatalogueClientconserva la UI actual y administra:- búsqueda real
- filtros por supercategoría/categoría
- scroll infinito
- modal de detalle
- carrito local visual
- La capa browser consume solo el BFF local:
/api/catalogo/context/api/catalogo/products/api/catalogo/products/:catalogId/api/catalogo/stock-preview
Reglas cerradas
Section titled “Reglas cerradas”- La grilla se renderiza con
products; frontend no mezclaitemsybundles. kindes metadata, no el eje principal de la UI.priceya viene resuelto y es el valor a mostrar.stock_display_valuees el valor a pintar.- Bundles ya usan el stock real calculado por backend.
- El stock afectado por el draft se sobrepone con
POST /api/catalogo/stock-preview. - El preview devuelve stock restante; el frontend mantiene el máximo editable como
cantidad actual + stock restante. - La fecha y el número junto al camión siguen hardcodeados en UI.
- No existe ya simulación de entrada
Default / Client / Edit.
Componentes clave
Section titled “Componentes clave”CatalogueClient: estado del módulo, caché en memoria, stock preview y orquestación.CatalogueHeader: shell visual existente para modo, seller, agencia y carrito.CatalogueControls: búsqueda, filtros y toggle de vista.ProductList: render grid/list e infinite scroll.ProductDetailModal: detalle on-demand porcatalogId.QuotationDrawer: permanece local/visual en esta fase.
