Skip to content

develp branch 작업내용 머지 : develop -> main#167

Merged
heeeeyong merged 50 commits intomainfrom
develop
Aug 19, 2025
Merged

develp branch 작업내용 머지 : develop -> main#167
heeeeyong merged 50 commits intomainfrom
develop

Conversation

@heeeeyong
Copy link
Collaborator

@heeeeyong heeeeyong commented Aug 19, 2025

이하동일

Summary by CodeRabbit

  • 신기능

    • 전역 댓글 바텀시트 추가로 어디서나 댓글 확인/작성.
    • 내 기록을 피드에 고정(핀)하기 지원 및 /feed/write 경로 추가, 핀으로 진입 시 도서/내용 자동 채움(읽기 전용).
    • 도서 검색·그룹 검색 무한 스크롤/디바운스 검색 도입, 결과에서 상세 페이지로 바로 이동.
    • 도서 상세의 관련 피드 목록 제공(정렬/무한 스크롤).
    • 저장함 페이지가 실제 저장한 피드/도서 데이터를 로드하고 무한 스크롤 지원.
    • 추억의 투표형 기록에 즉시 투표/취소 및 결과 반영.
  • 개선

    • 비공개 그룹 참여 비밀번호 모달 도입, 가입/마감 흐름 및 레이아웃 정제, 설명 말줄임 처리.
    • 더보기 메뉴에 “피드에 핀하기” 추가.
    • 마이페이지 문구/링크 업데이트.
    • 검색 결과 총 개수 표시 및 일부 UI 안정성 개선.

ljh130334 and others added 30 commits August 18, 2025 17:31
  - 투표하기 API 함수 구현 (postVote)
  - 투표 관련 타입 정의 추가 (VoteRequest, VoteData, VoteItemResult)
  - PollOption 타입에 voteItemId, isVoted 필드 추가
  - PollRecord 컴포넌트에 투표 클릭 핸들러 구현
  - 실시간 투표 결과 업데이트 및 상태 관리
  - 에러 코드별 상세 메시지 처리 및 토스트 팝업
  - 투표 진행 중 UI 비활성화 처리
브랜치 히스토리 동기화: main -> develop
feat: 투표하기 API 연동 및 실시간 투표 기능 구현
fix: 피드 게시글 수정 navigation 추가
feat: GroupSearch 로직 추가 적용, click 이벤트 적용
  - 기록 핀하기 API 연동 함수 추가 (pinRecordToFeed.ts)
  - 기록 아이템에 핀 아이콘 버튼 추가 (내 기록일 때만 표시)
  - 핀하기 확인 팝업 구현
  - 피드 작성 페이지 라우팅 추가 (/feed/write)
  - 핀 데이터로 피드 작성 페이지 초기화
  - 책 선택, 글 내용 수정 불가 옵션 추가
feat: 기록을 피드에 핀하기 API 연동
feat: BookSearchBottomSheet 실제 검색 API 연동
ho0010 and others added 20 commits August 19, 2025 01:46
feat: getFeedsByIsbn API, PasswordModal API 연동
feat: 저장한 책 및 피드 조회 API 연동
  - useReplyActions 대신 postReply API 직접 사용
  - 상태 동기화 지연으로 인한 댓글 전송 버그 수정
  - 댓글 작성 시 즉시 업로드되도록 개선
  - BookSearchBottomSheet 패턴으로 Memory 페이지에서만 렌더링
fix: 책 검색 모달 탭 유지 및 무한스크롤 기능 추가
fix: 책 검색 무한스크롤 로직 수정 및 최근검색어 API 수정
@vercel
Copy link

vercel bot commented Aug 19, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
thip Ready Ready Preview Comment Aug 19, 2025 5:55am

@coderabbitai
Copy link

coderabbitai bot commented Aug 19, 2025

Caution

Review failed

The pull request is closed.

Walkthrough

여러 API 모듈(저장 피드/도서, ISBN 연관 피드, 투표, 핀 고정)을 추가하고, 검색·저장·그룹/메모리·피드 관련 UI를 페이지네이션/무한 스크롤, 비밀번호 모달, 글로벌 댓글 바텀시트, 핀-투-피드 흐름 등으로 확장했습니다. 라우트 추가 및 다수 컴포넌트/스토어의 공개 인터페이스가 갱신되었습니다.

Changes

