Spaces:
Paused
Paused
Update modules/cost_risk_analyzer.py
Browse files- modules/cost_risk_analyzer.py +10 -23
modules/cost_risk_analyzer.py
CHANGED
@@ -637,49 +637,36 @@ class CostRiskAnalyzer:
|
|
637 |
costs : Dict[str, Any]
|
638 |
بيانات التكاليف
|
639 |
|
640 |
-
def _analyze_cost_overrun_risks(self, costs: Dict[str, Dict[str, float]]) -> List[Dict[str, Any]]:
|
641 |
-
"""
|
642 |
-
تحليل مخاطر تجاوز التكاليف.
|
643 |
-
|
644 |
-
المعاملات:
|
645 |
-
----------
|
646 |
-
costs : Dict[str, Dict[str, float]]
|
647 |
-
قاموس يحتوي على التكاليف الفعلية والمخططة للمشروع.
|
648 |
-
|
649 |
المخرجات:
|
650 |
--------
|
651 |
List[Dict[str, Any]]
|
652 |
-
قائمة مخاطر تجاوز
|
653 |
"""
|
654 |
# استخراج التكاليف الفعلية والمخططة
|
655 |
actual_costs = costs.get("actual", {})
|
656 |
planned_costs = costs.get("planned", {})
|
657 |
-
|
658 |
overrun_risks = []
|
659 |
-
|
660 |
if not actual_costs or not planned_costs:
|
661 |
return overrun_risks
|
662 |
-
|
663 |
# تحليل الانحرافات لكل فئة وتحديد المخاطر
|
664 |
-
for category in set(actual_costs.keys())
|
665 |
actual = actual_costs.get(category, 0)
|
666 |
planned = planned_costs.get(category, 0)
|
667 |
-
|
668 |
if planned > 0:
|
669 |
deviation_percentage = ((actual - planned) / planned) * 100
|
670 |
-
|
671 |
# إذا كان هناك تجاوز، أضف المخاطرة
|
672 |
if deviation_percentage > 5:
|
673 |
risk_level = "مرتفع" if deviation_percentage > 20 else "متوسط" if deviation_percentage > 10 else "منخفض"
|
674 |
-
|
675 |
overrun_risks.append({
|
676 |
"category": category,
|
677 |
"planned": planned,
|
678 |
"actual": actual,
|
679 |
-
"deviation_percentage":
|
680 |
"risk_level": risk_level,
|
681 |
-
"impact": "تأثير على هامش الربح وزيادة التكاليف
|
682 |
-
"mitigation": "مراجعة الميزانية وإيجاد بدائل أقل تكلفة"
|
683 |
-
})
|
684 |
-
|
685 |
-
return overrun_risks
|
|
|
637 |
costs : Dict[str, Any]
|
638 |
بيانات التكاليف
|
639 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
640 |
المخرجات:
|
641 |
--------
|
642 |
List[Dict[str, Any]]
|
643 |
+
قائمة مخاطر تجاوز التكاليف
|
644 |
"""
|
645 |
# استخراج التكاليف الفعلية والمخططة
|
646 |
actual_costs = costs.get("actual", {})
|
647 |
planned_costs = costs.get("planned", {})
|
648 |
+
|
649 |
overrun_risks = []
|
650 |
+
|
651 |
if not actual_costs or not planned_costs:
|
652 |
return overrun_risks
|
653 |
+
|
654 |
# تحليل الانحرافات لكل فئة وتحديد المخاطر
|
655 |
+
for category in set(list(actual_costs.keys()) + list(planned_costs.keys())):
|
656 |
actual = actual_costs.get(category, 0)
|
657 |
planned = planned_costs.get(category, 0)
|
658 |
+
|
659 |
if planned > 0:
|
660 |
deviation_percentage = ((actual - planned) / planned) * 100
|
661 |
+
|
662 |
# إذا كان هناك تجاوز، أضف المخاطرة
|
663 |
if deviation_percentage > 5:
|
664 |
risk_level = "مرتفع" if deviation_percentage > 20 else "متوسط" if deviation_percentage > 10 else "منخفض"
|
665 |
+
|
666 |
overrun_risks.append({
|
667 |
"category": category,
|
668 |
"planned": planned,
|
669 |
"actual": actual,
|
670 |
+
"deviation_percentage": deviation_percentage,
|
671 |
"risk_level": risk_level,
|
672 |
+
"impact": "تأثير على هامش الربح وزيادة التكاليف ال
|
|
|
|
|
|
|
|