File size: 993 Bytes
a8c7066
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from src.application.dto.feedback_dto import SubmitFeedbackCommand, SubmitFeedbackResult
from src.application.ports.inbound.submit_feedback_use_case import SubmitFeedbackUseCase
from src.application.ports.outbound.observability_port import ObservabilityPort
from src.domain.model.feedback_models import UserFeedback


class SubmitFeedbackService(SubmitFeedbackUseCase):
    def __init__(self, observability_port: ObservabilityPort) -> None:
        self._obs = observability_port

    def execute(self, command: SubmitFeedbackCommand) -> SubmitFeedbackResult:
        feedback = UserFeedback(
            feedback_type=command.feedback_type,
            feedback_comment=command.comment,
        )

        self._obs.create_score(
            trace_id=command.trace_id,
            name="user_feedback",
            value=command.score_value,
            comment=feedback.feedback_comment or f"User {feedback.feedback_type} feedback",
        )
        return SubmitFeedbackResult(status="ok")