51 lines
2.1 KiB
Python
51 lines
2.1 KiB
Python
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": ["ژانویه", "فوریه", "مارس", "آوریل", "می", "ژوئن"],
|
|
}
|