Refactor user data handling and enhance chat functionality
- Removed deprecated user_info files and paths from configuration. - Added user soil data integration in chat context to improve response accuracy. - Updated build_rag_context and chat_rag_stream functions to include sensor_uuid for user-specific data retrieval. - Enhanced load_sources function to load user data from the database. - Implemented filtering in search_with_query and QdrantVectorStore to isolate user data based on sensor_uuid. - Introduced Celery Beat schedule for periodic user data ingestion.
This commit is contained in:
+18
-3
@@ -13,11 +13,15 @@ from .chat import chat_rag_stream
|
||||
class ChatView(APIView):
|
||||
"""
|
||||
چت RAG با استریم.
|
||||
POST با {"message": "متن سوال"} یا query param message
|
||||
POST با {"message": "متن سوال", "sensor_uuid": "uuid-سنسور"}
|
||||
sensor_uuid اجباری — هر کاربر فقط به دیتای خودش دسترسی دارد.
|
||||
"""
|
||||
|
||||
def post(self, request: Request):
|
||||
message = request.data.get("message") or request.query_params.get("message")
|
||||
data = request.data if request.method == "POST" else request.query_params
|
||||
message = data.get("message")
|
||||
sensor_uuid = data.get("sensor_uuid")
|
||||
|
||||
if not message or not isinstance(message, str):
|
||||
return Response(
|
||||
{"code": 400, "msg": "پارامتر message الزامی است."},
|
||||
@@ -29,10 +33,21 @@ class ChatView(APIView):
|
||||
{"code": 400, "msg": "پیام نباید خالی باشد."},
|
||||
status=status.HTTP_400_BAD_REQUEST,
|
||||
)
|
||||
if not sensor_uuid or not isinstance(sensor_uuid, str):
|
||||
return Response(
|
||||
{"code": 400, "msg": "پارامتر sensor_uuid الزامی است."},
|
||||
status=status.HTTP_400_BAD_REQUEST,
|
||||
)
|
||||
sensor_uuid = str(sensor_uuid).strip()
|
||||
if not sensor_uuid:
|
||||
return Response(
|
||||
{"code": 400, "msg": "sensor_uuid نباید خالی باشد."},
|
||||
status=status.HTTP_400_BAD_REQUEST,
|
||||
)
|
||||
|
||||
def generate():
|
||||
try:
|
||||
for chunk in chat_rag_stream(message):
|
||||
for chunk in chat_rag_stream(message, sensor_uuid=sensor_uuid):
|
||||
yield chunk
|
||||
except Exception as e:
|
||||
yield f"\n[خطا: {e}]"
|
||||
|
||||
Reference in New Issue
Block a user