This commit is contained in:
2026-05-13 16:45:54 +03:30
parent 948c062b93
commit 46fe62fa04
96 changed files with 3834 additions and 155 deletions
+52
View File
@@ -144,6 +144,10 @@ class RemoteSensingFarmRequestSerializer(serializers.Serializer):
page_size = serializers.IntegerField(required=False, min_value=1, max_value=200, default=100)
class ClusterCropRecommendationRequestSerializer(serializers.Serializer):
farm_uuid = serializers.UUIDField(required=True, help_text="شناسه یکتای مزرعه")
class RemoteSensingClusterBlockLiveRequestSerializer(serializers.Serializer):
temporal_start = serializers.DateField(required=False)
temporal_end = serializers.DateField(required=False)
@@ -426,6 +430,54 @@ class RemoteSensingClusterBlockLiveResponseSerializer(serializers.Serializer):
metadata = serializers.JSONField()
class ClusterCropRegisteredPlantSerializer(serializers.Serializer):
plant_id = serializers.IntegerField()
plant_name = serializers.CharField()
position = serializers.IntegerField(allow_null=True)
stage = serializers.CharField(allow_blank=True)
class ClusterCropCandidateSerializer(serializers.Serializer):
plant_id = serializers.IntegerField(allow_null=True)
plant_name = serializers.CharField()
position = serializers.IntegerField(allow_null=True)
stage = serializers.CharField(allow_blank=True)
score = serializers.FloatField()
predicted_yield = serializers.FloatField(allow_null=True)
predicted_yield_tons = serializers.FloatField(allow_null=True)
biomass = serializers.FloatField(allow_null=True)
max_lai = serializers.FloatField(allow_null=True)
simulation_engine = serializers.CharField(allow_null=True)
simulation_model_name = serializers.CharField(allow_null=True)
simulation_warning = serializers.CharField(allow_null=True, allow_blank=True)
supporting_metrics = serializers.JSONField()
class ClusterCropRecommendationClusterSerializer(serializers.Serializer):
block_code = serializers.CharField(allow_blank=True)
cluster_uuid = serializers.CharField(allow_null=True, allow_blank=True)
sub_block_code = serializers.CharField()
cluster_label = serializers.IntegerField(allow_null=True)
temporal_extent = serializers.JSONField(allow_null=True)
cluster_block = RemoteSensingClusterBlockSerializer(allow_null=True)
satellite_metrics = serializers.JSONField()
sensor_metrics = serializers.JSONField()
resolved_metrics = serializers.JSONField()
candidate_plants = ClusterCropCandidateSerializer(many=True)
suggested_plant = ClusterCropCandidateSerializer(allow_null=True)
source_metadata = serializers.JSONField()
class ClusterCropRecommendationResponseSerializer(serializers.Serializer):
farm_uuid = serializers.CharField()
location_id = serializers.IntegerField()
evaluated_plant_count = serializers.IntegerField()
cluster_count = serializers.IntegerField()
registered_plants = ClusterCropRegisteredPlantSerializer(many=True)
clusters = ClusterCropRecommendationClusterSerializer(many=True)
source_metadata = serializers.JSONField()
class RemoteSensingSubdivisionOptionListResponseSerializer(serializers.Serializer):
result_id = serializers.IntegerField()
active_requested_k = serializers.IntegerField(allow_null=True)