Files
2026-05-11 03:27:21 +03:30

83 lines
4.4 KiB
Python

from rest_framework import serializers
class PestDetectionAnalyzeRequestSerializer(serializers.Serializer):
farm_uuid = serializers.UUIDField(required=True, help_text="UUID مزرعه برای تحلیل آفت/بیماری.")
sensor_uuid = serializers.UUIDField(required=False, help_text="UUID سنسور مرتبط در صورت وجود.")
plant_name = serializers.CharField(required=False, allow_blank=True, default="", help_text="نام گیاه یا محصول.")
query = serializers.CharField(required=False, allow_blank=True, default="", help_text="پرسش یا توضیح متنی کاربر.")
image_urls = serializers.ListField(
child=serializers.CharField(),
required=False,
default=list,
)
image = serializers.CharField(required=False, allow_blank=True, default="")
images = serializers.ListField(
child=serializers.CharField(),
required=False,
default=list,
)
def validate(self, attrs):
attrs["query"] = (attrs.get("query") or "").strip()
attrs["plant_name"] = (attrs.get("plant_name") or "").strip()
return attrs
class PestDetectionAnalyzeResponseSerializer(serializers.Serializer):
has_issue = serializers.BooleanField(required=False)
category = serializers.CharField(required=False, allow_blank=True)
confidence = serializers.FloatField(required=False)
severity = serializers.CharField(required=False, allow_blank=True)
summary = serializers.CharField(required=False, allow_blank=True)
detected_signs = serializers.ListField(child=serializers.CharField(), required=False)
possible_causes = serializers.ListField(child=serializers.CharField(), required=False)
immediate_actions = serializers.ListField(child=serializers.CharField(), required=False)
reasoning = serializers.ListField(child=serializers.CharField(), required=False)
class PestDetectionRiskRequestSerializer(serializers.Serializer):
farm_uuid = serializers.UUIDField(default="11111111-1111-1111-1111-111111111111", help_text="UUID مزرعه برای تحلیل ریسک آفت/بیماری.")
plant_name = serializers.CharField(required=False, allow_blank=True, default="پیاز", help_text="نام محصول یا گیاه.")
growth_stage = serializers.CharField(required=False, allow_blank=True, default="گلدهی", help_text="مرحله رشد گیاه.")
class PestDetectionRiskSummaryRequestSerializer(serializers.Serializer):
farm_uuid = serializers.UUIDField(required=True, help_text="UUID مزرعه برای خلاصه ریسک آفت/بیماری.")
class RiskBreakdownSerializer(serializers.Serializer):
score = serializers.FloatField(required=False)
level = serializers.CharField(required=False, allow_blank=True)
likely_conditions = serializers.ListField(child=serializers.CharField(), required=False)
reasoning = serializers.ListField(child=serializers.CharField(), required=False)
class PestDetectionRiskResponseSerializer(serializers.Serializer):
summary = serializers.CharField(required=False, allow_blank=True)
forecast_window = serializers.CharField(required=False, allow_blank=True)
overall_risk = serializers.CharField(required=False, allow_blank=True)
disease_risk = RiskBreakdownSerializer(required=False)
pest_risk = RiskBreakdownSerializer(required=False)
key_drivers = serializers.ListField(child=serializers.CharField(), required=False)
recommended_actions = serializers.ListField(child=serializers.CharField(), required=False)
class RiskCardSerializer(serializers.Serializer):
id = serializers.CharField(required=False, allow_blank=True)
title = serializers.CharField(required=False, allow_blank=True)
subtitle = serializers.CharField(required=False, allow_blank=True)
stats = serializers.CharField(required=False, allow_blank=True)
avatarColor = serializers.CharField(required=False, allow_blank=True)
avatarIcon = serializers.CharField(required=False, allow_blank=True)
chipText = serializers.CharField(required=False, allow_blank=True)
chipColor = serializers.CharField(required=False, allow_blank=True)
details = serializers.DictField(required=False)
class PestDetectionRiskSummaryResponseSerializer(serializers.Serializer):
farm_uuid = serializers.UUIDField(required=False, allow_null=True)
diseaseRisk = RiskCardSerializer(required=False)
pestRisk = RiskCardSerializer(required=False)
drivers = serializers.DictField(required=False)