Skip to content

메시지 피드백 등록 API 개발 #151

@ckdals4600

Description

@ckdals4600

이슈 배경

  • 사용자가 AI의 답변(메시지)에 대해 좋아요/싫어요 및 의견을 남길 수 있는 피드백 등록 API(POST) 구현
  • ChatController의 비대화를 방지하기 위해 Controller 분리 작업 병행

이슈 내용

  • Endpoint: POST /v1/messages/{messageId}/feedback
  • 설계 사유: 피드백은 특정 메시지에 종속된 하위 리소스이므로, RESTful한 계층형 구조를 채택하여 관계를 명확히 함.
  • Request
    • sentiment: 필수 (LIKE, DISLIKE).
    • text: 선택 (Nullable) (구체적인 의견, 없을 경우 null 허용).
      {
        "sentiment": "LIKE",
        "text": "답변이 매우 정확하고 도움이 됩니다."
      }
  • Response: 생성된 피드백 ID
       {
         "success": true,
         "status": "OK",
         "message": "피드백이 등록되었습니다.",
         "data": {
          "Id": 15
         }
       }

2. 아키텍처 및 로직 설계 (FeedbackFacade)

  • FeedbackFacade 도입:
    • ChatFacade와 동일하게, 여러 도메인(Message, Feedback)을 조율하는 역할을 담당함.
    • 흐름:
      1. MessageQueryService(또는 Service)를 통해 messageId로 대상 메시지를 조회함.
      2. FeedbackService(또는 CommandService)를 호출하여 피드백을 저장함.

3. 구조 개선 (Controller 분리)

  • 패키지 위치: com.sofa.linkiving.domain.chat.controller 내부에 위치함.
  • 분리 내용:
    • 기존 ChatController에 모든 로직을 집중하지 않고, 피드백 관련 요청을 전담할 **FeedbackController.java**를 신규 생성함.
    • 이를 통해 코드의 응집도를 높이고 유지보수성을 확보함.

4. 테스트 작성

  • Integration Test: API 호출 시 피드백이 정상적으로 생성되고 메시지와 연결되는지 검증함.
  • Unit Test: Controller 분리에 따른 MockMvc 테스트 및 서비스 로직 테스트.

참고 자료

No response

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions