Skip to content

Backend API Release 1.1.33

Choose a tag to compare

@github-actions github-actions released this 02 Mar 08:19
· 16 commits to main since this release

[1.1.33] - 2026-03-02

Added

  • 레시피 생성 소스 기반 식별 모델 도입
    • RecipeInfo에 sourceType, sourceKey, currentJobId 필드 추가
    • (market, source_type, source_key) 유니크 제약으로 중복 생성 제어
    • RecipeSourceType enum 추가 (YOUTUBE)
  • jobId 기반 생성 실행 추적 추가
    • RecipeProgress에 jobId 필드 추가
    • RecipeProgressService.gets(recipeId, jobId) 및 RecipeInfo.get(recipeId, jobId) 조회 경로 추가
  • 파이프라인 신규 단계 추가
    • RecipeCreationLoadYoutubeMetaStep 추가
    • LOAD_YOUTUBE_META 진행 단계(RecipeProgressStep) 추가
  • 카테고리 레시피 응답 필드 확장
    • CategorizedRecipesResponse에 recipe_status, video_type 필드 추가

Changed

  • 레시피 생성 흐름 async-first로 리팩토링
    • RecipeCreationFacade.create()에서 sourceKey(videoId) 기준으로 상태 분기(join/retry/new create) 처리
    • FAILED 상태는 조건부 retry(FAILED -> IN_PROGRESS) 후 재진입, IN_PROGRESS/SUCCESS는 기존 레시피로 합류
  • 중복 생성 제어 방식 전환
    • RecipeCreationTxService, RecipeIdentify* 기반 식별/락 흐름 제거
    • RecipeInfo 유니크 제약 + RECIPE_DUPLICATE_SOURCE 예외 기반 처리로 통합
  • 생성 파이프라인 재시도 비용 최적화
    • briefing/detailMeta/ingredient/step/tag/youtubeMeta 존재 시 재생성 외부 호출 생략
    • 존재 확인을 exists 쿼리 중심으로 변경
  • YouTube 메타 모델 단순화
    • 저장 컬럼을 videoUri에서 videoId 중심으로 변경
    • getVideoUri()는 videoId로 동적 생성
    • RecipeYoutubeMeta의 상태(BANNED/BLOCKED/FAILED) 저장 방식 제거
  • 크레딧 멱등키 강화
    • 레시피 생성/환불 크레딧 처리에 jobId 포함 (recipe-create, recipe-create-refund)
  • 진행 상태 조회 기준 정교화
    • 레시피 진행 상태 조회 시 currentJobId 기준 이벤트만 반환
  • 레시피 차단 처리 단순화
    • RecipeFacade.blockRecipe에서 YouTube 외부 차단 검증 없이 recipe/bookmark 차단 처리로 변경

Fixed

  • 북마크/최근 응답 null 안정성 개선
    • YouTube 메타 또는 videoType 누락 시 NPE 없이 null-safe 응답 처리
    • 북마크 목록 구성 시 YouTube 메타 누락 건을 제외하지 않고 안전하게 포함
  • 비요리/삭제/임베드 불가 영상 처리 일관화
    • 레시피 생성 실패 사유를 BANNED 상태로 명확히 분기하고 cleanup/환불 흐름 정합성 개선
  • 비동기 생성 제출 실패 보상 강화
    • 북마크 삭제 및 크레딧 환불 롤백 처리 보강

Removed

  • RecipeCreationTxService 제거
  • recipe.creation.identify 패키지(엔티티/서비스/리포지토리/예외/테스트) 제거
  • 미사용 YouTube 메타 에러코드 정리 (YOUTUBE_META_BANNED, YOUTUBE_META_BLOCKED, YOUTUBE_META_NOT_BLOCKED_VIDEO 등)

Added (Test)

  • async-first 생성 흐름, source 기반 중복/재시도, jobId 진행 이력, exists 쿼리 최적화 관련 단위 테스트 전반 갱신
    • RecipeCreationFacadeTest, AsyncRecipeCreationServiceTest, RecipeProgress*Test, RecipeInfo*Test
    • RecipeYoutubeMeta*Test, RecipeControllerTest, content service(briefing/detailMeta/ingredient/step/tag) 테스트

Database Migration

  • 배포 전 수동 마이그레이션 필요
    • recipe 테이블: source_type, source_key, current_job_id 컬럼 추가 및 (market, source_type, source_key) 유니크 인덱스 추가
    • recipe 상태 컬럼: BANNED 값 허용(상태 타입 사용 시)
    • recipe_progress 테이블: job_id 컬럼 추가 및 기존 데이터 백필 필요
    • recipe_youtube_meta 테이블: video_uri -> video_id 전환, recipe_id 유니크 적용, status/updated_at 컬럼 정리 여부 확인 필요