This commit is contained in:
2026-04-11 03:54:15 +03:30
parent 883573004c
commit 36d6b05a7f
68 changed files with 3487 additions and 841 deletions
@@ -35,3 +35,10 @@ RECOMMEND_RESPONSE_DATA = {
"reasoning": "Your loamy soil with medium organic matter (2.5%) provides good nutrient retention. Water EC of 1.2 dS/m indicates low salinity—suitable for most crops. At the flowering stage, increased phosphorus supports bloom development. We recommend a balanced NPK to maintain nitrogen for vegetative growth while boosting phosphorous for flowering.",
},
}
FERTILIZATION_DASHBOARD_RECOMMENDATION = {
"title": "کود: 20-20-20 (NPK)",
"subtitle": "150 kg/ha، با روش Foliar spray + soil broadcast و هر 14 روز.",
"avatarIcon": "tabler-leaf",
"avatarColor": "success",
}
+50
View File
@@ -0,0 +1,50 @@
from copy import deepcopy
from .mock_data import FERTILIZATION_DASHBOARD_RECOMMENDATION, RECOMMEND_RESPONSE_DATA
from .models import FertilizationRecommendationRequest
def _extract_result(response_payload):
if not isinstance(response_payload, dict):
return {}
data = response_payload.get("data")
if isinstance(data, dict) and isinstance(data.get("result"), dict):
return data["result"]
result = response_payload.get("result")
if isinstance(result, dict):
return result
return {}
def _get_latest_result(farm):
if farm is None:
return {}
for request in FertilizationRecommendationRequest.objects.filter(farm=farm):
result = _extract_result(request.response_payload)
if result:
return result
return {}
def get_fertilization_dashboard_recommendation(farm=None):
default_item = deepcopy(FERTILIZATION_DASHBOARD_RECOMMENDATION)
result = _get_latest_result(farm)
plan = result.get("plan") or RECOMMEND_RESPONSE_DATA.get("plan", {})
npk_ratio = plan.get("npkRatio") or "20-20-20 (NPK)"
amount = plan.get("amountPerHectare")
method = plan.get("applicationMethod")
interval = plan.get("applicationInterval")
subtitle_parts = [part for part in [amount, method, interval] if part]
default_item["title"] = f"کود: {npk_ratio}"
if subtitle_parts:
default_item["subtitle"] = "، ".join(subtitle_parts)
return default_item