lmcuong199 commited on
Commit
1817ee4
Β·
verified Β·
1 Parent(s): 6f8ca8e

Create impact_module.py

Browse files
Files changed (1) hide show
  1. impact_module.py +84 -0
impact_module.py ADDED
@@ -0,0 +1,84 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Impact Estimation β€” rule-based (khΓ΄ng cΓ³ AI model nΓ o lΓ m được cΓ‘i nΓ y)
2
+ # Logic dα»±a trΓͺn cΓ‘c cΓ΄ng thα»©c mΓ΄i trường chuαΊ©n cα»§a UNEP vΓ  WHO
3
+
4
+ def estimate_impact(site_name: str, visitor_count: int, combined_risk: float) -> str:
5
+
6
+ # ── TΓ­nh toΓ‘n cΖ‘ bαΊ£n ───────────────────────────────────────────────
7
+ waste_total = visitor_count * 0.5 # kg/day (UNEP average: 0.5kg/tourist/day)
8
+ unmanaged = waste_total * combined_risk # kg/day khΓ΄ng được xα»­ lΓ½ Δ‘ΓΊng
9
+ water_bod = round(unmanaged * 0.15, 2) # kg BOD/day (WHO standard)
10
+ co2 = round(unmanaged * 2.5, 2) if combined_risk > 0.5 else 0.0 # kg CO2 nαΊΏu Δ‘α»‘t rΓ‘c
11
+ bad_cost = round(unmanaged * 1.5, 1) # USD/day (cleanup + fine + health)
12
+ good_cost = round(waste_total * 0.4, 1) # USD/day (proper system)
13
+ daily_save = round(max(bad_cost - good_cost, 0), 1)
14
+ annual_save = int(daily_save * 365)
15
+
16
+ # ── Quy Δ‘α»•i sang Δ‘Ζ‘n vα»‹ dα»… hiểu ───────────────────────────────────
17
+ plastic_bags = int(unmanaged * 50) # 1kg rΓ‘c β‰ˆ 50 tΓΊi nilon
18
+ households = round(unmanaged / 2.0, 1) # 1 hα»™ gia Δ‘Γ¬nh β‰ˆ 2kg rΓ‘c/ngΓ y
19
+ car_km = int(co2 * 4) # 1km xe hΖ‘i β‰ˆ 0.25kg CO2
20
+ profit_pct = round((annual_save / max(visitor_count * 365 * 15, 1)) * 100, 1)
21
+
22
+ # ── Bar chart text ─────────────────────────────────────────────────
23
+ bad_bar = "β–ˆ" * min(int(bad_cost / 3), 20)
24
+ good_bar = "β–ˆ" * min(int(good_cost / 3), 20)
25
+ save_bar = "β–ˆ" * min(int(daily_save / 3), 20)
26
+
27
+ # ── Risk level ─────────────────────────────────────────────────────
28
+ if combined_risk > 0.6:
29
+ level = "πŸ”΄ HIGH"
30
+ urgency = "Immediate action required. Environmental damage is occurring daily."
31
+ elif combined_risk > 0.3:
32
+ level = "🟑 MEDIUM"
33
+ urgency = "Improvement needed. Costs and risks are accumulating."
34
+ else:
35
+ level = "🟒 LOW"
36
+ urgency = "Good practices in place. Focus on maintaining and improving."
37
+
38
+ output = f"""## 🌍 Impact Estimation β€” {site_name}
39
+
40
+ **Risk Level: {level}** | Risk Score: {combined_risk:.2f} | Visitors: {visitor_count}/day
41
+
42
+ > {urgency}
43
+
44
+ ---
45
+
46
+ ### 🌊 Environmental Impact (Current Practice)
47
+
48
+ | Indicator | Value | Real-world Equivalent |
49
+ |-----------|-------|-----------------------|
50
+ | Total waste generated | {waste_total:.1f} kg/day | {int(waste_total * 50)} plastic bags/day |
51
+ | Unmanaged waste | {unmanaged:.1f} kg/day | Waste of {households} households/day |
52
+ | Water pollution (BOD) | {water_bod} kg/day | Affects {int(water_bod * 1000)} liters of clean water |
53
+ | COβ‚‚ from burning | {co2} kg/day | Like driving {car_km} km by car daily |
54
+
55
+ ---
56
+
57
+ ### πŸ’° Economic Impact
58
+
59
+ | Scenario | Daily Cost | Annual Cost |
60
+ |----------|-----------|------------|
61
+ | ❌ Current (poor management) | ${bad_cost} | ${bad_cost*365:,.0f} |
62
+ | βœ… Optimized (proper system) | ${good_cost} | ${good_cost*365:,.0f} |
63
+ | πŸ’š **Potential savings** | **${daily_save}/day** | **${annual_save:,}/year** |
64
+
65
+ > πŸ’‘ Saving **${annual_save:,}/year** = approximately **{profit_pct}% of estimated annual revenue**
66
+
67
+ ---
68
+
69
+ ### πŸ“Š Cost Comparison
70
+ ```
71
+ Current {bad_bar} ${bad_cost}/day
72
+ Optimized {good_bar} ${good_cost}/day
73
+ Savings {save_bar} ${daily_save}/day
74
+ ```
75
+
76
+ ---
77
+
78
+ ### πŸ’‘ If {site_name} improves waste management:
79
+ - Reduce unmanaged waste by **{combined_risk*100:.0f}%**
80
+ - Save **${annual_save:,} USD/year**
81
+ - Protect **{int(water_bod * 1000 * 365):,} liters** of clean water annually
82
+ - Avoid **{co2 * 365:.0f} kg COβ‚‚/year** from improper disposal
83
+ """
84
+ return output