This commit is contained in:
2026-05-05 21:01:58 +03:30
parent 39efd537bf
commit 4e28bacad6
54 changed files with 2729 additions and 1115 deletions
+35
View File
@@ -0,0 +1,35 @@
CONFIG_RESPONSE_TEMPLATE = {
"farmData": {
"soilType": None,
"organicMatter": None,
"waterEC": None,
},
"growthStages": [
{"id": "prePlanting", "icon": "tabler-seedling"},
{"id": "earlyGrowth", "icon": "tabler-leaf"},
{"id": "flowering", "icon": "tabler-flower"},
{"id": "fruiting", "icon": "tabler-apple"},
{"id": "postHarvest", "icon": "tabler-basket"},
],
"cropOptions": [
{"id": "wheat", "labelKey": "wheat", "icon": "tabler-wheat"},
{"id": "corn", "labelKey": "corn", "icon": "tabler-plant-2"},
{"id": "cotton", "labelKey": "cotton", "icon": "tabler-flower"},
{"id": "saffron", "labelKey": "saffron", "icon": "tabler-flower-2"},
{"id": "canola", "labelKey": "canola", "icon": "tabler-leaf"},
{"id": "vegetables", "labelKey": "vegetables", "icon": "tabler-carrot"},
],
"status": "success",
"source": "default_template",
}
FERTILIZATION_DASHBOARD_TEMPLATE = {
"title": "کود",
"subtitle": "داده توصیه کودهی هنوز ثبت نشده است.",
"avatarIcon": "tabler-leaf",
"avatarColor": "success",
"status": "empty",
"source": "db",
"warnings": ["No persisted fertilization recommendation is available for this farm."],
}
+8 -3
View File
@@ -1,6 +1,6 @@
from copy import deepcopy
from .mock_data import FERTILIZATION_DASHBOARD_RECOMMENDATION, RECOMMEND_RESPONSE_DATA
from .defaults import FERTILIZATION_DASHBOARD_TEMPLATE
from .models import FertilizationPlan, FertilizationRecommendationRequest
@@ -77,9 +77,11 @@ def build_active_plan_context(farm):
def get_fertilization_dashboard_recommendation(farm=None):
default_item = deepcopy(FERTILIZATION_DASHBOARD_RECOMMENDATION)
default_item = deepcopy(FERTILIZATION_DASHBOARD_TEMPLATE)
result = _get_latest_result(farm)
plan = result.get("plan") or RECOMMEND_RESPONSE_DATA.get("plan", {})
plan = result.get("plan") or {}
if not isinstance(plan, dict) or not plan:
return default_item
npk_ratio = plan.get("npkRatio") or "20-20-20 (NPK)"
amount = plan.get("amountPerHectare")
@@ -91,5 +93,8 @@ def get_fertilization_dashboard_recommendation(farm=None):
default_item["title"] = f"کود: {npk_ratio}"
if subtitle_parts:
default_item["subtitle"] = "، ".join(subtitle_parts)
default_item["status"] = "success"
default_item["source"] = "db"
default_item["warnings"] = []
return default_item
+2 -2
View File
@@ -18,7 +18,7 @@ from farm_hub.models import FarmHub
from farmer_calendar import PLAN_TYPE_FERTILIZATION, delete_plan_events, sync_plan_events
from .models import FertilizationPlan, FertilizationRecommendationRequest
from .services import build_active_plan_context
from .mock_data import CONFIG_RESPONSE_DATA
from .defaults import CONFIG_RESPONSE_TEMPLATE
from .serializers import (
FreeTextPlanParserRequestSerializer,
FreeTextPlanParserResponseDataSerializer,
@@ -81,7 +81,7 @@ class ConfigView(FarmAccessMixin, APIView):
)
def get(self, request):
farm = self._get_farm(request, request.query_params.get("farm_uuid"))
data = dict(CONFIG_RESPONSE_DATA)
data = dict(CONFIG_RESPONSE_TEMPLATE)
data["farm_uuid"] = str(farm.farm_uuid)
return Response({"status": "success", "data": data}, status=status.HTTP_200_OK)