Apply gemini suggested calculate improvements

This commit is contained in:
2025-02-10 15:20:22 -05:00
parent 09f7103472
commit 90379386d6
8 changed files with 211 additions and 250 deletions

View File

@@ -13,6 +13,7 @@ async function calculateProductMetrics(startTime, totalProducts, processedCount
const connection = await getConnection();
let success = false;
let processedOrders = 0;
let myProcessedProducts = 0; // Track products processed *within this module*
const BATCH_SIZE = 5000;
try {
@@ -24,24 +25,10 @@ async function calculateProductMetrics(startTime, totalProducts, processedCount
`);
const lastCalculationTime = lastCalc[0]?.last_calculation_timestamp || '1970-01-01';
// Get total product count if not provided
if (!totalProducts) {
const [productCount] = await connection.query(`
SELECT COUNT(DISTINCT p.pid) as count
FROM products p
LEFT JOIN orders o ON p.pid = o.pid AND o.updated > ?
LEFT JOIN purchase_orders po ON p.pid = po.pid AND po.updated > ?
WHERE p.updated > ?
OR o.pid IS NOT NULL
OR po.pid IS NOT NULL
`, [lastCalculationTime, lastCalculationTime, lastCalculationTime]);
totalProducts = productCount[0].count;
}
if (totalProducts === 0) {
console.log('No products need updating');
return {
processedProducts: 0,
processedProducts: myProcessedProducts,
processedOrders: 0,
processedPurchaseOrders: 0,
success: true
@@ -69,7 +56,7 @@ async function calculateProductMetrics(startTime, totalProducts, processedCount
}
});
return {
processedProducts: processedCount,
processedProducts: myProcessedProducts,
processedOrders,
processedPurchaseOrders: 0,
success
@@ -290,6 +277,7 @@ async function calculateProductMetrics(startTime, totalProducts, processedCount
lastPid = batch[batch.length - 1].pid;
processedCount += batch.length;
myProcessedProducts += batch.length; // Increment the *module's* count
outputProgress({
status: 'running',
@@ -361,12 +349,12 @@ async function calculateProductMetrics(startTime, totalProducts, processedCount
outputProgress({
status: 'running',
operation: 'Starting product time aggregates calculation',
current: processedCount || 0,
total: totalProducts || 0,
current: processedCount,
total: totalProducts,
elapsed: formatElapsedTime(startTime),
remaining: estimateRemaining(startTime, processedCount || 0, totalProducts || 0),
rate: calculateRate(startTime, processedCount || 0),
percentage: (((processedCount || 0) / (totalProducts || 1)) * 100).toFixed(1),
remaining: estimateRemaining(startTime, processedCount, totalProducts),
rate: calculateRate(startTime, processedCount),
percentage: (((processedCount) / (totalProducts || 1)) * 100).toFixed(1),
timing: {
start_time: new Date(startTime).toISOString(),
end_time: new Date().toISOString(),
@@ -428,12 +416,12 @@ async function calculateProductMetrics(startTime, totalProducts, processedCount
outputProgress({
status: 'running',
operation: 'Product time aggregates calculated',
current: processedCount || 0,
total: totalProducts || 0,
current: processedCount,
total: totalProducts,
elapsed: formatElapsedTime(startTime),
remaining: estimateRemaining(startTime, processedCount || 0, totalProducts || 0),
rate: calculateRate(startTime, processedCount || 0),
percentage: (((processedCount || 0) / (totalProducts || 1)) * 100).toFixed(1),
remaining: estimateRemaining(startTime, processedCount, totalProducts),
rate: calculateRate(startTime, processedCount),
percentage: (((processedCount) / (totalProducts || 1)) * 100).toFixed(1),
timing: {
start_time: new Date(startTime).toISOString(),
end_time: new Date().toISOString(),
@@ -445,12 +433,12 @@ async function calculateProductMetrics(startTime, totalProducts, processedCount
outputProgress({
status: 'running',
operation: 'Skipping product time aggregates calculation',
current: processedCount || 0,
total: totalProducts || 0,
current: processedCount,
total: totalProducts,
elapsed: formatElapsedTime(startTime),
remaining: estimateRemaining(startTime, processedCount || 0, totalProducts || 0),
rate: calculateRate(startTime, processedCount || 0),
percentage: (((processedCount || 0) / (totalProducts || 1)) * 100).toFixed(1),
remaining: estimateRemaining(startTime, processedCount, totalProducts),
rate: calculateRate(startTime, processedCount),
percentage: (((processedCount) / (totalProducts || 1)) * 100).toFixed(1),
timing: {
start_time: new Date(startTime).toISOString(),
end_time: new Date().toISOString(),
@@ -479,7 +467,7 @@ async function calculateProductMetrics(startTime, totalProducts, processedCount
if (isCancelled) return {
processedProducts: processedCount,
processedOrders,
processedPurchaseOrders: 0, // This module doesn't process POs
processedPurchaseOrders: 0,
success
};
@@ -540,7 +528,7 @@ async function calculateProductMetrics(startTime, totalProducts, processedCount
if (isCancelled) return {
processedProducts: processedCount,
processedOrders,
processedPurchaseOrders: 0, // This module doesn't process POs
processedPurchaseOrders: 0,
success
};
@@ -620,9 +608,9 @@ async function calculateProductMetrics(startTime, totalProducts, processedCount
`);
return {
processedProducts: processedCount || 0,
processedProducts: processedCount,
processedOrders: processedOrders || 0,
processedPurchaseOrders: 0, // This module doesn't process POs
processedPurchaseOrders: 0,
success
};