EGYADMIN commited on
Commit
109b8cd
·
verified ·
1 Parent(s): 842447f

Update modules/cost_risk_analyzer.py

Browse files
Files changed (1) hide show
  1. 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()).union(planned_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": round(deviation_percentage, 2),
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": "تأثير على هامش الربح وزيادة التكاليف ال