Spaces:
Sleeping
Sleeping
| """ | |
| 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 | |