#51 [Refactor] User 엔티티 연결 및 전 도메인 TODO 해소#66
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>
- Vote, Perspective, PerspectiveComment, PerspectiveLike, CreditHistory 엔티티의 Long userId를 @manytoone User로 전환 - Perspective의 Long battleId, optionId도 @manytoone Battle, BattleOption으로 전환 - 전 도메인 컨트롤러의 Long userId = 1L 하드코딩을 @AuthenticationPrincipal Long userId로 교체 - Repository 파생 쿼리 메서드명을 엔티티 ���조에 맞게 정리 - S3 임시 구현 TODO, AdMob 포인트 TODO 등 해소된 TODO 주석 제거 - 관련 서비스·테스트 일괄 수정 및 빌드 검증 완료 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
Long userId→@ManyToOne User엔티티 관계로 전환Long battleId,Long optionId→@ManyToOne Battle,@ManyToOne BattleOption으로 전환Long userId = 1L하드코딩 →@AuthenticationPrincipal Long userId로 교체 (VoteController, PerspectiveController, PerspectiveCommentController, PerspectiveLikeController)Changes (29 files)
Test plan
./gradlew compileJava compileTestJava컴파일 성공Closes #51
🤖 Generated with Claude Code