Skip to content

요약 AI 서버 연동 #166

@ckdals4600

Description

@ckdals4600

이슈 배경

  • AI 서버(n8n webhook)와 연동하여 링크 최초 요약요약 재생성 기능을 수행하는 클라이언트를 구현함.
  • 기존 Mock 구현체를 제거하고 Feign Client를 통해 실제 외부 API를 호출하도록 변경함.

이슈 내용

1. API 명세 구현 (RagSummaryClient)

A. 최초 요약 요청 (generateSummary)

  • Endpoint: POST /webhook/summary-initial
  • Request:
    {
      "linkId": 103,
      "userId": 2,
      "title": "Spring Boot 공식문서",
      "url": "https://...",
      "memo": "3.2 릴리스 노트"
    }
  • Response: SummarizeRes (JSON Array)
    • List 형태로 반환
    • summary: 새로 생성된 요약.
    [
      {
        "summary": "**Spring Boot 리뷰**\n\n스프링 부트는 쉽게 서빙을 위한..."
      }
    ]

B. 요약 재생성 요청 (regenerateSummary)

  • Endpoint: POST /webhook/summary-resummarize
  • 동작: 새로 생성된 요약문과 기존 요약 대비 차이점을 반환함.
  • Request
    • linkId: 링크 ID (Integer).
    • userId: 요청한 사용자 ID (Integer).
    • url: 원본 링크 URL (String).
    • summary: 기존 요약 내용 (String) - AI가 이전 내용과 비교하기 위해 필요함.
      {
      "linkId": 103,
      "userId": 1,
      "url": "https://spring.io/projects/spring-boot",
      "summary": "기존 요약 내용입니다..."
      }
  • Response: ReSummarizeRes (JSON Array)
    • List 형태로 반환
    • summary: 새로 생성된 요약.
    • difference: 기존 요약과의 차이점 또는 개선된 점.
     [
      {
        "summary": "**Spring Boot 리뷰**\n\n스프링 부트는 쉽게 서빙을 위한...",
        "difference": "요약된 텍스트는 이전보다 더 자세하고 구조화된 정보를 제공합니다."
      }
    ]

2. 서비스 로직 구현

  • RealAiSummaryClient: AiSummaryClient 인터페이스의 구현체 작성, 프로파일 분리
  • AiSummaryFeigin: AI 요약 서버 연동 Feign 클라이언트 작성
  • DTO 정의

4. 예외 처리

  • Fallback: 외부 서버 통신 실패(Timeout, 5xx) 시, 트랜잭션 롤백 없이 에러 로그를 남기고 null 또는 실패 응답을 반환하여 메인 로직에 영향을 주지 않도록 함(Soft Fail).

참고 자료

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