AEB-71: Added 3D navigation in monitoring zones

This commit is contained in:
iv_vuytsik
2025-11-11 10:07:38 +03:00
parent 549a05509b
commit 88653cb07c
27 changed files with 503 additions and 184 deletions

View File

@@ -8,11 +8,11 @@ class AlertSerializer(serializers.ModelSerializer):
name = serializers.SerializerMethodField()
object = serializers.SerializerMethodField()
metric_value = serializers.SerializerMethodField()
sensor_type_name = serializers.SerializerMethodField()
detector_type = serializers.SerializerMethodField()
class Meta:
model = Alert
fields = ('id', 'name', 'object', 'metric_value', 'sensor_type_name', 'message', 'severity', 'created_at', 'resolved')
fields = ('id', 'name', 'object', 'metric_value', 'detector_type', 'message', 'severity', 'created_at', 'resolved')
@extend_schema_field(OpenApiTypes.STR)
def get_name(self, obj) -> str:
@@ -22,14 +22,17 @@ class AlertSerializer(serializers.ModelSerializer):
def get_object(self, obj) -> Optional[str]:
zone = obj.sensor.zones.first()
return zone.object.title if zone else None
@extend_schema_field(OpenApiTypes.STR)
def get_metric_value(self, obj) -> str:
if obj.metric.value is not None:
unit = obj.sensor.signal_format.unit if obj.sensor.signal_format else ''
return f"{obj.metric.value} {unit}".strip()
return obj.metric.raw_value
@extend_schema_field(OpenApiTypes.STR)
def get_sensor_type_name(self, obj) -> str:
return obj.sensor_type.name
def get_detector_type(self, obj) -> str:
sensor_type = getattr(obj, 'sensor_type', None)
if sensor_type is None and hasattr(obj, 'sensor') and obj.sensor:
sensor_type = getattr(obj.sensor, 'sensor_type', None)
if sensor_type is None:
return ''
return (getattr(sensor_type, 'code', '') or '').upper()