UPDATE
This commit is contained in:
@@ -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",
|
||||
}
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user