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
View File
@@ -95,16 +95,34 @@ class QdrantVectorStore:
query_vector: list[float],
limit: int = 5,
score_threshold: float | None = None,
sensor_uuid: str | None = None,
) -> list[dict]:
"""
جستجوی شباهت بر اساس query vector.
از query_points استفاده می‌کند (qdrant-client >= 2.0).
sensor_uuid: اجباری — فقط chunks مربوط به این سنسور یا __global__ برگردانده می‌شود.
"""
query_filter = None
if sensor_uuid:
query_filter = qmodels.Filter(
should=[
qmodels.FieldCondition(
key="sensor_uuid",
match=qmodels.MatchValue(value=sensor_uuid),
),
qmodels.FieldCondition(
key="sensor_uuid",
match=qmodels.MatchValue(value="__global__"),
),
]
)
response = self.client.query_points(
collection_name=self.qdrant.collection_name,
query=query_vector,
limit=limit,
score_threshold=score_threshold,
query_filter=query_filter,
)
points = getattr(response, "points", []) or []