-
Notifications
You must be signed in to change notification settings - Fork 0
Description
이슈 배경
- 사용자가 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)을 조율하는 역할을 담당함.- 흐름:
MessageQueryService(또는 Service)를 통해messageId로 대상 메시지를 조회함.FeedbackService(또는 CommandService)를 호출하여 피드백을 저장함.
3. 구조 개선 (Controller 분리)
- 패키지 위치:
com.sofa.linkiving.domain.chat.controller내부에 위치함. - 분리 내용:
- 기존
ChatController에 모든 로직을 집중하지 않고, 피드백 관련 요청을 전담할 **FeedbackController.java**를 신규 생성함. - 이를 통해 코드의 응집도를 높이고 유지보수성을 확보함.
- 기존
4. 테스트 작성
- Integration Test: API 호출 시 피드백이 정상적으로 생성되고 메시지와 연결되는지 검증함.
- Unit Test: Controller 분리에 따른 MockMvc 테스트 및 서비스 로직 테스트.
참고 자료
No response
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels