UPDATE
This commit is contained in:
+14
-51
@@ -6,7 +6,7 @@ from rest_framework.views import APIView
|
||||
from config.openapi import build_envelope_serializer, build_response
|
||||
|
||||
from .serializers import FarmAlertsRequestSerializer
|
||||
from .services import get_farm_alerts_timeline, get_farm_alerts_tracker
|
||||
from .services import get_farm_alerts_tracker
|
||||
|
||||
|
||||
FarmAlertsValidationErrorSerializer = build_envelope_serializer(
|
||||
@@ -18,10 +18,6 @@ FarmAlertsTrackerResponseSerializer = build_envelope_serializer(
|
||||
"FarmAlertsTrackerResponseSerializer",
|
||||
data_schema=None,
|
||||
)
|
||||
FarmAlertsTimelineResponseSerializer = build_envelope_serializer(
|
||||
"FarmAlertsTimelineResponseSerializer",
|
||||
data_schema=None,
|
||||
)
|
||||
|
||||
|
||||
class FarmAlertsTrackerView(APIView):
|
||||
@@ -30,7 +26,8 @@ class FarmAlertsTrackerView(APIView):
|
||||
summary="ارزیابی tracker هشدارهای مزرعه",
|
||||
description=(
|
||||
"با دریافت farm_uuid، هشدارهای مزرعه را تحلیل می کند، "
|
||||
"کانتکست مزرعه را به RAG می فرستد، و notificationهای سطح خطر/هشدار/اطلاع رسانی را در دیتابیس ذخیره می کند."
|
||||
"کانتکست مزرعه و لیست alertهای ورودی را به RAG می فرستد، "
|
||||
"و notificationهای سطح خطر/هشدار/اطلاع رسانی را در دیتابیس ذخیره می کند."
|
||||
),
|
||||
request=FarmAlertsRequestSerializer,
|
||||
responses={
|
||||
@@ -43,6 +40,16 @@ class FarmAlertsTrackerView(APIView):
|
||||
"نمونه درخواست tracker",
|
||||
value={
|
||||
"farm_uuid": "11111111-1111-1111-1111-111111111111",
|
||||
"alerts": [
|
||||
{
|
||||
"alert_id": "soil-moisture-001",
|
||||
"level": "warning",
|
||||
"title": "افت رطوبت خاک",
|
||||
"message": "رطوبت خاک کمتر از حد مطلوب گزارش شده است.",
|
||||
"suggested_action": "آبیاری اصلاحی بررسی شود.",
|
||||
"source_metric_type": "moisture",
|
||||
}
|
||||
],
|
||||
},
|
||||
request_only=True,
|
||||
),
|
||||
@@ -60,6 +67,7 @@ class FarmAlertsTrackerView(APIView):
|
||||
result = get_farm_alerts_tracker(
|
||||
farm_uuid=validated["farm_uuid"],
|
||||
query=validated.get("query"),
|
||||
alerts=validated.get("alerts"),
|
||||
)
|
||||
except Exception as exc:
|
||||
return Response(
|
||||
@@ -67,48 +75,3 @@ class FarmAlertsTrackerView(APIView):
|
||||
status=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
||||
)
|
||||
return Response({"code": 200, "msg": "success", "data": result}, status=status.HTTP_200_OK)
|
||||
|
||||
|
||||
class FarmAlertsTimelineView(APIView):
|
||||
@extend_schema(
|
||||
tags=["Farm Alerts"],
|
||||
summary="دریافت timeline هشدارهای مزرعه",
|
||||
description=(
|
||||
"با دریافت farm_uuid، timeline هشدارهای مزرعه را با کمک RAG می سازد "
|
||||
"و notificationهای استخراج شده را در دیتابیس ذخیره می کند."
|
||||
),
|
||||
request=FarmAlertsRequestSerializer,
|
||||
responses={
|
||||
200: build_response(FarmAlertsTimelineResponseSerializer, "خروجی timeline هشدارهای مزرعه."),
|
||||
400: build_response(FarmAlertsValidationErrorSerializer, "پارامتر ورودی نامعتبر است."),
|
||||
500: build_response(FarmAlertsValidationErrorSerializer, "خطا در تولید timeline هشدارها."),
|
||||
},
|
||||
examples=[
|
||||
OpenApiExample(
|
||||
"نمونه درخواست timeline",
|
||||
value={
|
||||
"farm_uuid": "11111111-1111-1111-1111-111111111111",
|
||||
},
|
||||
request_only=True,
|
||||
),
|
||||
],
|
||||
)
|
||||
def post(self, request):
|
||||
serializer = FarmAlertsRequestSerializer(data=request.data)
|
||||
if not serializer.is_valid():
|
||||
return Response(
|
||||
{"code": 400, "msg": "داده نامعتبر.", "data": serializer.errors},
|
||||
status=status.HTTP_400_BAD_REQUEST,
|
||||
)
|
||||
validated = serializer.validated_data
|
||||
try:
|
||||
result = get_farm_alerts_timeline(
|
||||
farm_uuid=validated["farm_uuid"],
|
||||
query=validated.get("query"),
|
||||
)
|
||||
except Exception as exc:
|
||||
return Response(
|
||||
{"code": 500, "msg": f"خطا در تولید timeline هشدارها: {exc}", "data": None},
|
||||
status=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
||||
)
|
||||
return Response({"code": 200, "msg": "success", "data": result}, status=status.HTTP_200_OK)
|
||||
|
||||
Reference in New Issue
Block a user