davidtran999's picture
Push full code from hue-portal-backend folder
519b145
"""
Fast Path Handler - Returns cached responses from golden dataset.
"""
from typing import Dict, Any
from hue_portal.core.models import GoldenQuery
class FastPathHandler:
"""Handle Fast Path queries using golden dataset."""
def handle(self, query: str, golden_query_id: int) -> Dict[str, Any]:
"""
Get cached response from golden dataset.
Args:
query: User query (for logging).
golden_query_id: ID of matched golden query.
Returns:
Response dict (same format as Slow Path) with additional metadata.
"""
try:
golden_query = GoldenQuery.objects.get(id=golden_query_id, is_active=True)
except GoldenQuery.DoesNotExist:
# Fallback: return error response
return {
"message": "Xin lỗi, không tìm thấy thông tin trong cơ sở dữ liệu.",
"intent": "error",
"results": [],
"count": 0,
"_source": "fast_path",
"_error": "golden_query_not_found"
}
# Increment usage count (async update for performance)
golden_query.usage_count += 1
golden_query.save(update_fields=['usage_count'])
# Return cached response
response = golden_query.response_data.copy()
# Add metadata
response['_source'] = 'fast_path'
response['_golden_query_id'] = golden_query_id
response['_verified_by'] = golden_query.verified_by
response['_accuracy_score'] = golden_query.accuracy_score
# Ensure required fields exist
if 'message' not in response:
response['message'] = golden_query.response_message
if 'intent' not in response:
response['intent'] = golden_query.intent
if 'count' not in response:
response['count'] = len(response.get('results', []))
return response