2026-04-11 03:54:15 +03:30
|
|
|
from rest_framework import serializers
|
|
|
|
|
|
|
|
|
|
|
2026-04-30 01:01:04 +03:30
|
|
|
class WeatherFarmCardRequestSerializer(serializers.Serializer):
|
|
|
|
|
farm_uuid = serializers.UUIDField(
|
|
|
|
|
required=True,
|
|
|
|
|
initial="11111111-1111-1111-1111-111111111111",
|
|
|
|
|
help_text="UUID مزرعه.",
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
2026-04-11 03:54:15 +03:30
|
|
|
class WeatherChartDataSerializer(serializers.Serializer):
|
|
|
|
|
labels = serializers.ListField(child=serializers.CharField(), required=False)
|
|
|
|
|
series = serializers.ListField(
|
|
|
|
|
child=serializers.ListField(child=serializers.FloatField()),
|
|
|
|
|
required=False,
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class FarmWeatherCardSerializer(serializers.Serializer):
|
2026-04-27 00:40:59 +03:30
|
|
|
condition = serializers.CharField(required=False, allow_blank=True, help_text="وضعیت فعلی آبوهوا.")
|
|
|
|
|
temperature = serializers.FloatField(required=False, help_text="دمای فعلی.")
|
|
|
|
|
unit = serializers.CharField(required=False, allow_blank=True, help_text="واحد دما.")
|
|
|
|
|
humidity = serializers.IntegerField(required=False, help_text="رطوبت نسبی.")
|
|
|
|
|
windSpeed = serializers.FloatField(required=False, help_text="سرعت باد.")
|
|
|
|
|
windUnit = serializers.CharField(required=False, allow_blank=True, help_text="واحد سرعت باد.")
|
2026-04-11 03:54:15 +03:30
|
|
|
chartData = WeatherChartDataSerializer(required=False)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class WaterNeedSeriesSerializer(serializers.Serializer):
|
|
|
|
|
name = serializers.CharField(required=False, allow_blank=True)
|
|
|
|
|
data = serializers.ListField(child=serializers.FloatField(), required=False)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class WaterNeedPredictionSerializer(serializers.Serializer):
|
2026-04-27 00:40:59 +03:30
|
|
|
farm_uuid = serializers.CharField(required=False, allow_blank=True, help_text="UUID مزرعه.")
|
|
|
|
|
totalNext7Days = serializers.FloatField(required=False, help_text="جمع نیاز آبی ۷ روز آینده.")
|
|
|
|
|
unit = serializers.CharField(required=False, allow_blank=True, help_text="واحد نیاز آبی.")
|
|
|
|
|
categories = serializers.ListField(child=serializers.CharField(), required=False, help_text="برچسب روزها یا تاریخها.")
|
2026-04-11 03:54:15 +03:30
|
|
|
series = WaterNeedSeriesSerializer(many=True, required=False)
|
2026-04-27 00:40:59 +03:30
|
|
|
dailyBreakdown = serializers.ListField(child=serializers.DictField(), required=False, help_text="جزئیات روزانه پیشبینی.")
|
|
|
|
|
insight = serializers.DictField(required=False, help_text="جمعبندی و insight تحلیلی.")
|
|
|
|
|
knowledge_base = serializers.CharField(required=False, allow_blank=True, help_text="مرجع دانشی در صورت ارائه توسط upstream.")
|
|
|
|
|
raw_response = serializers.CharField(required=False, allow_blank=True, help_text="پاسخ خام upstream در صورت وجود.")
|
2026-04-11 03:54:15 +03:30
|
|
|
|
|
|
|
|
|
|
|
|
|
class WaterStressIndexSerializer(serializers.Serializer):
|
2026-04-27 00:40:59 +03:30
|
|
|
farm_uuid = serializers.UUIDField(required=False, allow_null=True, help_text="UUID مزرعه.")
|
|
|
|
|
waterStressIndex = serializers.IntegerField(required=False, help_text="شاخص تنش آبی.")
|
|
|
|
|
level = serializers.CharField(required=False, allow_blank=True, help_text="سطح تنش آبی.")
|
|
|
|
|
sourceMetric = serializers.DictField(required=False, help_text="متریک یا منبع محاسبه تنش آبی.")
|
2026-04-11 03:54:15 +03:30
|
|
|
|
|
|
|
|
|
|
|
|
|
class WaterSummarySerializer(serializers.Serializer):
|
|
|
|
|
farmWeatherCard = FarmWeatherCardSerializer(required=False)
|
|
|
|
|
waterNeedPrediction = WaterNeedPredictionSerializer(required=False)
|
|
|
|
|
waterStressIndex = WaterStressIndexSerializer(required=False)
|