1.6 KiB
1.6 KiB
Arquitectura — INVENTORY-OPT
Problema
La pantalla admin de inventario no escala a 10k+ productos porque hoy:
- pide
productsApi.list(limit=100) - por cada producto hace
getVariants - por cada fila hace
getAvailability - por cada fila hace
getVariantPrice
Eso introduce N+1 HTTP + N+1 SQL y además no tiene paginación real del inventario.
Diseño propuesto
1) Nuevo endpoint backend optimizado
Crear GET /inventory/admin/overview en el módulo inventory.
Query params:
qfilterlimitoffset
Respuesta:
items[]con fila ya enriquecida (producto + variante + stock + precio + caducidad)totalstatscon conteos globales (inStock,lowStock,outOfStock)
2) Query única paginada
La query leerá directamente:
catalog_productscatalog_product_variantsinventory_stockpricing_variant_prices
Con esto evitamos las múltiples rondas actuales desde el admin.
3) Filtros server-side
Mover al backend los filtros ya visibles en UI:
allin_stocklow_stockout_of_stockexpiringlow_margin
4) UI admin
Actualizar project/apps/admin/src/app/(dashboard)/inventory/page.tsx para:
- consumir el nuevo endpoint
- usar paginación real
- mantener búsqueda debounced
- mantener filtros existentes
- evitar llamadas por fila
No entra
- Refactor de módulos no relacionados
- Reescritura de pricing o inventory core
- Cambios en TPV/storefront
Validación
- typecheck backend/admin
- build backend/admin
- verify.sh
- prueba funcional manual de búsqueda/filtros/paginación