Skip to content

#551 [Feat] 클래스 Picke 배틀 추천 API 및 어드민 배틀 클래스 설정 - #552

Merged
si-zero merged 1 commit into
devfrom
feat/#551
Oct 21, 2026
Merged

si-zero merged 1 commit into
devfrom
feat/#551

Conversation

@si-zero

@si-zero si-zero commented Oct 21, 2026

Copy link
Copy Markdown
Member

#️⃣ 연관된 이슈

📝 작업 내용

✨ Feat

내용 파일
추천 API GET /api/v1/class-battle-recommendations?difficulty=&categories=&keyword=: 새 클래스 만들기 > Picke 배틀 > 조건에 맞는 콘텐츠 ClassBattleRecommendationController.java, ClassBattleRecommendationService.java
후보: 공개(PUBLISHED)·미삭제·class_recommendable = true 배틀 중 수준이 같고 카테고리가 하나라도 겹치는 배틀 BattleRepository.java
주제(선택, 50자 이하)는 쉼표·공백으로 나눈 단어(최대 5개)가 제목·요약·설명에 들어간 배틀만 남기고 많이 들어간 순. 그다음 에디터픽 → 참여자 수 → 최신 순 ClassBattleRecommendationService.java
최대 3개. 조건에 맞는 배틀이 적으면 채우지 않고 적은 대로(0개 포함) 반환 ClassBattleRecommendationService.java
카드 응답: 썸네일, 카테고리, 수준, 소요 시간, 선택지 A/B(대표 철학자·이미지) ClassBattleRecommendationResponse.java
조건 오류(수준 누락, 카테고리 0개·4개 이상·잘못된 값, 주제 50자 초과)는 400 CLASS_400_RECOMMEND_CONDITION. 카테고리는 한글 이름(철학)과 enum 이름(PHILOSOPHY) 모두 허용 ErrorCode.java
어드민 PATCH /api/v1/admin/battles/{battleId}/class-settings: 수준·카테고리·클래스 추천 여부·중간투표 여부 설정(null 은 변경 없음). 추천을 켤 때 수준·카테고리가 없으면 400 CLASS_400_RECOMMEND_SETTINGS, 커스텀 배틀은 400 CLASS_400_BATTLE AdminBattleController.java, AdminBattleService.java, BattleServiceImpl.java, AdminBattleClassSettingsRequest.java
어드민 배틀 상세 응답에 difficulty, category, classRecommendable, midVoteEnabled 추가 AdminBattleDetailResponse.java, BattleConverter.java
ERD 노트에 추천 규칙 추가 docs/erd/class.puml

📌 공유 사항

  1. 추천 개수는 Figma 의 "추천 결과 8개"가 아니라 최대 3개 기준입니다. 모자라면 비슷한 배틀로 채우지 않습니다.
  2. 지금까지 배틀의 수준·카테고리·클래스 추천 여부를 설정하는 API 가 없어서, 기존 배틀은 모두 추천에서 빠져 있습니다. 어드민 웹에 이 설정 화면을 붙이거나 값을 넣어야 추천에 나옵니다.
  3. 미리듣기 음성은 기존 GET /api/v1/battles/{battleId}/scenario 를 그대로 씁니다.
  4. 컬럼은 ✨ Feat: 클래스 엔티티 및 스키마 SQL 정의 #528 스키마에 이미 있어서 이번 PR 에 추가 SQL 은 없습니다.
  5. 테스트: 추천·어드민 설정 통합 테스트 5건 추가, 전체 571건 통과.

✅ 체크리스트

  • Assignees에 본인을 선택했나요?
  • 컨벤션에 맞는 Type을 선택했나요?
  • Development에 이슈를 연동했나요?
  • Merge 하려는 브랜치가 올바르게 설정되어 있나요?
  • 컨벤션을 지키고 있나요?
  • 로컬에서 실행했을 때 에러가 발생하지 않나요?

@si-zero si-zero self-assigned this Oct 21, 2026
@si-zero si-zero linked an issue Oct 21, 2026 that may be closed by this pull request
3 tasks
@si-zero si-zero added the ✨ Feat (기능 추가) 새로운 기능을 추가할 때 사용합니다. label Oct 21, 2026
@si-zero
si-zero merged commit e0aee2f into dev Oct 21, 2026
1 check passed
@si-zero
si-zero deleted the feat/#551 branch October 21, 2026 10:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✨ Feat (기능 추가) 새로운 기능을 추가할 때 사용합니다.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

✨ Feat: 클래스 Picke 배틀 추천 API (조건 검색)

1 participant