본문으로 건너뛰기

추천 API

이 문서로 해결할 질문

  • GET /recipes/recommended 계약과 응답 필드는 무엇인가요?
  • 캐시·fallback·무효화는 어떻게 동작하나요?
  • Consumer 추천 파이프라인과의 관계는 무엇인가요?

전체 흐름은 추천 시스템을 참고하세요.

엔드포인트

GET /api/v1/recipes/recommended?limit=10
Authorization: Cookie accessToken (JWT 필수)
항목
전략server/producer/.../recommendation-cache-strategy.ts
recommendation:{userId}
TTL3600초 (CACHE_TTL_RECOMMENDATION_SECONDS)

무효화는 Consumer RECOMMENDATION 타입으로 수행하며, 캐시 무효화를 참고하세요.

응답 (RecommendedRecipeItemDto[])

필드설명
recipeRecipeSummary (제목, 이미지, stats 등)
rank추천 순위 (1부터)
score추천 점수
reason추천 근거 문구
calculatedAt원본 갱신 시각

OpenAPI 스키마는 RecipeRecommendationItem이며, 개인화 추천 레시피 조회 레퍼런스에서 필드 정의를 확인할 수 있습니다.

조회 로직

Fallback 시 reason에 초기 추천 데이터 없음을 명시합니다.

프론트엔드 연동

  • /recipe CSR 섹션은 useRecommendedRecipes()를 사용하며, React Query QUERY_CACHE.recommended를 적용합니다.
  • 로그인이 필수이며, 비로그인 시 섹션을 미표시하거나 로그인을 유도합니다.

원본 갱신 (Consumer)

user-eventsRecommendationHandler로, activity-eventsActivityRecommendationService로 처리되어 PostgreSQL upsert와 Top N(10) 재정렬이 수행되고, RECOMMENDATION 캐시 무효화가 이어집니다.

가중치 요약은 추천 시스템 — 주요 이벤트 가중치를, 상세는 추천 파이프라인을 참고하세요.

확장 시 유의

챗봇 SuggestedRecipe와 추천 원본 테이블을 직접 동기화하지 않습니다. 필요 시 챗봇 tool이 본 API를 호출하는 방식으로 확장합니다.

관련 문서