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