diff --git a/backend/api/account/serializers/sensor_serializers.py b/backend/api/account/serializers/sensor_serializers.py
index 376d5e0..960ed6a 100644
--- a/backend/api/account/serializers/sensor_serializers.py
+++ b/backend/api/account/serializers/sensor_serializers.py
@@ -36,7 +36,9 @@ class DetectorSerializer(serializers.ModelSerializer):
fields = ('detector_id', 'type', 'detector_type', 'serial_number', 'name', 'object', 'status', 'zone', 'floor', 'notifications')
def get_detector_id(self, obj):
- return obj.name or f"{obj.sensor_type.code}-{obj.id}"
+ # Используем serial_number для совместимости с 3D моделью
+ # Если serial_number нет, используем ID с префиксом
+ return obj.serial_number or f"sensor_{obj.id}"
def get_type(self, obj):
sensor_type_mapping = {
diff --git a/backend/api/account/views/sensors_views.py b/backend/api/account/views/sensors_views.py
index 75ae12d..49c1b76 100644
--- a/backend/api/account/views/sensors_views.py
+++ b/backend/api/account/views/sensors_views.py
@@ -13,6 +13,7 @@ from api.utils.decorators import handle_exceptions
class SensorView(APIView):
permission_classes = [IsAuthenticated]
serializer_class = DetectorsResponseSerializer
+ pagination_class = None # Отключаем пагинацию для получения всех датчиков
@extend_schema(
summary="Получение всех датчиков",
@@ -54,7 +55,25 @@ class SensorView(APIView):
'alerts'
).all()
+ total_count = sensors.count()
+ print(f"[SensorView] Total sensors in DB: {total_count}")
+
+ # Проверяем уникальность serial_number
+ serial_numbers = [s.serial_number for s in sensors if s.serial_number]
+ unique_serials = set(serial_numbers)
+ print(f"[SensorView] Unique serial_numbers: {len(unique_serials)} out of {len(serial_numbers)}")
+
+ if len(serial_numbers) != len(unique_serials):
+ from collections import Counter
+ duplicates = {k: v for k, v in Counter(serial_numbers).items() if v > 1}
+ print(f"[SensorView] WARNING: Found duplicate serial_numbers: {duplicates}")
+
serializer = DetectorsResponseSerializer(sensors)
+ detectors_dict = serializer.data.get('detectors', {})
+
+ print(f"[SensorView] Serialized detectors count: {len(detectors_dict)}")
+ print(f"[SensorView] Sample detector_ids: {list(detectors_dict.keys())[:5]}")
+
return Response(serializer.data, status=status.HTTP_200_OK)
except Sensor.DoesNotExist:
return Response(
diff --git a/frontend/app/(auth)/login/page.tsx b/frontend/app/(auth)/login/page.tsx
index 0d365bd..363c6d2 100644
--- a/frontend/app/(auth)/login/page.tsx
+++ b/frontend/app/(auth)/login/page.tsx
@@ -71,61 +71,145 @@ const LoginPage = () => {
return