Files
Backend/docs/dashboard_card_service_map.md
2026-05-05 21:01:58 +03:30

6.2 KiB

نقشه سرویس کارت های داشبورد

این سند مرجع فشرده وضعیت واقعی کارت های داشبورد است؛ نه طراحی آینده.
تمرکز آن روی منبع داده واقعی، status فعلی، و semantics پاسخ در runtime است.

قانون runtime در برابر seed

  • داده seed / bootstrap / fixture مجاز است و باید فقط از مسیرهای seeding و bootstrap در دسترس بماند.
  • داده mock/sample/demo نباید در مسیر runtime سرویس، view یا adapter برای تولید پاسخ production-like استفاده شود.
  • اگر داده واقعی وجود ندارد، سرویس باید empty state یا failure contract صریح برگرداند، نه داده ساختگی موفق.

نقطه شروع فعلی

  • تجمیع اصلی کارت‌ها در dashboard/services.py داخل get_farm_dashboard_cards انجام می‌شود.
  • endpoint فعلی ارسال کارت‌ها در dashboard/views.py داخل FarmDashboardCardsView قرار دارد.
  • لیست کارت‌های معتبر در dashboard/defaults.py داخل VALID_CARD_IDS نگهداری می‌شود.

جمع‌بندی سریع

Card ID Status semantics منبع اصلی تابع/سرویس فعلی app داده توضیح
farmOverviewKpis implemented / transitional aggregator تجمیع چند سرویس _build_overview_kpis dashboard منبع واحد ندارد
farmWeatherCard partial provider/persisted آب و هوا get_farm_weather_card_data water نباید fallback ساختگی runtime داشته باشد
farmAlertsTracker implemented cached snapshot snapshot persisted get_alert_tracker_data farm_alerts live AI نیست
sensorValuesList implemented / transitional persisted sensor log سنسور 7-in-1 get_sensor_7_in_1_summary_data sensor_7_in_1 adoption کامل facade farm_data هنوز کامل نشده
sensorRadarChart implemented / transitional persisted sensor log سنسور 7-in-1 get_sensor_7_in_1_summary_data sensor_7_in_1 همان وضعیت
sensorComparisonChart implemented / transitional persisted sensor log سنسور 7-in-1 get_sensor_7_in_1_summary_data sensor_7_in_1 همان وضعیت
anomalyDetectionCard implemented / transitional derived from sensor logs سنسور 7-in-1 get_sensor_7_in_1_summary_data sensor_7_in_1 ownership نهایی anomalyها هنوز کامل یکدست نشده
farmAlertsTimeline partial persisted timeline هشدارها get_alert_timeline_data farm_alerts نباید fallback ساختگی runtime داشته باشد
waterNeedPrediction implemented / proxy-derived derived from persisted irrigation recommendation آبیاری get_water_need_prediction_data water facade در water است ولی business source در irrigation قرار دارد
harvestPredictionCard implemented / proxy-derived persisted AI-derived برداشت/عملکرد get_yield_harvest_summary_data yield_harvest از لاگ persisted می‌آید
yieldPredictionChart implemented / proxy-derived persisted AI-derived برداشت/عملکرد get_yield_harvest_summary_data yield_harvest از لاگ persisted می‌آید
soilMoistureHeatmap implemented / transitional persisted sensor log سنسور 7-in-1 get_sensor_7_in_1_summary_data sensor_7_in_1 facade نهایی همه خوانش‌ها را هنوز unify نکرده
ndviHealthCard disabled / partial not runtime-ready سلامت گیاه get_crop_health_summary_data crop_health نباید به‌عنوان کارت implemented کامل معرفی شود
recommendationsList implemented / transitional aggregator تجمیع پیشنهادها _build_recommendations_list dashboard از چند app کنار هم ساخته می‌شود
economicOverview implemented persisted/log-based نمای اقتصادی get_economic_overview_data economic_overview داده اقتصادی persisted

نکات مهم کارت‌ها

farmOverviewKpis

  • aggregator است و باید در dashboard بماند.

farmWeatherCard

  • source: water.models.WeatherForecastLog
  • قرارداد runtime: اگر داده هواشناسی موجود نباشد، باید empty state یا failure contract صریح برگردد، نه mock.

farmAlertsTracker

  • source: snapshot persisted
  • semantics: cached snapshot

waterNeedPrediction

  • facade فعلی در water
  • business source واقعی: irrigation.models.IrrigationRecommendationRequest
  • semantics: proxy-derived persisted data

harvestPredictionCard و yieldPredictionChart

  • source: yield_harvest.models.YieldHarvestPredictionLog
  • semantics: persisted AI-derived

ndviHealthCard

  • status: disabled / partial
  • تا زمانی که source runtime-ready پایدار برای NDVI نهایی نشود، نباید به عنوان کارت production-ready مستند شود.

Ownership و transitional boundaries

  • plant catalog canonical در Backend شروع می‌شود.
  • dashboard هنوز بعضی کارت‌ها را از facadeهای transitional می‌خواند.
  • سنسور / plant / farm ownership به‌تدریج باید به facade farm_data نزدیک‌تر شود، ولی همه مصرف‌کننده‌ها هنوز migrate نشده‌اند.

Response Semantics

  • farmAlertsTrackercached snapshot
  • waterNeedPredictionderived from persisted irrigation recommendation
  • harvestPredictionCard / yieldPredictionChartpersisted AI-derived snapshot
  • farmOverviewKpis / recommendationsListdashboard-owned aggregator

Known Gaps / Follow-up

  • ownership نهایی خوانش سنسور بین facade farm_data و سرویس‌های legacy هنوز در بعضی کارت‌ها transitional است.
  • ndviHealthCard هنوز برای runtime production-ready نیست.