This commit is contained in:
2026-04-27 00:40:59 +03:30
parent 2cd96ceec6
commit 64e67c282c
56 changed files with 3912 additions and 745 deletions
+44 -16
View File
@@ -2,14 +2,14 @@ from rest_framework import serializers
class SoilKpiSerializer(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)
id = serializers.CharField(required=False, allow_blank=True, help_text="شناسه کارت KPI.")
title = serializers.CharField(required=False, allow_blank=True, help_text="عنوان کارت KPI.")
subtitle = serializers.CharField(required=False, allow_blank=True, help_text="زیرعنوان کارت KPI.")
stats = serializers.CharField(required=False, allow_blank=True, help_text="مقدار اصلی KPI.")
avatarColor = serializers.CharField(required=False, allow_blank=True, help_text="رنگ آواتار کارت.")
avatarIcon = serializers.CharField(required=False, allow_blank=True, help_text="آیکون کارت.")
chipText = serializers.CharField(required=False, allow_blank=True, help_text="متن وضعیت KPI.")
chipColor = serializers.CharField(required=False, allow_blank=True, help_text="رنگ وضعیت KPI.")
class SoilRadarSeriesSerializer(serializers.Serializer):
@@ -39,7 +39,18 @@ class SoilAnomalyItemSerializer(serializers.Serializer):
class SoilAnomalyDetectionSerializer(serializers.Serializer):
farm_uuid = serializers.CharField(required=False, allow_blank=True, help_text="UUID مزرعه.")
summary = serializers.CharField(required=False, allow_blank=True, help_text="خلاصه کوتاه ناهنجاری خاک.")
explanation = serializers.CharField(required=False, allow_blank=True, help_text="توضیح کوتاه درباره ناهنجاری.")
likely_cause = serializers.CharField(required=False, allow_blank=True, help_text="علت محتمل ناهنجاری.")
recommended_action = serializers.CharField(required=False, allow_blank=True, help_text="اقدام پیشنهادی برای رفع مشکل.")
monitoring_priority = serializers.CharField(required=False, allow_blank=True, help_text="اولویت پایش؛ low/medium/high/urgent.")
confidence = serializers.FloatField(required=False, help_text="میزان اطمینان مدل به تحلیل.")
generated_at = serializers.CharField(required=False, allow_blank=True, help_text="زمان تولید تحلیل.")
anomalies = SoilAnomalyItemSerializer(many=True, required=False)
interpretation = serializers.DictField(required=False, help_text="تفسیر ساختاریافته ناهنجاری‌ها.")
knowledge_base = serializers.CharField(required=False, allow_blank=True, allow_null=True, help_text="مرجع دانشی استفاده‌شده.")
raw_response = serializers.CharField(required=False, allow_blank=True, allow_null=True, help_text="پاسخ خام upstream در صورت وجود.")
class SoilHeatmapPointSerializer(serializers.Serializer):
@@ -52,15 +63,32 @@ class SoilHeatmapSeriesSerializer(serializers.Serializer):
data = SoilHeatmapPointSerializer(many=True, required=False)
class SoilGenericDictSerializer(serializers.Serializer):
class Meta:
ref_name = "SoilGenericDict"
class SoilMoistureHeatmapSerializer(serializers.Serializer):
zones = serializers.ListField(child=serializers.CharField(), required=False)
hours = serializers.ListField(child=serializers.CharField(), required=False)
series = SoilHeatmapSeriesSerializer(many=True, required=False)
farm_uuid = serializers.CharField(required=False, allow_blank=True, help_text="UUID مزرعه.")
location = serializers.DictField(required=False, help_text="اطلاعات مکانی مزرعه یا ناحیه تحلیل.")
current_sensor = serializers.DictField(required=False, help_text="مشخصات سنسور فعال فعلی.")
soil_profile = serializers.ListField(child=serializers.DictField(), required=False, help_text="پروفایل خاک در لایه‌های مختلف.")
timestamp = serializers.CharField(required=False, allow_blank=True, allow_null=True, help_text="زمان تولید heatmap.")
grid_resolution = serializers.DictField(required=False, help_text="رزولوشن شبکه heatmap.")
grid_cells = serializers.ListField(child=serializers.DictField(), required=False, help_text="سلول‌های شبکه heatmap.")
sensor_points = serializers.ListField(child=serializers.DictField(), required=False, help_text="نقاط سنسور مؤثر در heatmap.")
quality_legend = serializers.DictField(required=False, help_text="legend یا بازه‌بندی کیفیت رطوبت.")
depth_layers = serializers.ListField(child=serializers.DictField(), required=False, help_text="لایه‌های عمقی خاک.")
model_metadata = serializers.DictField(required=False, help_text="متادیتای مدل تولیدکننده heatmap.")
summary = serializers.DictField(required=False, help_text="خلاصه تفسیری heatmap.")
class SoilSummarySerializer(serializers.Serializer):
avgSoilMoisture = SoilKpiSerializer(required=False)
sensorRadarChart = SoilRadarChartSerializer(required=False)
sensorComparisonChart = SoilComparisonChartSerializer(required=False)
anomalyDetectionCard = SoilAnomalyDetectionSerializer(required=False)
soilMoistureHeatmap = SoilMoistureHeatmapSerializer(required=False)
farm_uuid = serializers.CharField(required=False, allow_blank=True, help_text="UUID مزرعه.")
healthScore = serializers.IntegerField(required=False, help_text="امتیاز سلامت کلی خاک.")
profileSource = serializers.CharField(required=False, allow_blank=True, help_text="منبع پروفایل مرجع یا محصول هدف.")
healthScoreDetails = serializers.DictField(required=False, help_text="جزئیات تشکیل‌دهنده health score.")
healthLanguage = serializers.DictField(required=False, help_text="توضیحات متنی قابل نمایش برای سلامت خاک.")
avgSoilMoisture = serializers.IntegerField(required=False, help_text="میانگین رطوبت خاک به‌صورت عدد گرد شده.")
avgSoilMoistureRaw = serializers.FloatField(required=False, help_text="میانگین خام رطوبت خاک.")
avgSoilMoistureStatus = serializers.CharField(required=False, allow_blank=True, help_text="وضعیت متنی رطوبت خاک.")