[FEAT] 내가 등록한 게시물 페이지 구현 - #285
Conversation
This reverts commit 18ab8dd.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Warning Review limit reached
Next review available in: 27 minutes You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (3)
📝 WalkthroughWalkthrough인증 사용자를 위한 Changes내 게시물 기능
Estimated code review effort: 4 (Complex) | ~45 minutes Possibly related PRs
Suggested reviewers: Sequence Diagram(s)sequenceDiagram
participant User
participant MyPostsPage
participant useMyPosts
participant CourseCard
participant PromotionCard
User->>MyPostsPage: 검색어·필터 선택
MyPostsPage->>useMyPosts: 카테고리·정렬·검색어 전달
useMyPosts-->>MyPostsPage: 게시물 페이지 반환
MyPostsPage->>CourseCard: 코스 게시물 전달
MyPostsPage->>PromotionCard: 홍보글 전달
🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (2 warnings)
✅ Passed checks (3 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
Actionable comments posted: 5
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/components/common/CourseCard.tsx`:
- Around line 271-277: ReviewActionMenu의 기본 aria-label이 리뷰 메뉴로 고정되어 있으므로
ariaLabel prop을 지원하도록 업데이트하고, src/components/common/CourseCard.tsx 271-277에서는 코스
카드용 메뉴 이름을, src/components/common/PromotionCard.tsx 128-133에서는 홍보글 카드용 메뉴 이름을
전달하세요.
- Around line 271-277: 실제 수정·삭제 API 흐름이 연결되지 않은 상태에서는 활성화된 ReviewActionMenu를
렌더링하지 않도록 변경하세요. src/components/common/CourseCard.tsx 271-277의 CourseCard와
src/components/common/PromotionCard.tsx 128-133의 PromotionCard에서 관련 콜백이 실제 동작을
제공할 때만 콜백을 전달하고 메뉴를 표시하며, 현재처럼 안내 토스트만 호출하는 경우에는 메뉴를 숨기세요.
In `@src/pages/my-posts/index.tsx`:
- Around line 255-261: Update the requestEdit call in the onEditClick handler to
pass reviewCard.editableImages instead of an empty array, preserving existing
review images when ReviewEditModal initializes and submits unchanged photos.
- Around line 219-223: Update the retry button in the posts page around its
onClick refetch handler so padding and text sizing use the project’s global
scale rather than fixed px-4, py-2, and text-[14px] values. Match the
surrounding UI’s scale-based sizing and avoid introducing fixed minimum
dimensions.
- Around line 94-95: Update the success handling in useReviewEdit so a
successful review edit also invalidates or refreshes the ['myPosts'] query
cache. Preserve the existing edit success behavior while ensuring the my-posts
list reflects the updated review content.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: ef7fd52d-ac7c-4703-8c18-257acfc74412
📒 Files selected for processing (11)
src/components/common/CourseCard.tsxsrc/components/common/PromotionCard.tsxsrc/components/layout/AuthSidebar.tsxsrc/constants/courseFilterLayout.tssrc/hooks/useMyPosts.tssrc/pages/my-posts/constants/filters.tssrc/pages/my-posts/hooks/useMyPostFilters.tssrc/pages/my-posts/index.tsxsrc/pages/my-posts/utils/myPostReviewCard.tssrc/router/AppRouter.tsxsrc/types/user.type.ts
📜 Review details
🧰 Additional context used
🧠 Learnings (5)
📚 Learning: 2026-07-26T17:09:23.387Z
Learnt from: KJun-2
Repo: yeogido/frontend PR: 125
File: src/pages/local-recommendation/course-basic-info/components/CompanionSelector.tsx:82-90
Timestamp: 2026-07-26T17:09:23.387Z
Learning: 이 프로젝트의 반응형 스케일 정책에서는 텍스트(폰트) 크기를 설계 기준 값에 전역 `scale`을 곱해 비율대로 스케일하세요. `12px`, `14px`처럼 특정 최소 하한을 강제로 적용하거나(클램프/바닥값) 임의의 픽셀 값으로 제한하지 마세요. 즉, 기준값(디자인 스펙) × `scale` 방식으로 계산해 비율이 유지되도록 구현합니다.
Applied to files:
src/components/layout/AuthSidebar.tsxsrc/router/AppRouter.tsxsrc/components/common/CourseCard.tsxsrc/components/common/PromotionCard.tsxsrc/pages/my-posts/index.tsx
📚 Learning: 2026-08-03T09:41:11.931Z
Learnt from: KJun-2
Repo: yeogido/frontend PR: 188
File: src/pages/detail/components/CourseDetailLayout.tsx:202-205
Timestamp: 2026-08-03T09:41:11.931Z
Learning: When implementing the shared back-navigation UI component in yeogido/frontend, manage all UI dimensions, including positional offsets, according to the project’s global `scale` policy so the component remains visually consistent across screens.
Applied to files:
src/components/layout/AuthSidebar.tsxsrc/router/AppRouter.tsxsrc/components/common/CourseCard.tsxsrc/components/common/PromotionCard.tsxsrc/pages/my-posts/index.tsx
📚 Learning: 2026-07-26T17:09:27.685Z
Learnt from: KJun-2
Repo: yeogido/frontend PR: 125
File: src/pages/local-recommendation/course-basic-info/components/TransportSelector.tsx:84-91
Timestamp: 2026-07-26T17:09:27.685Z
Learning: In this project’s 390px-based continuous responsive scaling, do not apply an artificial minimum lower bound to text sizes (e.g., avoid clamping via Math.max/min-font-size patterns). Instead, compute typography using proportional ratio scaling: render font sizes as `VALUE * scale` (for example, `DESCRIPTION_FONT_SIZE * scale`). During review, flag any code that enforces a hard minimum text size that breaks the intended proportional scaling.
Applied to files:
src/components/layout/AuthSidebar.tsxsrc/router/AppRouter.tsxsrc/components/common/CourseCard.tsxsrc/components/common/PromotionCard.tsxsrc/pages/my-posts/index.tsx
📚 Learning: 2026-07-26T17:09:32.991Z
Learnt from: KJun-2
Repo: yeogido/frontend PR: 125
File: src/pages/local-recommendation/tag-selection/components/KeywordSelectionSection.tsx:51-56
Timestamp: 2026-07-26T17:09:32.991Z
Learning: When implementing responsive scaling in this project, prefer direct proportional calculations (e.g., using `VALUE * scale`) without applying artificial minimum lower bounds (clamps) to text sizes or other visual dimensions. Only introduce a lower bound when there is an explicitly documented exception; the primary allowed example is enforcing a 44px minimum touch target for interactive elements. In review, flag new/minimum clamps for text/visual dimensions unless they match an explicitly documented exception.
Applied to files:
src/components/layout/AuthSidebar.tsxsrc/router/AppRouter.tsxsrc/components/common/CourseCard.tsxsrc/components/common/PromotionCard.tsxsrc/pages/my-posts/index.tsx
📚 Learning: 2026-07-26T17:09:40.303Z
Learnt from: KJun-2
Repo: yeogido/frontend PR: 125
File: src/pages/local-recommendation/tag-selection/components/RepresentativePhotoSection.tsx:107-122
Timestamp: 2026-07-26T17:09:40.303Z
Learning: yeogido/frontend의 반응형 스케일 정책에 맞춰, 텍스트를 포함한 UI 치수는 (디자인 기준값) × 전역 `scale`로 “연속적으로” 계산하고, 12px·14px 같은 최소 폰트/사이즈 하한(floor) 클램프를 적용하지 않는다. `scaleValue`를 쓰더라도 텍스트에 임의의 minimum floor를 추가하거나 `Math.max(value, 12/14)` 같은 보정을 넣지 말 것.
Applied to files:
src/components/layout/AuthSidebar.tsxsrc/router/AppRouter.tsxsrc/components/common/CourseCard.tsxsrc/components/common/PromotionCard.tsxsrc/pages/my-posts/index.tsx
🔇 Additional comments (11)
src/components/common/CourseCard.tsx (1)
11-11: LGTM!Also applies to: 36-41, 111-124
src/components/common/PromotionCard.tsx (1)
5-6: LGTM!Also applies to: 41-59, 154-161, 184-184
src/components/layout/AuthSidebar.tsx (1)
40-40: LGTM!src/router/AppRouter.tsx (1)
54-54: LGTM!Also applies to: 135-135
src/types/user.type.ts (1)
4-23: LGTM!Also applies to: 34-56
src/pages/my-posts/constants/filters.ts (1)
1-29: LGTM!src/pages/my-posts/hooks/useMyPostFilters.ts (1)
1-61: LGTM!src/hooks/useMyPosts.ts (1)
1-49: LGTM!src/pages/my-posts/index.tsx (1)
64-93: LGTM!Also applies to: 105-194, 227-253, 268-326
src/pages/my-posts/utils/myPostReviewCard.ts (1)
1-38: LGTM!src/constants/courseFilterLayout.ts (1)
29-42: LGTM!
…ature/my-posts-page # Conflicts: # src/components/common/PromotionCard.tsx # src/router/AppRouter.tsx
…ature/my-posts-page
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
src/components/common/PromotionCard.tsx (1)
88-100: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
onClick이 없을 때 카드의 키보드 상호작용을 제거하세요.
onClick은 선택 사항입니다. 현재는 콜백이 없어도 카드가 포커스를 받고 버튼으로 안내되지만, Enter 또는 Space는 아무 동작도 하지 않습니다.role,tabIndex, 키보드 핸들러, 포인터 커서는onClick이 있을 때만 설정하거나onClick을 필수 prop으로 변경하세요.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/components/common/PromotionCard.tsx` around lines 88 - 100, Update the PromotionCard interaction setup around the onClick and onKeyDown props so the card is keyboard- and pointer-interactive only when onClick is provided. When onClick is absent, omit the role, tabIndex, keydown handler, and cursor-pointer styling; preserve the existing activation behavior when it exists.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Outside diff comments:
In `@src/components/common/PromotionCard.tsx`:
- Around line 88-100: Update the PromotionCard interaction setup around the
onClick and onKeyDown props so the card is keyboard- and pointer-interactive
only when onClick is provided. When onClick is absent, omit the role, tabIndex,
keydown handler, and cursor-pointer styling; preserve the existing activation
behavior when it exists.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: 8c1acc8e-e3f4-484c-b288-17b2e90943ee
📒 Files selected for processing (9)
src/components/common/CourseCard.tsxsrc/components/common/PromotionCard.tsxsrc/components/common/ReviewActionMenu.tsxsrc/components/layout/AuthSidebar.tsxsrc/hooks/useCourses.tssrc/hooks/useReviews.tssrc/pages/my-posts/index.tsxsrc/router/AppRouter.tsxsrc/types/user.type.ts
🚧 Files skipped from review as they are similar to previous changes (4)
- src/router/AppRouter.tsx
- src/components/layout/AuthSidebar.tsx
- src/types/user.type.ts
- src/components/common/CourseCard.tsx
📜 Review details
🧰 Additional context used
🧠 Learnings (5)
📚 Learning: 2026-07-26T17:09:23.387Z
Learnt from: KJun-2
Repo: yeogido/frontend PR: 125
File: src/pages/local-recommendation/course-basic-info/components/CompanionSelector.tsx:82-90
Timestamp: 2026-07-26T17:09:23.387Z
Learning: 이 프로젝트의 반응형 스케일 정책에서는 텍스트(폰트) 크기를 설계 기준 값에 전역 `scale`을 곱해 비율대로 스케일하세요. `12px`, `14px`처럼 특정 최소 하한을 강제로 적용하거나(클램프/바닥값) 임의의 픽셀 값으로 제한하지 마세요. 즉, 기준값(디자인 스펙) × `scale` 방식으로 계산해 비율이 유지되도록 구현합니다.
Applied to files:
src/components/common/ReviewActionMenu.tsxsrc/pages/my-posts/index.tsxsrc/components/common/PromotionCard.tsx
📚 Learning: 2026-08-03T09:41:11.931Z
Learnt from: KJun-2
Repo: yeogido/frontend PR: 188
File: src/pages/detail/components/CourseDetailLayout.tsx:202-205
Timestamp: 2026-08-03T09:41:11.931Z
Learning: When implementing the shared back-navigation UI component in yeogido/frontend, manage all UI dimensions, including positional offsets, according to the project’s global `scale` policy so the component remains visually consistent across screens.
Applied to files:
src/components/common/ReviewActionMenu.tsxsrc/pages/my-posts/index.tsxsrc/components/common/PromotionCard.tsx
📚 Learning: 2026-07-26T17:09:27.685Z
Learnt from: KJun-2
Repo: yeogido/frontend PR: 125
File: src/pages/local-recommendation/course-basic-info/components/TransportSelector.tsx:84-91
Timestamp: 2026-07-26T17:09:27.685Z
Learning: In this project’s 390px-based continuous responsive scaling, do not apply an artificial minimum lower bound to text sizes (e.g., avoid clamping via Math.max/min-font-size patterns). Instead, compute typography using proportional ratio scaling: render font sizes as `VALUE * scale` (for example, `DESCRIPTION_FONT_SIZE * scale`). During review, flag any code that enforces a hard minimum text size that breaks the intended proportional scaling.
Applied to files:
src/components/common/ReviewActionMenu.tsxsrc/pages/my-posts/index.tsxsrc/components/common/PromotionCard.tsx
📚 Learning: 2026-07-26T17:09:32.991Z
Learnt from: KJun-2
Repo: yeogido/frontend PR: 125
File: src/pages/local-recommendation/tag-selection/components/KeywordSelectionSection.tsx:51-56
Timestamp: 2026-07-26T17:09:32.991Z
Learning: When implementing responsive scaling in this project, prefer direct proportional calculations (e.g., using `VALUE * scale`) without applying artificial minimum lower bounds (clamps) to text sizes or other visual dimensions. Only introduce a lower bound when there is an explicitly documented exception; the primary allowed example is enforcing a 44px minimum touch target for interactive elements. In review, flag new/minimum clamps for text/visual dimensions unless they match an explicitly documented exception.
Applied to files:
src/components/common/ReviewActionMenu.tsxsrc/pages/my-posts/index.tsxsrc/components/common/PromotionCard.tsx
📚 Learning: 2026-07-26T17:09:40.303Z
Learnt from: KJun-2
Repo: yeogido/frontend PR: 125
File: src/pages/local-recommendation/tag-selection/components/RepresentativePhotoSection.tsx:107-122
Timestamp: 2026-07-26T17:09:40.303Z
Learning: yeogido/frontend의 반응형 스케일 정책에 맞춰, 텍스트를 포함한 UI 치수는 (디자인 기준값) × 전역 `scale`로 “연속적으로” 계산하고, 12px·14px 같은 최소 폰트/사이즈 하한(floor) 클램프를 적용하지 않는다. `scaleValue`를 쓰더라도 텍스트에 임의의 minimum floor를 추가하거나 `Math.max(value, 12/14)` 같은 보정을 넣지 말 것.
Applied to files:
src/components/common/ReviewActionMenu.tsxsrc/pages/my-posts/index.tsxsrc/components/common/PromotionCard.tsx
🔇 Additional comments (6)
src/pages/my-posts/index.tsx (2)
257-263: 기존 후기 이미지를 편집 상태에 전달하세요.
editableImages: []는 기존 이미지를 비운 상태로ReviewEditModal을 엽니다.reviewCard.editableImages를 전달해야 변경하지 않은 사진도 유지됩니다.
61-63: LGTM!Also applies to: 217-224, 247-247
src/hooks/useReviews.ts (1)
251-266: LGTM!src/hooks/useCourses.ts (1)
108-112: LGTM!Also applies to: 127-135
src/components/common/PromotionCard.tsx (1)
7-8: LGTM!Also applies to: 46-51, 63-68, 138-144, 200-220
src/components/common/ReviewActionMenu.tsx (1)
23-24: LGTM!Also applies to: 37-37, 114-116, 132-132
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/pages/my-posts/index.tsx`:
- Around line 295-297: Update the course action configuration in the my-posts
page so onEditClick no longer points to a no-op callback: connect it to the
existing course-edit flow, or omit the onEditClick prop until editing is
supported. Preserve the current detail navigation and deletion behavior.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: e6d9d170-7d3e-48d3-9fcf-8102e4a58fcf
📒 Files selected for processing (5)
src/apis/courses.tssrc/hooks/useCourses.tssrc/hooks/useReviews.tssrc/pages/my-posts/index.tsxsrc/pages/my-posts/utils/myPostReviewCard.ts
🚧 Files skipped from review as they are similar to previous changes (1)
- src/pages/my-posts/utils/myPostReviewCard.ts
📜 Review details
🧰 Additional context used
🧠 Learnings (5)
📚 Learning: 2026-07-26T17:09:23.387Z
Learnt from: KJun-2
Repo: yeogido/frontend PR: 125
File: src/pages/local-recommendation/course-basic-info/components/CompanionSelector.tsx:82-90
Timestamp: 2026-07-26T17:09:23.387Z
Learning: 이 프로젝트의 반응형 스케일 정책에서는 텍스트(폰트) 크기를 설계 기준 값에 전역 `scale`을 곱해 비율대로 스케일하세요. `12px`, `14px`처럼 특정 최소 하한을 강제로 적용하거나(클램프/바닥값) 임의의 픽셀 값으로 제한하지 마세요. 즉, 기준값(디자인 스펙) × `scale` 방식으로 계산해 비율이 유지되도록 구현합니다.
Applied to files:
src/pages/my-posts/index.tsx
📚 Learning: 2026-08-03T09:41:11.931Z
Learnt from: KJun-2
Repo: yeogido/frontend PR: 188
File: src/pages/detail/components/CourseDetailLayout.tsx:202-205
Timestamp: 2026-08-03T09:41:11.931Z
Learning: When implementing the shared back-navigation UI component in yeogido/frontend, manage all UI dimensions, including positional offsets, according to the project’s global `scale` policy so the component remains visually consistent across screens.
Applied to files:
src/pages/my-posts/index.tsx
📚 Learning: 2026-07-26T17:09:27.685Z
Learnt from: KJun-2
Repo: yeogido/frontend PR: 125
File: src/pages/local-recommendation/course-basic-info/components/TransportSelector.tsx:84-91
Timestamp: 2026-07-26T17:09:27.685Z
Learning: In this project’s 390px-based continuous responsive scaling, do not apply an artificial minimum lower bound to text sizes (e.g., avoid clamping via Math.max/min-font-size patterns). Instead, compute typography using proportional ratio scaling: render font sizes as `VALUE * scale` (for example, `DESCRIPTION_FONT_SIZE * scale`). During review, flag any code that enforces a hard minimum text size that breaks the intended proportional scaling.
Applied to files:
src/pages/my-posts/index.tsx
📚 Learning: 2026-07-26T17:09:32.991Z
Learnt from: KJun-2
Repo: yeogido/frontend PR: 125
File: src/pages/local-recommendation/tag-selection/components/KeywordSelectionSection.tsx:51-56
Timestamp: 2026-07-26T17:09:32.991Z
Learning: When implementing responsive scaling in this project, prefer direct proportional calculations (e.g., using `VALUE * scale`) without applying artificial minimum lower bounds (clamps) to text sizes or other visual dimensions. Only introduce a lower bound when there is an explicitly documented exception; the primary allowed example is enforcing a 44px minimum touch target for interactive elements. In review, flag new/minimum clamps for text/visual dimensions unless they match an explicitly documented exception.
Applied to files:
src/pages/my-posts/index.tsx
📚 Learning: 2026-07-26T17:09:40.303Z
Learnt from: KJun-2
Repo: yeogido/frontend PR: 125
File: src/pages/local-recommendation/tag-selection/components/RepresentativePhotoSection.tsx:107-122
Timestamp: 2026-07-26T17:09:40.303Z
Learning: yeogido/frontend의 반응형 스케일 정책에 맞춰, 텍스트를 포함한 UI 치수는 (디자인 기준값) × 전역 `scale`로 “연속적으로” 계산하고, 12px·14px 같은 최소 폰트/사이즈 하한(floor) 클램프를 적용하지 않는다. `scaleValue`를 쓰더라도 텍스트에 임의의 minimum floor를 추가하거나 `Math.max(value, 12/14)` 같은 보정을 넣지 말 것.
Applied to files:
src/pages/my-posts/index.tsx
🔇 Additional comments (4)
src/pages/my-posts/index.tsx (1)
269-275: 기존 후기 이미지를 편집 상태에 전달하세요.
editableImages: []는 기존 지적과 동일합니다. 기존 이미지가 있는 후기를 수정하면 이미지 정보가 손실될 수 있습니다.src/hooks/useCourses.ts (1)
89-161: LGTM!src/apis/courses.ts (1)
1-1: LGTM!Also applies to: 71-77
src/hooks/useReviews.ts (1)
78-80: LGTM!Also applies to: 252-252, 281-364

작업 내용
/my-posts페이지를 구현해 내가 등록한 코스와 후기를 조회할 수 있도록 했습니다.변경 화면
/my-posts확인 방법
내가 등록한 게시물을 선택합니다.체크리스트
스크린샷
pnpm build통과했습니다.my-posts작업 관련 파일만 포함해 주세요.관련 이슈
Closes #286
Summary by CodeRabbit
새 기능
개선