Cohort / File(s) Summary
Git & housekeeping
/.gitignore
CLAUDE.md 무시 규칙과 주석 추가.
Books API
src/api/books/getSavedBooksInMy.ts, src/api/books/getSearchBooks.ts
내 저장 도서 조회 API 추가. 검색 변환 함수에 startIndex 옵션 도입(ID 오프셋 반영).
Feeds API
src/api/feeds/getFeedsByIsbn.ts, src/api/feeds/getSavedFeedsInMy.ts
ISBN 연관 피드 조회 및 내 저장 피드 조회 API 추가(커서 기반 페이지네이션).
Recent search API
src/api/recentsearch/deleteRecentSearch.ts
userId 파라미터 제거, 엔드포인트 단순화.
Record API exports
src/api/record/index.ts, src/api/record/postVote.ts, src/api/record/pinRecordToFeed.ts
레코드 배럴 파일 추가. 투표 POST 및 레코드 핀 고정 API 추가.
BookSearchBottomSheet (검색·스크롤)
src/components/common/BookSearchBottomSheet/BookList.tsx, .../BookSearchBottomSheet.tsx, .../useBookSearch.ts
무한 스크롤(IntersectionObserver) 도입, 검색 모드/페이지네이션 상태와 핸들러 추가, prop 인터페이스 확장.
Global Comment Bottom Sheet
src/components/common/CommentBottomSheet/GlobalCommentBottomSheet.styled.ts, .../GlobalCommentBottomSheet.tsx, src/stores/useCommentBottomSheetStore.ts
글로벌 댓글 바텀시트 컴포넌트/스타일/스토어 추가, 댓글 로드/작성/답글 처리.
Common UI tweaks
src/components/common/LoadingSpinner.tsx, src/components/common/Modal/MoreMenu.tsx, src/stores/usePopupStore.ts
로딩 메시지 기본값 공백으로 변경. MoreMenu에 onPin 액션과 스타일 확장.
Create Post (핀 연계/읽기전용)
src/components/createpost/PostContentSection.tsx, src/pages/post/CreatePost.tsx
readOnly prop 추가 및 핀 데이터 상태에서 읽기 전용 처리.
Feed
src/components/feed/MyFeed.tsx, src/pages/feed/FeedDetailPage.tsx, src/pages/index.tsx
MyFeed에서 isMyFeed 프롭 제거(내 피드 고정). FeedDetail의 편집 시 페이지 이동 활성화. feed/write 라우트 추가.
Group UI/Flow
src/components/group/GroupCard.tsx, src/components/group/MyGroupModal.tsx, src/components/group/PasswordModal.tsx, src/pages/groupDetail/GroupDetail.styled.ts, src/pages/groupDetail/GroupDetail.tsx
카드 라벨/스타일 일부 변경 및 onClick 지원. 모달에서 네비게이션 → 콜백 기반(onClose/onJoined). GroupDetail에 PasswordModal 연동 및 조작 가드/상태 추가.
Memory/Record (투표/핀/댓글)
src/components/memory/RecordItem/PollRecord.tsx, src/components/memory/RecordItem/RecordItem.tsx, src/pages/memory/Memory.tsx, src/types/memory.ts, src/types/record.ts
투표 흐름(POST, 에러 매핑, UI 갱신)과 핀-투-피드 플로우, 글로벌 댓글 시트 연동. PollOption에 voteItemId/isVoted 추가. 투표 관련 타입 추가.
Search (책/그룹)
src/components/search/BookSearchResult.tsx, src/components/search/GroupSearchResult.tsx, src/pages/search/Search.tsx, src/pages/groupSearch/GroupSearch.tsx
총건수 표시 및 무한 스크롤 정교화. GroupSearchResult에 showTabs/onClickRoom 도입. 상태 머신화(searchStatus) 및 네비게이션/디바운스 검색. recent delete 시 userId 제거.
SearchBook (도서 상세/피드)
src/pages/searchBook/SearchBook.tsx, src/pages/searchBook/SearchBookGroup.tsx
ISBN 연관 피드 실데이터 로딩, 필터/무한 스크롤 추가, 레이아웃/로딩 상태 개선.
Mypage
src/pages/mypage/Mypage.tsx, src/pages/mypage/SavePage.tsx
마이페이지 텍스트/링크 갱신. 저장 탭에 API 연동 및 저장 피드 무한 스크롤/도서 저장 토글 구현.

Sequence Diagram(s)

sequenceDiagram
  actor U as User
  participant R as RecordItem
  participant API as pinRecordToFeed
  participant Nav as Router

  U->>R: Pin 버튼 클릭
  R->>U: 확인 다이얼로그
  alt 확인
    R->>API: GET /rooms/{roomId}/records/{recordId}/pin
    API-->>R: { isSuccess, code, data }
    alt isSuccess
      R->>Nav: navigate('/feed/write', state: pinData)
    else 실패
      R->>U: 스낵바 에러 표시
    end
  else 취소
    R-->>U: 중단
  end
Loading
sequenceDiagram
  actor U as User
  participant S as useCommentBottomSheetStore
  participant C as GlobalCommentBottomSheet
  participant API as getComments/postReply

  U->>S: openCommentBottomSheet(postId, postType)
  S-->>C: isOpen=true, postId, postType
  C->>API: getComments(postId, {postType, size})
  API-->>C: { commentList }
  U->>C: 입력 후 전송
  C->>API: postReply(postId, payload)
  API-->>C: { isSuccess }
  C->>API: getComments(...) (리프레시)
