Skip to content

[FEAT] 내가 등록한 게시물 페이지 구현 - #285

Merged
kimtaehyeokkkk merged 15 commits into
developfrom
feature/my-posts-page
Aug 7, 2026
Merged

[FEAT] 내가 등록한 게시물 페이지 구현#285
kimtaehyeokkkk merged 15 commits into
developfrom
feature/my-posts-page

Conversation

@KJun-2

@KJun-2 KJun-2 commented Aug 7, 2026

Copy link
Copy Markdown
Collaborator

작업 내용

  • /my-posts 페이지를 구현해 내가 등록한 코스와 후기를 조회할 수 있도록 했습니다.
  • 카테고리(전체·코스·후기), 최신순/오래된순 정렬, 검색, 무한 스크롤을 적용했습니다.
  • 후기 항목은 코스 정보와 함께 코스 후기 카드 형태로 표시합니다.
  • 후기 수정·삭제 및 상세 확인 흐름을 연결했습니다.
  • 카테고리 선택에서 홍보 항목을 제거했습니다.

변경 화면

  • /my-posts

확인 방법

  1. 로그인 후 사이드바의 내가 등록한 게시물을 선택합니다.
  2. 코스/후기 카테고리와 정렬 옵션, 검색을 변경해 목록을 확인합니다.
  3. 후기 카드를 길게 눌러 상세를 열고, 더보기 메뉴에서 수정·삭제를 확인합니다.

체크리스트

  • 로컬 실행 확인
  • 콘솔 에러 없음
  • 반응형 확인
  • 불필요한 console.log 제거
  • develop 최신 반영 완료
  • 관련 없는 파일 변경 없음

스크린샷

image ## 참고 사항
  • pnpm build 통과했습니다.
  • PR에는 my-posts 작업 관련 파일만 포함해 주세요.

관련 이슈

Closes #286

Summary by CodeRabbit

새 기능

  • 등록한 코스·후기·홍보글을 검색, 필터링하고 무한 스크롤로 확인할 수 있는 ‘내가 등록한 게시물’ 페이지를 추가했습니다.
  • 게시물 상세 보기, 수정 및 삭제 기능을 제공합니다.
  • 내 게시물 카드에 수정·삭제 메뉴를 추가했습니다.
  • 사이드바와 보호된 경로를 통해 페이지에 접근할 수 있습니다.

개선

  • 로딩, 오류·재시도 및 빈 목록 상태를 제공합니다.
  • 게시물 카드의 접근성 레이블과 빈 메타 정보 표시를 개선했습니다.
  • 코스·후기 삭제 후 목록이 즉시 갱신되고, 실패 시 상태가 복구됩니다.

@vercel

vercel Bot commented Aug 7, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
frontend Ready Ready Preview Aug 7, 2026 11:11am

@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Warning

Review limit reached

@KJun-2, you've reached your PR review limit, so we couldn't start this review.

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 @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

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 configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 424aa609-23fb-4dff-a073-2eabae5eeab0

📥 Commits

Reviewing files that changed from the base of the PR and between f0af520 and b8c3a89.

📒 Files selected for processing (3)
  • src/components/common/CourseCard.tsx
  • src/components/common/ReviewActionMenu.tsx
  • src/pages/my-posts/index.tsx
📝 Walkthrough

Walkthrough

인증 사용자를 위한 /my-posts 페이지를 추가했다. 카테고리·정렬·검색 필터, 무한 스크롤, 후기 모달과 삭제 다이얼로그를 연결했다. 코스와 홍보글 카드에는 소유자용 수정·삭제 메뉴를 추가했다.

Changes

내 게시물 기능

Layer / File(s) Summary
내 게시물 데이터와 필터 계약
src/types/user.type.ts, src/pages/my-posts/constants/filters.ts, src/pages/my-posts/hooks/useMyPostFilters.ts, src/hooks/useMyPosts.ts, src/constants/courseFilterLayout.ts
내 게시물에 홍보글, 코스, 리뷰 타입을 추가했다. 카테고리·정렬 옵션과 필터 상태를 정의했다. 검색어, 커서, 페이지 크기 10을 사용하는 무한 쿼리를 추가했다.
내 게시물 페이지 흐름
src/pages/my-posts/index.tsx, src/pages/my-posts/utils/myPostReviewCard.ts, src/hooks/useReviews.ts
검색·필터 상태를 조회 훅에 연결했다. 로딩·오류·빈 목록 상태를 렌더링한다. 후기·코스·홍보글 카드와 후기 모달 및 삭제 다이얼로그를 연결했다. 리뷰 생성·수정·삭제 후 myPosts 쿼리를 갱신한다.
소유자 액션과 페이지 진입
src/components/common/CourseCard.tsx, src/components/common/PromotionCard.tsx, src/components/common/ReviewActionMenu.tsx, src/components/layout/AuthSidebar.tsx, src/router/AppRouter.tsx
본인 게시물일 때 ReviewActionMenu를 표시한다. 비소유자에게만 좋아요 버튼을 표시한다. 사이드바와 보호 라우트에서 /my-posts로 이동할 수 있도록 연결했다.
게시물 삭제와 캐시 동기화
src/apis/courses.ts, src/hooks/useCourses.ts, src/hooks/useReviews.ts
코스 삭제 API와 삭제 mutation을 추가했다. 코스와 리뷰 삭제 전에 myPosts 캐시를 낙관적으로 갱신하고, 실패 시 복구하며, 완료 후 관련 쿼리를 무효화한다.

