UPDATE
This commit is contained in:
@@ -1,5 +1,47 @@
|
||||
from rest_framework import serializers
|
||||
|
||||
from notifications.serializers import FarmNotificationSerializer
|
||||
|
||||
|
||||
ALLOWED_TRACKER_FIELDS = {"farm_uuid", "alerts"}
|
||||
|
||||
|
||||
class FarmAlertInputSerializer(serializers.Serializer):
|
||||
alert_id = serializers.CharField(required=False, allow_blank=True)
|
||||
level = serializers.CharField(required=False, allow_blank=True)
|
||||
title = serializers.CharField(required=False, allow_blank=True)
|
||||
message = serializers.CharField(required=False, allow_blank=True)
|
||||
suggested_action = serializers.CharField(required=False, allow_blank=True)
|
||||
source_metric_type = serializers.CharField(required=False, allow_blank=True)
|
||||
timestamp = serializers.DateTimeField(required=False, allow_null=True)
|
||||
payload = serializers.JSONField(required=False)
|
||||
|
||||
|
||||
class FarmAlertsTrackerRequestSerializer(serializers.Serializer):
|
||||
farm_uuid = serializers.UUIDField(required=True, help_text="UUID مزرعه.")
|
||||
alerts = FarmAlertInputSerializer(many=True, required=False, default=list)
|
||||
|
||||
def validate(self, attrs):
|
||||
initial_keys = set(getattr(self, "initial_data", {}).keys())
|
||||
extra_fields = initial_keys - ALLOWED_TRACKER_FIELDS
|
||||
if extra_fields:
|
||||
raise serializers.ValidationError(
|
||||
{field: ["This field is not allowed."] for field in sorted(extra_fields)}
|
||||
)
|
||||
return attrs
|
||||
|
||||
|
||||
class AlertTrackerAIResponseSerializer(serializers.Serializer):
|
||||
farm_uuid = serializers.UUIDField(read_only=True)
|
||||
service_id = serializers.CharField()
|
||||
tracker = serializers.JSONField()
|
||||
headline = serializers.CharField(allow_blank=True)
|
||||
overview = serializers.CharField(allow_blank=True)
|
||||
status_level = serializers.CharField()
|
||||
notifications = FarmNotificationSerializer(many=True)
|
||||
raw_llm_response = serializers.CharField(allow_blank=True)
|
||||
structured_context = serializers.JSONField()
|
||||
|
||||
|
||||
class AlertStatSerializer(serializers.Serializer):
|
||||
title = serializers.CharField()
|
||||
|
||||
Reference in New Issue
Block a user