from rest_framework import status from rest_framework.permissions import IsAuthenticated from rest_framework.response import Response from rest_framework.views import APIView from .serializers import TelemetryBatchSerializer from .services import TelemetryIngestService class TelemetryEventsView(APIView): """اپ فلاتر دوره‌ای (و موقعِ بستن) یک دسته رویداد اینجا می‌فرستد — صفحه‌بازدید، کلیک، خطا، شروع/پایانِ جلسه. لاگین لازم است چون این مانیتورینگ «به‌ازای کاربر» است، نه ترافیکِ ناشناس.""" permission_classes = [IsAuthenticated] def post(self, request): serializer = TelemetryBatchSerializer(data=request.data) serializer.is_valid(raise_exception=True) ip = request.META.get("HTTP_X_FORWARDED_FOR", "").split(",")[0].strip() or request.META.get( "REMOTE_ADDR" ) TelemetryIngestService.ingest(request.user, ip, serializer.validated_data) return Response({"success": True}, status=status.HTTP_201_CREATED)