Files
Ai/dashboard_data/cards/economic_overview.py
T

51 lines
2.1 KiB
Python
Raw Normal View History

2026-03-22 01:09:09 +03:30
from dashboard_data.card_utils import safe_number
def build_economic_overview(sensor_id: str, context: dict | None = None, ai_bundle: dict | None = None) -> dict:
sensor = (context or {}).get("sensor")
forecasts = (context or {}).get("forecasts", [])
if sensor is None:
return {"economicData": [], "chartSeries": [], "chartCategories": []}
water_cost = round(sum(max(0, safe_number(forecast.et0, 0) * 20) for forecast in forecasts[:6]))
fertilizer_need = round((safe_number(sensor.nitrogen, 0) + safe_number(sensor.phosphorus, 0) + safe_number(sensor.potassium, 0)) / 3)
revenue = round(max(1000, water_cost * 4.5))
return {
"economicData": [
{
"title": "هزینه آب",
"value": f"{water_cost}",
"subtitle": "این ماه",
"avatarIcon": "tabler-droplet",
"avatarColor": "primary",
},
{
"title": "صرفه‌جویی آب هوشمند",
"value": f"{round(water_cost * 0.18)}",
"subtitle": "۱۸٪ صرفه‌جویی شده",
"avatarIcon": "tabler-bulb",
"avatarColor": "success",
},
{
"title": "بازده سرمایه پلتفرم",
"value": "127%",
"subtitle": "نسبت به سال گذشته",
"avatarIcon": "tabler-chart-line",
"avatarColor": "info",
},
{
"title": "پیش‌بینی درآمد",
"value": f"{round(revenue / 1000)}k",
"subtitle": "این فصل",
"avatarIcon": "tabler-currency-euro",
"avatarColor": "success",
},
],
"chartSeries": [
{"name": "هزینه آب", "data": [max(1, round(water_cost / 6)) for _ in range(6)]},
{"name": "کود", "data": [max(1, round(fertilizer_need / 6)) for _ in range(6)]},
],
"chartCategories": ["ژانویه", "فوریه", "مارس", "آوریل", "می", "ژوئن"],
}