2026-03-26 15:39:31 +03:30
|
|
|
from rest_framework import serializers
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class IrrigationFarmDataSerializer(serializers.Serializer):
|
|
|
|
|
soilType = serializers.CharField(required=False, allow_blank=True)
|
|
|
|
|
waterQuality = serializers.CharField(required=False, allow_blank=True)
|
|
|
|
|
climateZone = serializers.CharField(required=False, allow_blank=True)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class IrrigationRecommendRequestSerializer(serializers.Serializer):
|
2026-04-02 23:25:39 +03:30
|
|
|
farm_uuid = serializers.UUIDField(required=True)
|
2026-03-26 15:39:31 +03:30
|
|
|
crop_id = serializers.CharField(required=False, allow_blank=True)
|
|
|
|
|
farm_data = IrrigationFarmDataSerializer(required=False)
|
|
|
|
|
soilType = serializers.CharField(required=False, allow_blank=True)
|
|
|
|
|
waterQuality = serializers.CharField(required=False, allow_blank=True)
|
|
|
|
|
climateZone = serializers.CharField(required=False, allow_blank=True)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class IrrigationPlanSerializer(serializers.Serializer):
|
|
|
|
|
frequencyPerWeek = serializers.CharField(required=False, allow_blank=True)
|
|
|
|
|
durationMinutes = serializers.CharField(required=False, allow_blank=True)
|
|
|
|
|
bestTimeOfDay = serializers.CharField(required=False, allow_blank=True)
|
|
|
|
|
moistureLevel = serializers.CharField(required=False, allow_blank=True)
|
|
|
|
|
warning = serializers.CharField(required=False, allow_blank=True)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class IrrigationWaterBalanceDaySerializer(serializers.Serializer):
|
|
|
|
|
forecast_date = serializers.CharField(required=False, allow_blank=True)
|
|
|
|
|
et0_mm = serializers.FloatField(required=False)
|
|
|
|
|
etc_mm = serializers.FloatField(required=False)
|
|
|
|
|
effective_rainfall_mm = serializers.FloatField(required=False)
|
|
|
|
|
gross_irrigation_mm = serializers.FloatField(required=False)
|
|
|
|
|
irrigation_timing = serializers.CharField(required=False, allow_blank=True)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class IrrigationCropProfileSerializer(serializers.Serializer):
|
|
|
|
|
kc_initial = serializers.FloatField(required=False)
|
|
|
|
|
kc_mid = serializers.FloatField(required=False)
|
|
|
|
|
kc_end = serializers.FloatField(required=False)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class IrrigationWaterBalanceSerializer(serializers.Serializer):
|
|
|
|
|
daily = IrrigationWaterBalanceDaySerializer(many=True, required=False)
|
|
|
|
|
crop_profile = IrrigationCropProfileSerializer(required=False)
|
|
|
|
|
active_kc = serializers.FloatField(required=False)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class IrrigationRecommendResponseDataSerializer(serializers.Serializer):
|
|
|
|
|
plan = IrrigationPlanSerializer(required=False)
|
|
|
|
|
raw_response = serializers.CharField(required=False, allow_blank=True)
|
|
|
|
|
water_balance = IrrigationWaterBalanceSerializer(required=False)
|
|
|
|
|
status = serializers.CharField(required=False, allow_blank=True)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class IrrigationTaskSubmitDataSerializer(serializers.Serializer):
|
|
|
|
|
task_id = serializers.CharField(required=False, allow_blank=True)
|
|
|
|
|
status = serializers.CharField(required=False, allow_blank=True)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class IrrigationTaskStatusDataSerializer(serializers.Serializer):
|
|
|
|
|
task_id = serializers.CharField(required=False, allow_blank=True)
|
|
|
|
|
status = serializers.CharField(required=False, allow_blank=True)
|
|
|
|
|
result = IrrigationRecommendResponseDataSerializer(required=False)
|