This commit is contained in:
2026-05-02 14:03:48 +03:30
parent f704e1188c
commit ef593153ba
14 changed files with 1286 additions and 18 deletions
+33
View File
@@ -1,8 +1,23 @@
from __future__ import annotations
import json
from rest_framework import serializers
class QueryJSONField(serializers.JSONField):
def to_internal_value(self, data):
if isinstance(data, str):
data = data.strip()
if not data:
return None
try:
data = json.loads(data)
except json.JSONDecodeError as exc:
raise serializers.ValidationError("فرمت JSON نامعتبر است.") from exc
return super().to_internal_value(data)
class GrowthSimulationRequestSerializer(serializers.Serializer):
plant_name = serializers.CharField(help_text="نام گیاه")
dynamic_parameters = serializers.ListField(
@@ -16,6 +31,8 @@ class GrowthSimulationRequestSerializer(serializers.Serializer):
site_parameters = serializers.JSONField(required=False)
crop_parameters = serializers.JSONField(required=False)
agromanagement = serializers.JSONField(required=False)
irrigation_recommendation = serializers.JSONField(required=False)
fertilization_recommendation = serializers.JSONField(required=False)
page_size = serializers.IntegerField(required=False, min_value=1, max_value=50)
def validate(self, attrs):
@@ -78,6 +95,8 @@ class GrowthSimulationResultSerializer(serializers.Serializer):
class CurrentFarmChartRequestSerializer(serializers.Serializer):
farm_uuid = serializers.UUIDField(help_text="شناسه یکتای مزرعه")
plant_name = serializers.CharField(required=False, allow_blank=True, help_text="نام گیاه")
irrigation_recommendation = serializers.JSONField(required=False)
fertilization_recommendation = serializers.JSONField(required=False)
class CurrentFarmChartResponseSerializer(serializers.Serializer):
@@ -98,6 +117,8 @@ class CurrentFarmChartResponseSerializer(serializers.Serializer):
class HarvestPredictionRequestSerializer(serializers.Serializer):
farm_uuid = serializers.UUIDField(help_text="شناسه یکتای مزرعه")
plant_name = serializers.CharField(required=False, allow_blank=True, help_text="نام گیاه")
irrigation_recommendation = serializers.JSONField(required=False)
fertilization_recommendation = serializers.JSONField(required=False)
class HarvestPredictionResponseSerializer(serializers.Serializer):
@@ -113,6 +134,8 @@ class HarvestPredictionResponseSerializer(serializers.Serializer):
class YieldPredictionRequestSerializer(serializers.Serializer):
farm_uuid = serializers.UUIDField(help_text="شناسه یکتای مزرعه")
plant_name = serializers.CharField(required=False, allow_blank=True, help_text="نام گیاه")
irrigation_recommendation = serializers.JSONField(required=False)
fertilization_recommendation = serializers.JSONField(required=False)
class YieldPredictionResponseSerializer(serializers.Serializer):
@@ -138,6 +161,16 @@ class YieldHarvestSummaryQuerySerializer(serializers.Serializer):
default=False,
help_text="در صورت true بودن، بخش روایت نیز در آینده اضافه می شود.",
)
irrigation_recommendation = QueryJSONField(
required=False,
allow_null=True,
help_text="برنامه آبیاری به صورت JSON برای تزریق به PCSE.",
)
fertilization_recommendation = QueryJSONField(
required=False,
allow_null=True,
help_text="برنامه کودهی به صورت JSON برای تزریق به PCSE.",
)
class YieldHarvestSummaryResponseSerializer(serializers.Serializer):