Merged
Conversation
S3 버킷 프라이빗 전환에 따라 Presigned URL 기반 파일 접근 방식 도입 - S3Presigner Bean 등록 (S3Config) - S3PresignedUrlService: presigned GET URL 생성 (기존 풀 URL 하위 호환) - S3UploadServiceImpl: 업로드 후 S3 키만 반환하도록 변경 - FileUploadController: 응답에 s3Key + presignedUrl 포함 - application.yml: presigned URL 만료 시간 설정 추가 (6시간) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 통합 HomeBattleResponse를 섹션별 전용 DTO로 분리 (EditorPick, Trending, BestBattle, TodayQuiz, TodayVote, NewBattle) - 퀴즈(O/X)와 투표(4지선다)를 별도 응답 타입으로 분리 - Best배틀/새로운배틀 철학자 이름을 태그(PHILOSOPHER)에서 추출 - 새로운배틀에 철학자 이미지 URL 추가 - TodayBattleResponse에 퀴즈·투표 전용 필드 추가 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- PhilosopherType, CharacterType enum에 label(한글)과 imageKey(S3 경로) 추가 - JSON 직렬화를 enum name(대문자) 통일, 한글은 별도 label 필드로 전달 - CharacterTypeConverter를 enum name 기반으로 변경 - MypageResponse, RecapResponse에 이미지 presigned URL 및 label 필드 추가 - MypageService에 S3PresignedUrlService 연동 - FileCategory에 CHARACTER 카테고리 추가 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- PhilosopherType에 typeName, description, bestMatch, worstMatch, 6축 고정 점수 추가 - UserProfile에 philosopherType 필드 추가 (nullable, @Enumerated STRING) - 최초 5회 투표 기반 PHILOSOPHER 태그 최다 빈도로 철학자 유형 자동 산출 후 저장 - Recap 성향 점수를 UserTendencyScore 대신 PhilosopherType 고정값으로 변경 - bestMatch/worstMatch도 PhilosopherType에서 자동 결정 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- search 도메인 신설 (controller, service, dto, enum) - GET /api/v1/search/battles 엔드포인트 추가 - 카테고리 태그 필터, 인기순/최신순 정렬, offset 페이지네이션 지원 - BattleRepository에 searchAll, searchByCategory 쿼리 추가 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
jucheonsu
approved these changes
Mar 28, 2026
Member
jucheonsu
left a comment
There was a problem hiding this comment.
고생하셨고 감사합니다! Merge 진행해주시면 감사드리겠습니다!
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
GET /api/v1/search/battles) — 카테고리 필터, 인기순/최신순 정렬, offset 페이지네이션Changes
HomeResponse를 6개 섹션별 DTO로 분리 (EditorPick, Trending, BestBattle, TodayQuiz, TodayVote, NewBattle)S3PresignedUrlService,S3Config신설,FileUploadControllerpresigned URL 응답 추가PhilosopherType10종 (label, typeName, description, bestMatch, worstMatch, 6축 점수, imageKey),CharacterType8종 정규화UserProfile.philosopherType필드 추가,MypageService.resolvePhilosopherType()산출 로직search도메인 신설 (Controller, Service, DTO, Enum),BattleRepository검색 쿼리 추가Test plan
./gradlew build컴파일 확인 (contextLoads 제외 전 테스트 통과)Closes #64
🤖 Generated with Claude Code