Estimated code review effort: 4 (Complex) | ~45 minutes

Possibly related PRs

  • yeogido/frontend#243ReviewActionMenu, useReviews, 사용자 타입과 내 게시물 기능이 직접 연결된다.
  • yeogido/frontend#263 — 리뷰 카드와 리뷰 데이터 매핑 구조가 이번 변경과 연결된다.
  • yeogido/frontend#212AuthSidebar의 내 메뉴에 이번 /my-posts 경로가 추가된다.

Suggested reviewers: junehuk

Sequence Diagram(s)

sequenceDiagram
  participant User
  participant MyPostsPage
  participant useMyPosts
  participant CourseCard
  participant PromotionCard
  User->>MyPostsPage: 검색어·필터 선택
  MyPostsPage->>useMyPosts: 카테고리·정렬·검색어 전달
  useMyPosts-->>MyPostsPage: 게시물 페이지 반환
  MyPostsPage->>CourseCard: 코스 게시물 전달
  MyPostsPage->>PromotionCard: 홍보글 전달
Loading
🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Out of Scope Changes check ⚠️ Warning 이슈 #286의 코스·후기 범위를 넘어 홍보글 조회와 홍보글 카드·타입·액션을 추가했습니다. 홍보글 관련 변경을 제거하거나, 해당 요구사항을 정의한 별도 이슈로 분리하세요.
Docstring Coverage ⚠️ Warning Docstring coverage is 28.57% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목이 내가 등록한 게시물 페이지 구현이라는 주요 변경 내용을 명확하고 간결하게 설명합니다.
Linked Issues check ✅ Passed 코스·후기 조회, 필터, 검색, 무한 스크롤, 후기 카드와 수정·삭제 흐름을 구현하여 이슈 #286의 주요 요구사항을 충족합니다.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/my-posts-page

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.

❤️ Share

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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

📥 Commits

Reviewing files that changed from the base of the PR and between 6ae84dc and 4c78e86.

📒 Files selected for processing (11)
  • src/components/common/CourseCard.tsx
  • src/components/common/PromotionCard.tsx
  • src/components/layout/AuthSidebar.tsx
  • src/constants/courseFilterLayout.ts
  • src/hooks/useMyPosts.ts
  • src/pages/my-posts/constants/filters.ts
  • src/pages/my-posts/hooks/useMyPostFilters.ts
  • src/pages/my-posts/index.tsx
  • src/pages/my-posts/utils/myPostReviewCard.ts
  • src/router/AppRouter.tsx
  • src/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.tsx
  • src/router/AppRouter.tsx
  • src/components/common/CourseCard.tsx
  • src/components/common/PromotionCard.tsx
  • 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/components/layout/AuthSidebar.tsx
  • src/router/AppRouter.tsx
  • src/components/common/CourseCard.tsx
  • src/components/common/PromotionCard.tsx
  • 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/components/layout/AuthSidebar.tsx
  • src/router/AppRouter.tsx
  • src/components/common/CourseCard.tsx
  • src/components/common/PromotionCard.tsx
  • 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/components/layout/AuthSidebar.tsx
  • src/router/AppRouter.tsx
  • src/components/common/CourseCard.tsx
  • src/components/common/PromotionCard.tsx
  • 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/components/layout/AuthSidebar.tsx
  • src/router/AppRouter.tsx
  • src/components/common/CourseCard.tsx
  • src/components/common/PromotionCard.tsx
  • src/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!

Comment thread src/components/common/CourseCard.tsx
Comment thread src/pages/my-posts/index.tsx
Comment thread src/pages/my-posts/index.tsx
Comment thread src/pages/my-posts/index.tsx
KJun-2 added 2 commits August 7, 2026 15:50
…ature/my-posts-page

# Conflicts:
#	src/components/common/PromotionCard.tsx
#	src/router/AppRouter.tsx

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

📥 Commits

Reviewing files that changed from the base of the PR and between 4c78e86 and e52b07a.

📒 Files selected for processing (9)
  • src/components/common/CourseCard.tsx
  • src/components/common/PromotionCard.tsx
  • src/components/common/ReviewActionMenu.tsx
  • src/components/layout/AuthSidebar.tsx
  • src/hooks/useCourses.ts
  • src/hooks/useReviews.ts
  • src/pages/my-posts/index.tsx
  • src/router/AppRouter.tsx
  • src/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.tsx
  • src/pages/my-posts/index.tsx
  • src/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.tsx
  • src/pages/my-posts/index.tsx
  • src/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.tsx
  • src/pages/my-posts/index.tsx
  • src/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.tsx
  • src/pages/my-posts/index.tsx
  • src/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.tsx
  • src/pages/my-posts/index.tsx
  • src/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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

📥 Commits

Reviewing files that changed from the base of the PR and between e52b07a and f0af520.

📒 Files selected for processing (5)
  • src/apis/courses.ts
  • src/hooks/useCourses.ts
  • src/hooks/useReviews.ts
  • src/pages/my-posts/index.tsx
  • src/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

Comment thread src/pages/my-posts/index.tsx

@kimtaehyeokkkk kimtaehyeokkkk left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Image 수정 삭제 잘 뜨는 거 확인했습니다! 고생하셨습니다!!

@kimtaehyeokkkk
kimtaehyeokkkk merged commit f4947c8 into develop Aug 7, 2026
3 checks passed
@kimtaehyeokkkk
kimtaehyeokkkk deleted the feature/my-posts-page branch August 7, 2026 11:15
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.

[FEAT] 내가 등록한 게시물 페이지 구현

2 participants