Loading
sequenceDiagram
  actor U
  participant B as BookList
  participant H as useBookSearch
  participant API as getSearchBooks

  U->>H: setSearchQuery(q)
  H->>API: GET /books/search?page=1
  API-->>H: { items, last, total }
  H-->>B: books, hasNextPage

  B->>B: last item intersect
  B->>H: loadMoreSearchResults()
  H->>API: GET /books/search?page=next
  API-->>H: { items, last }
  H-->>B: append, update hasNextPage
Loading
sequenceDiagram
  actor U
  participant GD as GroupDetail
  participant PM as PasswordModal
  participant API as postJoinRoom

  U->>GD: 비공개 방 참여 클릭
  GD->>PM: open(showPasswordModal)
  U->>PM: 비밀번호 입력 완료
  PM->>API: POST /rooms/{id}/join (password)
  API-->>PM: { isSuccess }
  alt 성공
    PM->>GD: onJoined(roomId)
    PM->>GD: onClose()
    GD->>GD: 상태 업데이트(isJoining=true)
  else 실패
    PM->>U: 스낵바 에러
  end
Loading
sequenceDiagram
  actor U
  participant SB as SearchBook
  participant API as getFeedsByIsbn
  participant V as View

  U->>SB: 필터 선택/스크롤
  SB->>API: GET /feeds/related-books/{isbn}?sort=...&cursor=...
  API-->>SB: { feeds, nextCursor, isLast }
  SB->>V: 렌더/추가, 옵저버로 무한 스크롤
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~75 minutes

Possibly related PRs

Suggested labels

✨ Feature, 📬 API

Suggested reviewers

  • ho0010
  • ljh130334

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.


📜 Recent 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.

📥 Commits

Reviewing files that changed from the base of the PR and between 8691986 and 327fbb8.

⛔ Files ignored due to path filters (2)
  • src/assets/books/lockedBook.svg is excluded by !**/*.svg
  • src/assets/feed/pin.svg is excluded by !**/*.svg
📒 Files selected for processing (42)
  • .gitignore (1 hunks)
  • src/api/books/getSavedBooksInMy.ts (1 hunks)
  • src/api/books/getSearchBooks.ts (1 hunks)
  • src/api/feeds/getFeedsByIsbn.ts (1 hunks)
  • src/api/feeds/getSavedFeedsInMy.ts (1 hunks)
  • src/api/recentsearch/deleteRecentSearch.ts (1 hunks)
  • src/api/record/index.ts (1 hunks)
  • src/api/record/pinRecordToFeed.ts (1 hunks)
  • src/api/record/postVote.ts (1 hunks)
  • src/components/common/BookSearchBottomSheet/BookList.tsx (3 hunks)
  • src/components/common/BookSearchBottomSheet/BookSearchBottomSheet.tsx (3 hunks)
  • src/components/common/BookSearchBottomSheet/useBookSearch.ts (6 hunks)
  • src/components/common/CommentBottomSheet/GlobalCommentBottomSheet.styled.ts (1 hunks)
  • src/components/common/CommentBottomSheet/GlobalCommentBottomSheet.tsx (1 hunks)
  • src/components/common/LoadingSpinner.tsx (1 hunks)
  • src/components/common/Modal/MoreMenu.tsx (5 hunks)
  • src/components/createpost/PostContentSection.tsx (2 hunks)
  • src/components/feed/MyFeed.tsx (2 hunks)
  • src/components/group/GroupCard.tsx (2 hunks)
  • src/components/group/MyGroupModal.tsx (4 hunks)
  • src/components/group/PasswordModal.tsx (4 hunks)
  • src/components/memory/RecordItem/PollRecord.tsx (4 hunks)
  • src/components/memory/RecordItem/RecordItem.tsx (6 hunks)
  • src/components/search/BookSearchResult.tsx (4 hunks)
  • src/components/search/GroupSearchResult.tsx (5 hunks)
  • src/pages/feed/FeedDetailPage.tsx (1 hunks)
  • src/pages/feed/UserSearch.tsx (1 hunks)
  • src/pages/groupDetail/GroupDetail.styled.ts (2 hunks)
  • src/pages/groupDetail/GroupDetail.tsx (8 hunks)
  • src/pages/groupSearch/GroupSearch.tsx (6 hunks)
  • src/pages/index.tsx (1 hunks)
  • src/pages/memory/Memory.tsx (3 hunks)
  • src/pages/mypage/Mypage.tsx (2 hunks)
  • src/pages/mypage/SavePage.tsx (4 hunks)
  • src/pages/post/CreatePost.tsx (3 hunks)
  • src/pages/search/Search.tsx (7 hunks)
  • src/pages/searchBook/SearchBook.tsx (8 hunks)
  • src/pages/searchBook/SearchBookGroup.tsx (1 hunks)
  • src/stores/useCommentBottomSheetStore.ts (1 hunks)
  • src/stores/usePopupStore.ts (1 hunks)
  • src/types/memory.ts (1 hunks)
  • src/types/record.ts (1 hunks)
✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch develop

🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbitai help to get the list of available commands.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@heeeeyong heeeeyong merged commit 40b9edf into main Aug 19, 2025
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants