Review an inventory low-stock threshold

src/low-stock-evaluator.tsTypeScript
@@ -0,0 +1,29 @@
1+export interface InventoryItem {
2+ sku: string;
3+ enabled: boolean;
4+ onHand: number;
5+ reserved: number;
6+ reorderPoint: number;
7+ lowAlertOpen: boolean;
8+}
9+
10+export interface LowStockAlerts {
11+ open(sku: string): Promise<void>;
12+ close(sku: string): Promise<void>;
13+}
14+
15+export async function evaluateLowStock(
16+ item: InventoryItem,
17+ alerts: LowStockAlerts,
18+): Promise<void> {
19+ if (item.onHand < item.reorderPoint) {
20+ if (!item.lowAlertOpen) {
21+ await alerts.open(item.sku);
22+ }
23+ return;
24+ }
25+
26+ if (item.lowAlertOpen) {
27+ await alerts.close(item.sku);
28+ }
29+}