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:
2026-02-27 20:06:46 +03:30
parent 94355af62b
commit 2c42ebe01c
13 changed files with 246 additions and 89 deletions
+18 -3
View File
@@ -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}]"