Skip to content

Comments

Feat(client): 관심 직무 페이지 구현#272

Merged
constantly-dev merged 5 commits intodevelopfrom
feat/#271/job-pins-page
Feb 25, 2026
Merged

Feat(client): 관심 직무 페이지 구현#272
constantly-dev merged 5 commits intodevelopfrom
feat/#271/job-pins-page

Conversation

@constantly-dev
Copy link
Member

@constantly-dev constantly-dev commented Feb 24, 2026

📌 Related Issues

관련된 Issue를 태그해주세요. (e.g. - close #25)

📄 Tasks

  • 관심 직무 페이지 구현
  • myBookmark card save variant 추가

⭐ PR Point (To Reviewer)

관심 직무 페이지 mock data 임시로 사용해서 구현했고, myBookmark 컴포넌트에 save variant 추가했습니다.

📷 Screenshot

image

Summary by CodeRabbit

릴리스 노트

  • 새로운 기능
    • 관심 직무 핀 페이지가 카드 기반 그리드 레이아웃으로 재설계되었으며, 하단에 푸터가 추가되었습니다.
    • 북마크 카드에 사용자 닉네임을 포함한 새로운 저장 변형이 지원됩니다.
    • 메모 아이콘이 새로 추가되었습니다.

@vercel
Copy link

vercel bot commented Feb 24, 2026

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

Project Deployment Actions Updated (UTC)
pinback-client-client Ready Ready Preview, Comment Feb 24, 2026 10:29am
pinback-client-landing Ready Ready Preview, Comment Feb 24, 2026 10:29am

@github-actions github-actions bot added the feat 기능 개발하라 개발 달려라 달려 label Feb 24, 2026
@coderabbitai
Copy link

coderabbitai bot commented Feb 24, 2026

Walkthrough

JobPins 컴포넌트는 Balloon 기반 UI에서 Card 기반 그리드로 전환되었습니다. Card 컴포넌트의 북마크 타입이 기본값과 저장 변형으로 분리되어 조건부 렌더링 로직이 추가되었고, 새로운 메모 아이콘이 도입되었습니다.

Changes

Cohort / File(s) Summary
JobPins 페이지 리팩토링
apps/client/src/pages/jobPins/JobPins.tsx
Balloon 기반 UI를 Card 기반 그리드로 완전히 변경. 모의 데이터 배열을 추가하고 Card 컴포넌트로 렌더링하며, Footer 컴포넌트를 도입.
Card 컴포넌트 타입 확장
packages/design-system/src/components/card/Card.tsx
BookmarkProps를 BookmarkDefaultProps와 BookmarkSaveProps로 분리. 각 변형이 상이한 필드 요구사항(date vs nickname) 정의. CardProps 공개 타입 시그니처 업데이트.
MyBookmarkCard 변형 처리
packages/design-system/src/components/card/MyBookmarkCard.tsx
variant 속성 추가(기본값 'default', 선택지 'save'). 'save' 변형에서 카테고리 상세 버튼 숨김 및 닉네임 기반 헤더 렌더링. 날짜 표시 로직을 변형별로 분기 처리.
Storybook 및 아이콘 업데이트
packages/design-system/src/components/card/Card.stories.tsx, packages/design-system/src/icons/iconNames.ts
북마크 변형 선택지와 nickname argType 추가. BookMarkSave 새 스토리 및 기존 스토리 variant 기본값 지정. ic_memo 아이콘 추가.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested labels

🛠️ Feature, frontend

Suggested reviewers

  • jllee000
  • jjangminii

Poem

🐰 볼룬은 가고 카드 그리드가 춤을 춰~
북마크는 두 가지 모습으로 반짝이고~
닉네임과 날짜가 우아하게 분리되어~
메모 아이콘 하나 톡 추가하고~
관심 직무도 이제 정말 예뻐져! ✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed PR 제목은 주요 변경사항인 관심 직무 페이지 구현을 명확하게 요약하고 있습니다.
Description check ✅ Passed PR 설명은 관련 이슈, 작업 내용, 리뷰어 대상 포인트, 스크린샷을 포함하여 템플릿을 충분히 따르고 있습니다.
Linked Issues check ✅ Passed 코드 변경사항이 #271의 관심 직무 핀 페이지 구현과 카드 variants 추가 요구사항을 충족합니다. #25는 이 PR과 무관한 이슈입니다.
Out of Scope Changes check ✅ Passed 모든 변경사항이 관심 직무 페이지 구현(#271)과 myBookmark 카드 save variant 추가와 직접적으로 관련되어 있습니다.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/#271/job-pins-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 and usage tips.

@github-actions
Copy link

✅ Storybook chromatic 배포 확인:
🐿️ storybook

Copy link

@coderabbitai coderabbitai bot left a comment

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 the current code and only fix it if needed.

Inline comments:
In `@apps/client/src/pages/jobPins/JobPins.tsx`:
- Around line 16-27: The inner scrollable list div in JobPins.tsx (the element
currently rendered with class string containing "scrollbar-hide mt-[2.6rem] flex
h-screen flex-wrap ... overflow-y-auto") is fixed to h-screen causing double
scroll; replace the height utility with flexible sizing by removing "h-screen"
and adding "flex-1 min-h-0" so the list takes the remaining space in the parent
flex-col and its overflow-y-auto works correctly.

ℹ️ Review info

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 7a16378 and 70f7f1a.

⛔ Files ignored due to path filters (1)
  • packages/design-system/src/icons/source/ic_memo.svg is excluded by !**/*.svg
📒 Files selected for processing (5)
  • apps/client/src/pages/jobPins/JobPins.tsx
  • packages/design-system/src/components/card/Card.stories.tsx
  • packages/design-system/src/components/card/Card.tsx
  • packages/design-system/src/components/card/MyBookmarkCard.tsx
  • packages/design-system/src/icons/iconNames.ts

Comment on lines +16 to +27
<div className="flex h-screen flex-col pl-[8rem] pr-[5rem] pt-[5.2rem]">
<div className="flex items-center gap-[1.2rem]">
<p className="head3">관심 직무 핀</p>
<p className="head3 text-main500">기획자</p>
</div>
<p className="body3-r text-font-gray-3 mt-[0.8rem]">
같은 직무의 사람들이 저장한 아티클을 살펴봐요. 선택한 직무를 기준으로
최신 핀이 업데이트 돼요!
</p>

<div className="text-sm opacity-90">도토리 1개를 모았어요!</div>
</Balloon>
<Balloon variant="gray" side="left">
<Icon name="ic_info" size={16} />
<div className="text-sm opacity-90">도토리 1개를 모았어요!</div>
</Balloon>
<Balloon variant="main" side="bottom">
<div className="flex items-center gap-3">
{/* 캐릭터 이미지 */}
<Icon name="chippi_profile" size={40} />
<div className="scrollbar-hide mt-[2.6rem] flex h-screen flex-wrap content-start gap-[1.6rem] overflow-y-auto scroll-smooth">
{MOCK_JOB_PINS.map((pin) => (
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

wc -l apps/client/src/pages/jobPins/JobPins.tsx

Repository: Pinback-Team/pinback-client

Length of output: 115


🏁 Script executed:

cat -n apps/client/src/pages/jobPins/JobPins.tsx

Repository: Pinback-Team/pinback-client

Length of output: 1776


카드 리스트의 이중 스크롤 문제
부모 컨테이너는 h-screenflex-col 레이아웃이며, 내부 리스트 컨테이너도 h-screen으로 고정되어 있습니다. 헤더와 푸터의 높이까지 추가되면 전체 콘텐츠가 뷰포트를 초과하여 페이지와 리스트 모두에서 스크롤이 발생합니다. Flex 레이아웃에서 리스트는 flex-1 min-h-0으로 변경하여 남은 높이를 자동으로 차지하도록 조정해야 합니다.

🔧 제안 변경
-      <div className="scrollbar-hide mt-[2.6rem] flex h-screen flex-wrap content-start gap-[1.6rem] overflow-y-auto scroll-smooth">
+      <div className="scrollbar-hide mt-[2.6rem] flex flex-1 min-h-0 flex-wrap content-start gap-[1.6rem] overflow-y-auto scroll-smooth">
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<div className="flex h-screen flex-col pl-[8rem] pr-[5rem] pt-[5.2rem]">
<div className="flex items-center gap-[1.2rem]">
<p className="head3">관심 직무 핀</p>
<p className="head3 text-main500">기획자</p>
</div>
<p className="body3-r text-font-gray-3 mt-[0.8rem]">
같은 직무의 사람들이 저장한 아티클을 살펴봐요. 선택한 직무를 기준으로
최신 핀이 업데이트 돼요!
</p>
<div className="text-sm opacity-90">도토리 1개를 모았어요!</div>
</Balloon>
<Balloon variant="gray" side="left">
<Icon name="ic_info" size={16} />
<div className="text-sm opacity-90">도토리 1개를 모았어요!</div>
</Balloon>
<Balloon variant="main" side="bottom">
<div className="flex items-center gap-3">
{/* 캐릭터 이미지 */}
<Icon name="chippi_profile" size={40} />
<div className="scrollbar-hide mt-[2.6rem] flex h-screen flex-wrap content-start gap-[1.6rem] overflow-y-auto scroll-smooth">
{MOCK_JOB_PINS.map((pin) => (
<div className="flex h-screen flex-col pl-[8rem] pr-[5rem] pt-[5.2rem]">
<div className="flex items-center gap-[1.2rem]">
<p className="head3">관심 직무 핀</p>
<p className="head3 text-main500">기획자</p>
</div>
<p className="body3-r text-font-gray-3 mt-[0.8rem]">
같은 직무의 사람들이 저장한 아티클을 살펴봐요. 선택한 직무를 기준으로
최신 핀이 업데이트 돼요!
</p>
<div className="scrollbar-hide mt-[2.6rem] flex flex-1 min-h-0 flex-wrap content-start gap-[1.6rem] overflow-y-auto scroll-smooth">
{MOCK_JOB_PINS.map((pin) => (
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/client/src/pages/jobPins/JobPins.tsx` around lines 16 - 27, The inner
scrollable list div in JobPins.tsx (the element currently rendered with class
string containing "scrollbar-hide mt-[2.6rem] flex h-screen flex-wrap ...
overflow-y-auto") is fixed to h-screen causing double scroll; replace the height
utility with flexible sizing by removing "h-screen" and adding "flex-1 min-h-0"
so the list takes the remaining space in the parent flex-col and its
overflow-y-auto works correctly.

Copy link
Collaborator

@jjangminii jjangminii left a comment

Choose a reason for hiding this comment

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

빠르네요 ,, 고생하셨습니당 👍

@constantly-dev constantly-dev merged commit 5499fe0 into develop Feb 25, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feat 기능 개발하라 개발 달려라 달려

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feat] 관심 직무 핀 페이지 구현

2 participants