Spaces:
Sleeping
Sleeping
| import sys | |
| from datetime import datetime, timezone | |
| from src.core.logger import logging | |
| from src.core.exception import AppException | |
| from src.app.monitoring.service_metrics import FEEDBACK_REQUEST_SUCCESS, USER_PREDICTION_FEEDBACK, FEEDBACK_REQUEST_FAILED | |
| class FeedbackService: | |
| def __init__(self, feedback_event_consumer): | |
| self.event_consumer_worker = feedback_event_consumer | |
| def submit_feedback(self, request_id, pred_label, feedback_label): | |
| try: | |
| feedback_record = { | |
| "request_id": request_id, | |
| "time_stamp": datetime.now(timezone.utc).isoformat(), | |
| "predicted_label": pred_label, | |
| "feedback_label": feedback_label | |
| } | |
| self.event_consumer_worker.add_event(feedback_record) | |
| FEEDBACK_REQUEST_SUCCESS.inc() | |
| if feedback_label == 1: | |
| USER_PREDICTION_FEEDBACK.labels(feedback="correct").inc() | |
| else: | |
| USER_PREDICTION_FEEDBACK.labels(feedback="incorrect").inc() | |
| return { | |
| "status": "success", | |
| "message": "Feedback recorded successfully", | |
| } | |
| except Exception as e: | |
| logging.exception(f"Failed to submit feedback for request_id: {request_id} : {e}") | |
| FEEDBACK_REQUEST_FAILED.inc() | |
| raise AppException(e, sys) |