Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | import type { Policy, Evaluation } from './types'; // سياسة افتراضية export const DefaultPolicy: Policy = { version: '1.0.0', cooldownMs: 1500, params: { rateStep: 0.1, raiseStep: 5, }, }; // اختيار الإجراء بناءً على التقييم export function chooseAction(evaln: Evaluation, policy: Policy) { // CRITICAL بسبب ERROR → ROLLBACK if (evaln.severity === 'CRITICAL') { if (evaln.reasons?.some((r) => r.includes('ERROR'))) { return { id: crypto.randomUUID(), kind: 'ROLLBACK' as const }; } // CRITICAL بسبب LATENCY → ENABLE_CACHE if (evaln.reasons?.some((r) => r.includes('LATENCY'))) { return { id: crypto.randomUUID(), kind: 'ENABLE_CACHE' as const }; } // افتراضيًا في الكريتيكال نعمل ROLLBACK return { id: crypto.randomUUID(), kind: 'ROLLBACK' as const }; } // WARNING → تقليل الريت بنصف الـ step if (evaln.severity === 'WARNING') { return { id: crypto.randomUUID(), kind: 'ADJUST_RATE' as const, args: { delta: -DefaultPolicy.params.rateStep / 2 }, }; } // NORMAL + ثقة عالية → RAISE_LIMIT if (evaln.severity === 'NORMAL' && (evaln.confidence ?? 0) >= 0.8) { return { id: crypto.randomUUID(), kind: 'RAISE_LIMIT' as const, args: { delta: DefaultPolicy.params.raiseStep }, }; } // لا إجراء return null; } |