[hotfix] 피드 단일 조회 response 수정#233
Conversation
Walkthrough피드 상세 조회 응답 객체에 bookTitle 필드가 추가되었고, 매퍼에서 해당 필드를 Book.title로 매핑하도록 확장했다. 방 검색 API의 OpenAPI 설명 문구 오타를 수정했다. 로직 흐름이나 시그니처는 유지되며, 레코드/응답 필드만 확장되었다. Changes
Sequence Diagram(s)sequenceDiagram
participant Client
participant Controller as FeedQueryController
participant Service as FeedService
participant Mapper as FeedQueryMapper
participant Repo as Feed/Book Repos
Client->>Controller: GET /feeds/{id}
Controller->>Service: findFeedDetail(id, userId)
Service->>Repo: fetch Feed, User, Book
Repo-->>Service: Feed, User, Book
Service->>Mapper: toFeedShowSingleResponse(Feed, User, Book, isSaved, isLiked, userId)
Mapper-->>Service: FeedShowSingleResponse(bookTitle 포함)
Service-->>Controller: Response DTO
Controller-->>Client: 200 OK (bookTitle 포함)
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Assessment against linked issues
Assessment against linked issues: Out-of-scope changes
Possibly related PRs
Suggested labels
Suggested reviewers
Poem
Tip 🔌 Remote MCP (Model Context Protocol) integration is now available!Pro plan users can now connect to remote MCP servers from the Integrations page. Connect with popular remote MCPs such as Notion and Linear to add more context to your reviews and chats. ✨ Finishing Touches
🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR/Issue comments)Type Other keywords and placeholders
CodeRabbit Configuration File (
|
Test Results399 tests 399 ✅ 31s ⏱️ Results for commit 9677020. |
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (3)
src/main/java/konkuk/thip/room/adapter/in/web/RoomQueryController.java (2)
35-38: 오탈자 수정 좋습니다. 문구 일관성 소폭 제안 (P3)설명 내 표현을 일관화(띄어쓰기/접속 조사)하면 가독성이 좋아집니다.
아래처럼 미세 수정 제안드립니다.
- description = "검색어(= 방이름 or 책제목), 카테고리 와 매핑되는 모집중인 방을 검색합니다. 공개/비공개 방 모두 검색 가능합니다." + description = "검색어(= 방 이름 또는 책 제목), 카테고리와 매핑되는 모집중인 방을 검색합니다. 공개/비공개 방 모두 검색 가능합니다."
33-33: 필드 명명 일관성 제안: UseCase 캐멀 케이스 정렬 (P3)다른 필드들과 동일한 캐멀 케이스를 맞추면 일관성이 좋아집니다. 런타임 영향은 없으며 Lombok(@requiredargsconstructor) + Spring 타입 주입 특성상 안전합니다.
아래와 같이 rename 제안드립니다.
- private final RoomGetDeadlinePopularUseCase roomGetDeadlinePopularUsecase; + private final RoomGetDeadlinePopularUseCase roomGetDeadlinePopularUseCase; ... - return BaseResponse.ok(roomGetDeadlinePopularUsecase.getDeadlineAndPopularRoomList(category, userId)); + return BaseResponse.ok(roomGetDeadlinePopularUseCase.getDeadlineAndPopularRoomList(category, userId));Also applies to: 159-159
src/main/java/konkuk/thip/feed/application/mapper/FeedQueryMapper.java (1)
79-82: bookTitle 매핑 추가 좋습니다. null 안전성 여부 확인 (P2)
book객체가 항상 존재한다는 전제라면 현재 구현으로 충분합니다. 혹시라도book이 null일 수 있다면 NPE를 예방하는 표현식 매핑으로 바꾸는 것을 권장합니다.아래와 같이 변경 시 null에 안전합니다.
- @Mapping(target = "bookTitle", source = "book.title") + @Mapping(target = "bookTitle", expression = "java(book != null ? book.getTitle() : null)")검증 스크립트(선택): 상세 조회에서
book이 null 가능성이 있는지, 혹은 쿼리/조인 상 항상 보장되는지 관련 서비스/리포지토리를 훑어볼 수 있습니다. 필요하시면 어떤 어댑터/리포지토리 파일을 살펴볼지 지목해주시면 스크립트 드리겠습니다.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (3)
src/main/java/konkuk/thip/feed/adapter/in/web/response/FeedShowSingleResponse.java(1 hunks)src/main/java/konkuk/thip/feed/application/mapper/FeedQueryMapper.java(2 hunks)src/main/java/konkuk/thip/room/adapter/in/web/RoomQueryController.java(1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: seongjunnoh
PR: THIP-TextHip/THIP-Server#113
File: src/main/java/konkuk/thip/recentSearch/adapter/out/persistence/RecentSearchCommandPersistenceAdapter.java:38-44
Timestamp: 2025-07-30T14:05:04.945Z
Learning: seongjunnoh는 코드 최적화 제안에 대해 구체적인 기술적 근거와 효율성 차이를 이해하고 싶어하며, 성능 개선 방식에 대한 상세한 설명을 선호한다.
Learnt from: seongjunnoh
PR: THIP-TextHip/THIP-Server#93
File: src/main/java/konkuk/thip/room/adapter/out/persistence/RoomQueryPersistenceAdapter.java:49-114
Timestamp: 2025-07-28T16:44:31.224Z
Learning: seongjunnoh는 코드 중복 문제에 대한 리팩토링 제안을 적극적으로 수용하고 함수형 인터페이스를 활용한 해결책을 선호한다.
Learnt from: seongjunnoh
PR: THIP-TextHip/THIP-Server#195
File: src/main/java/konkuk/thip/feed/application/mapper/FeedQueryMapper.java:0-0
Timestamp: 2025-08-13T05:22:32.287Z
Learning: seongjunnoh는 데이터 무결성과 중복 방지에 대한 고민이 깊으며, LinkedHashSet을 활용한 중복 제거와 순서 보장을 동시에 달성하는 솔루션을 선호한다.
Learnt from: seongjunnoh
PR: THIP-TextHip/THIP-Server#180
File: src/main/java/konkuk/thip/room/application/service/AttendanceCheckCreateService.java:22-40
Timestamp: 2025-08-14T09:15:31.332Z
Learning: seongjunnoh는 기술적 완벽성보다 실제 비즈니스 시나리오와 사용자 행동 패턴을 우선 고려하며, 발생 가능성이 낮은 엣지 케이스보다는 실용적인 구현을 선호한다.
Learnt from: seongjunnoh
PR: THIP-TextHip/THIP-Server#112
File: src/main/java/konkuk/thip/feed/adapter/out/persistence/repository/FeedQueryRepositoryImpl.java:272-272
Timestamp: 2025-07-30T10:44:34.115Z
Learning: seongjunnoh는 피드 커서 페이지네이션에서 LocalDateTime 단일 커서 방식을 선호하며, 복합 키 기반 커서보다 구현 단순성과 성능을 우선시한다.
🔇 Additional comments (2)
src/main/java/konkuk/thip/feed/adapter/in/web/response/FeedShowSingleResponse.java (1)
11-11: bookTitle 필드 추가 적절합니다 (P2: 클라이언트 영향 점검 권장)
- 응답 스키마 비파괴적 확장으로 서버 로직에는 영향이 없습니다.
new FeedShowSingleResponse(...)호출은 레포 전역에서 발견되지 않아, 대부분 MapStruct 매핑 경로만 사용 중임을 확인했습니다.- 다만 Strict JSON 스키마 검증이나 필드 순서에 의존하는 클라이언트가 있을 수 있으니, 릴리즈 노트 공유 및 클라이언트 테스트 진행을 권장드립니다.
src/main/java/konkuk/thip/feed/application/mapper/FeedQueryMapper.java (1)
55-61: 확인 완료: 모든 응답 DTO에bookTitle암시적 매핑 적용
FeedQueryDto에bookTitle필드가 정의되어 있고, MapStruct가 이름 기반 암시적 매핑을 지원하므로 FeedShowByUserResponse·FeedShowAllResponse·FeedShowMineResponse 등 모든 관련 DTO에bookTitle이 정상 반영됩니다.
#️⃣ 연관된 이슈
📝 작업 내용
이슈 참고해주시면 됩니다
📸 스크린샷
💬 리뷰 요구사항
📌 PR 진행 시 이러한 점들을 참고해 주세요
Summary by CodeRabbit
신기능
문서