From 9d99f2387b3eac06bef25866b1ddd563b0343d55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cau=C3=AA=20Faleiros?= Date: Fri, 28 Aug 2026 13:14:21 -0300 Subject: [PATCH] perf: limit cut plan to active orders --- backend/services/productionOrderService.js | 4 ++++ src/dataService.ts | 3 ++- src/pages/Cutting.tsx | 4 ++-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/backend/services/productionOrderService.js b/backend/services/productionOrderService.js index 18119c9..3e3fc8a 100644 --- a/backend/services/productionOrderService.js +++ b/backend/services/productionOrderService.js @@ -884,6 +884,10 @@ const listProductionOrders = async (filters = {}) => { )`); } + if (filters.activeOnly === 'true') { + where.push(`po.status IN ('open', 'cutting', 'sewing', 'review', 'in_progress')`); + } + const result = await pool.query(` ${baseProductionOrderSelect} ${where.length ? `WHERE ${where.join(' AND ')}` : ''} diff --git a/src/dataService.ts b/src/dataService.ts index 69a8873..9463d89 100644 --- a/src/dataService.ts +++ b/src/dataService.ts @@ -222,12 +222,13 @@ export const downloadDatabaseDiagnostic = async (): Promise => { export const fetchProductionOrders = async ( dateRange: DateRange, - filters?: { search?: string }, + filters?: { search?: string; activeOnly?: boolean }, options?: CacheOptions ): Promise => { const params = buildDateRangeParams(dateRange); const search = filters?.search?.trim(); if (search) params.set('search', search); + if (filters?.activeOnly) params.set('activeOnly', 'true'); const path = `/production-orders?${params.toString()}`; return getCachedAnalytics(path, async () => { diff --git a/src/pages/Cutting.tsx b/src/pages/Cutting.tsx index 009fea6..b7ccbaf 100644 --- a/src/pages/Cutting.tsx +++ b/src/pages/Cutting.tsx @@ -239,7 +239,7 @@ const Cutting = () => { setIsLoading(true); const [productData, productionOrderData, compositionData, stockData, supplySummary] = await Promise.all([ fetchProductAnalytics(dateRange), - fetchProductionOrders(allProductionOrdersRange), + fetchProductionOrders(allProductionOrdersRange, { activeOnly: true }), fetchProductCompositions(), fetchStock(), fetchSupplySummary() @@ -794,7 +794,7 @@ const Cutting = () => { source: 'cut_plan' }); - const refreshedOrders = await fetchProductionOrders(allProductionOrdersRange, undefined, { force: true }); + const refreshedOrders = await fetchProductionOrders(allProductionOrdersRange, { activeOnly: true }, { force: true }); setProductionOrders(refreshedOrders.orders); setGenerationMessage(`${result.plan?.number || 'Plano'} criado com ${result.created.length} OPs${result.skipped.length ? ` · ${result.skipped.length} já existiam abertas` : ''}.`); setIsOrderPreviewOpen(false);