Skip to content

Conversation

@ckdals4600
Copy link
Contributor

관련 이슈

PR 설명

채팅방 생성 시 사용자의 첫 메시지를 분석하여 제목을 추천해주는 AI 서버를 연동함.
기존 테스트용 MockAiTitleClient를 대체하여 OpenFeign을 활용한 실제 통신 로직을 구현했으며, 외부 서버 장애 시 기본 제목을 반환하는 예외 처리 로직을 적용함.

작업 내용

1. Feign Client 설정 및 구현

  • 설정 활성화 (LinkivingApplication):
    • @EnableFeignClients 어노테이션을 추가하여 Feign Client 기능을 활성화함.
  • 인터페이스 정의 (FeignAiTitleClient):
    • POST /webhook/title-generate 엔드포인트를 호출하는 클라이언트를 정의함.
    • AI 서버 응답이 JSON Array 형태임을 고려하여 반환 타입을 List<TitleGenerateRes>로 설정함.

2. 비즈니스 로직 구현 (RealAiTitleClient)

  • 프로파일 분리:
    • @Profile("!test")를 적용하여 실제 운영/개발 환경에서만 동작하도록 설정함 (테스트 환경은 MockAiTitleClient 유지).
  • 응답 처리:
    • AI 서버로부터 받은 리스트의 첫 번째 요소(get(0))를 추출하여 제목으로 사용함.
  • Fallback (Soft Fail):
    • 외부 서버 타임아웃이나 5xx 에러 발생 시, 트랜잭션을 롤백하지 않고 log.error를 남긴 후 기본 제목("새로운 채팅방")을 반환하도록 예외 처리를 구현함.

3. DTO 정의

  • Request (TitleGenerateReq): firstMessage 필드 정의.
  • Response (TitleGenerateRes): title 필드 정의.

@ckdals4600 ckdals4600 requested review from Goder-0 and minibr December 20, 2025 19:29
@ckdals4600 ckdals4600 self-assigned this Dec 20, 2025
@ckdals4600 ckdals4600 linked an issue Dec 20, 2025 that may be closed by this pull request
@ckdals4600 ckdals4600 force-pushed the feature/#153-chat-title-ai-connect branch from bf67aa4 to d1748ba Compare December 21, 2025 00:22
@github-actions
Copy link

github-actions bot commented Dec 21, 2025

📊 코드 커버리지 리포트

Overall Project 88.69% -0.14% 🍏
Files changed 91.07% 🍏

File Coverage
MockTitleClient.java 100% 🍏
ChatFacade.java 100% 🍏
RagTitleClient.java 89.58% -10.42% 🍏

@ckdals4600 ckdals4600 force-pushed the feature/#153-chat-title-ai-connect branch from d1748ba to ba6308a Compare December 23, 2025 22:52
@Goder-0
Copy link
Contributor

Goder-0 commented Dec 30, 2025

public interface AiTitleClient {
/**
* AI 서버에 요약 요청을 보냅니다.
* @param firstChat 채팅 시작 대화
* @return 제목
*/
String generateSummary(String firstChat);
}

해당 부분을 포함하여 현재 각 Feign Client의 method명이 generateSummary로 되어 있는데, 링크 요약 생성 기능과 역할이 유사한 이름이라 혼동 가능성이 있다고 생각합니다.
또한 주석 표현인 제목 생성 / 요약 생성 역시 해석에 따라 의미가 달라질 수 있어, 기능 의도에 대한 모호함이 남아 있습니다.

혼동을 줄이기 위해 명칭을 더 구체적으로 변경해보는 건 어떨까요?
예를 들어, 제목 생성의 경우 generateTitle, 링크 요약 생성은 generateLinkSummary 와 같이 목적을 명확히 드러내는 네이밍을 고려해볼 수 있을 것 같습니다.

@ckdals4600
Copy link
Contributor Author

ckdals4600 commented Dec 30, 2025

public interface AiTitleClient {
/**
* AI 서버에 요약 요청을 보냅니다.
* @param firstChat 채팅 시작 대화
* @return 제목
*/
String generateSummary(String firstChat);
}

해당 부분을 포함하여 현재 각 Feign Client의 method명이 generateSummary로 되어 있는데, 링크 요약 생성 기능과 역할이 유사한 이름이라 혼동 가능성이 있다고 생각합니다. 또한 주석 표현인 제목 생성 / 요약 생성 역시 해석에 따라 의미가 달라질 수 있어, 기능 의도에 대한 모호함이 남아 있습니다.

혼동을 줄이기 위해 명칭을 더 구체적으로 변경해보는 건 어떨까요? 예를 들어, 제목 생성의 경우 generateTitle, 링크 요약 생성은 generateLinkSummary 와 같이 목적을 명확히 드러내는 네이밍을 고려해볼 수 있을 것 같습니다.

해당 부분은 작업 중에 요약 생성 부분과 혼동하여 메소드명을 잘못 작성한 것 같습니다.
generateTitle로 수정 완료 하였습니다.

@Goder-0
Copy link
Contributor

Goder-0 commented Jan 2, 2026

리베이스 부탁드립니다.

@ckdals4600 ckdals4600 force-pushed the feature/#153-chat-title-ai-connect branch from 49e16d6 to 8bd4dee Compare January 2, 2026 13:24
@ckdals4600
Copy link
Contributor Author

리베이스 부탁드립니다.

진행했습니다.

@ckdals4600 ckdals4600 force-pushed the feature/#153-chat-title-ai-connect branch 3 times, most recently from a6d1b2a to bb7c9c9 Compare January 4, 2026 23:54
@ckdals4600 ckdals4600 force-pushed the feature/#153-chat-title-ai-connect branch from bb7c9c9 to 865a93c Compare January 5, 2026 02:06
@Goder-0 Goder-0 merged commit ed0b087 into main Jan 14, 2026
1 check passed
@Goder-0 Goder-0 deleted the feature/#153-chat-title-ai-connect branch January 14, 2026 11:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

채팅방 제목 생성 AI 서버 연동

3 participants