fix: depleted items urgency based on usesPerMonth only (not recency)

This commit is contained in:
dadaloop82
2026-05-20 13:46:00 +00:00
parent ccc2f8907d
commit 149621651d
+18 -41
View File
@@ -7630,48 +7630,25 @@ function smartShopping(PDO $db): void {
} }
if ($coveredByEquivalent) continue; if ($coveredByEquivalent) continue;
if ($isFrequent && $isRecent && $buyCount >= 2) { // For DEPLETED products: recency is misleading — the product may not have been
// Frequently used, recently active, AND bought multiple times → critical // "used recently" precisely because it ran out. Base urgency on usage rate only.
$urgency = 'critical'; $reasons[] = 'Esaurito';
$reasons[] = 'Esaurito'; if ($isFrequent && $useCount >= 5) {
$score += 100; $urgency = 'critical'; $score += 120;
if ($useCount >= 5) { $score += 20; $reasons[] = "Uso frequente ({$useCount}x)"; } $reasons[] = "Uso frequente ({$useCount}x)";
} elseif ($isFrequent && $isRecent && $buyCount == 1 && $useCount >= 3) { } elseif ($isFrequent && $useCount >= 2) {
// Bought once but used ≥3 times → proven consumption pattern → high $urgency = 'critical'; $score += 100;
$urgency = 'high'; } elseif ($isFrequent) {
$reasons[] = 'Esaurito'; // usesPerMonth >= 1.5 but few recorded uses (new product) → high
$score += 75; $urgency = 'high'; $score += 75;
if ($useCount >= 5) { $score += 10; $reasons[] = "Uso frequente ({$useCount}x)"; } } elseif ($isRegular && ($useCount >= 3 || $buyCount >= 2)) {
} elseif ($isFrequent && $isRecent && $buyCount == 1) { $urgency = 'high'; $score += 65;
// Frequent use, bought once, <3 uses — not yet proven → medium } elseif ($isRegular) {
$urgency = 'medium'; $urgency = 'medium'; $score += 45;
$reasons[] = 'Esaurito'; } elseif ($useCount >= 2 || $buyCount >= 2) {
$score += 45; $urgency = 'low'; $score += 30;
} elseif ($isRegular && $isRecent && ($useCount >= 3 || $buyCount >= 2)) {
// Regularly used, recently active → high
$urgency = 'high';
$reasons[] = 'Esaurito';
$score += 70;
} elseif ($isRecent && $buyCount >= 2) {
// At least bought a couple times recently → low
$urgency = 'low';
$reasons[] = 'Esaurito';
$score += 30;
} else { } else {
// Product is depleted. Use internal history variables to set urgency: $urgency = 'low'; $score += 10;
// bought ≥2 times → medium (proven restock item), once → low (might want it),
// never bought (manually added) → low.
$reasons[] = 'Esaurito';
if ($buyCount >= 2) {
$urgency = 'medium';
$score += 45;
} elseif ($buyCount >= 1 || $useCount >= 2) {
$urgency = 'low';
$score += 25;
} else {
$urgency = 'low';
$score += 10;
}
} }
} }