This commit is contained in:
2026-04-29 23:54:30 +03:30
parent 03afe5dc5d
commit 88f56da582
12 changed files with 1263 additions and 196 deletions
-49
View File
@@ -13,8 +13,6 @@ from rag.services import get_pest_disease_detection, get_pest_disease_risk
from .serializers import (
PestDiseaseDetectionRequestSerializer,
PestDiseaseRiskRequestSerializer,
PestDiseaseRiskSummaryRequestSerializer,
PestDiseaseRiskSummaryResponseSerializer,
)
@@ -31,12 +29,6 @@ PestDiseaseRiskResponseSerializer = build_envelope_serializer(
"PestDiseaseRiskResponseSerializer",
data_schema=None,
)
PestDiseaseRiskSummaryEnvelopeSerializer = build_envelope_serializer(
"PestDiseaseRiskSummaryEnvelopeSerializer",
PestDiseaseRiskSummaryResponseSerializer,
)
class _ImageMixin:
parser_classes = [JSONParser, MultiPartParser, FormParser]
@@ -160,44 +152,3 @@ class PestDiseaseRiskView(APIView):
status=status.HTTP_500_INTERNAL_SERVER_ERROR,
)
return Response({"code": 200, "msg": "success", "data": result}, status=status.HTTP_200_OK)
class PestDiseaseRiskSummaryView(APIView):
@extend_schema(
tags=["Pest & Disease"],
summary="خلاصه ریسک بیماری و آفات",
description=(
"با دریافت farm_uuid، خلاصه ریسک بیماری و آفات را از سرویس RAG "
"گرفته و در قالب سبک تر برای KPI بازمی گرداند."
),
request=PestDiseaseRiskSummaryRequestSerializer,
responses={
200: build_response(PestDiseaseRiskSummaryEnvelopeSerializer, "خلاصه ریسک بیماری و آفات."),
400: build_response(PestDiseaseValidationErrorSerializer, "پارامتر ورودی نامعتبر است."),
404: build_response(PestDiseaseValidationErrorSerializer, "مزرعه یافت نشد."),
},
examples=[
OpenApiExample(
"نمونه درخواست risk summary",
value={"farm_uuid": "11111111-1111-1111-1111-111111111111"},
request_only=True,
)
],
)
def post(self, request):
from .services import build_pest_disease_risk_summary
serializer = PestDiseaseRiskSummaryRequestSerializer(data=request.data)
if not serializer.is_valid():
return Response(
{"code": 400, "msg": "داده نامعتبر.", "data": serializer.errors},
status=status.HTTP_400_BAD_REQUEST,
)
try:
result = build_pest_disease_risk_summary(farm_uuid=serializer.validated_data["farm_uuid"])
except ValueError as exc:
return Response(
{"code": 404, "msg": str(exc), "data": None},
status=status.HTTP_404_NOT_FOUND,
)
return Response({"code": 200, "msg": "success", "data": result}, status=status.HTTP_200_OK)