Conversation
header_img.png가 assets에 없어 런타임 에러 발생 StepLayout은 bannerImage 미지정 시 header_title.svg를 기본값으로 사용하므로 prop 제거
- App.tsx: /mvp 라우트 추가 (MvpPage) - ContinueCommentPage: nextPath "/next" → "/mvp" 연결 - CLAUDE.md: 패키지 구조에 MvpPage 추가
- 멤버 검색 input - 텍스트 입력 시 peerMembers 필터링 후 인라인 드롭다운 표시 - 입력 중 IconXCircle 노출, 클릭 시 검색어 초기화 - 드롭다운 항목 선택 시 MemberChip으로 표시, 재검색으로 변경 가능 - MVP 선정 이유 입력 필드 (InputField 재사용) - 동료 선정 + 이유 모두 입력 시에만 제출 버튼 활성화 - FieldBox.Label(MDS) 사용으로 라벨/필수 표시/설명 문구 일관성 유지 - 제출 시 useCommentForm의 mvp 필드에 저장 후 /closing으로 이동
- 페이지 플로우를 구현 완료 상태로 업데이트 (step 1~7 전체) - SubmissionContext → CommentFormContext로 전면 수정 - 프로젝트 구조 상단 트리를 현재 src 구조에 맞게 정리 - 페이지 추가 지침의 SubmissionContext 타입 확장 → CommentFormState로 수정 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
Warning Rate limit exceeded
Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 33 minutes and 11 seconds. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (7)
WalkthroughMVP 선정 페이지( Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Suggested labels
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 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: 4
🧹 Nitpick comments (1)
src/pages/MvpPage.tsx (1)
32-36: 제출 이유 공백 처리 일관성.
isAllFilled계산 시엔reason.trim()으로 공백을 걸러내지만, 실제 저장 시에는 원본reason을 그대로comment_text에 넣고 있습니다. 검증과 저장 기준을 맞춰 앞뒤 공백을trim()해서 저장하는 것을 권장합니다.♻️ 제안
- update({ mvp: { target_user_id: selectedMember.userId, comment_text: reason } }); + update({ mvp: { target_user_id: selectedMember.userId, comment_text: reason.trim() } });🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/pages/MvpPage.tsx` around lines 32 - 36, The submission saves the raw reason while validation uses reason.trim(), causing inconsistency; in handleSubmit (which calls update and navigate and checks selectedMember), pass the trimmed reason to update by setting comment_text to reason.trim() so stored value matches the isAllFilled validation and leading/trailing whitespace is removed consistently.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@CLAUDE.md`:
- Around line 15-21: The step numbering in the flow and implementation is
inconsistent: Update the step values so they match the documented 7-step flow —
either set MvpPage's props in MvpPage.tsx from currentStep={6} to
currentStep={5} and ClosingPage from step 7 to step 6, or insert the missing
intermediate page between ContinueCommentPage and MvpPage; specifically adjust
the MvpPage and ClosingPage step labels/props (and any related UI indicators) to
reflect the corrected sequence (ContinueCommentPage -> MvpPage (5/7) ->
ClosingPage (6/7) -> final step if applicable) so flow text and the component
prop currentStep/totalSteps remain consistent.
In `@src/pages/MvpPage.css.ts`:
- Line 76: The boxShadow currently hardcodes rgba(0, 0, 0, 0.4); update the
MvpPage styles to use the design token from `@sopt-makers/colors` instead (import
the appropriate black/alpha token and compose the boxShadow using that token)
and replace the literal in the boxShadow property; if a token cannot represent
the exact alpha value, add a short inline comment above the boxShadow explaining
why a hardcoded rgba is required and reference the missing token so reviewers
can follow up.
In `@src/pages/MvpPage.tsx`:
- Around line 112-116: The fragment renders MemberChip directly under a <ul>
which violates HTML semantics because list children must be <li>; in MvpPage's
selectedMember block wrap MemberChip in an <li> (e.g., move MemberChip into an
<li> element) or replace the <ul className={styles.chipList}> with a simpler
container (e.g., a <div> using styles.chipList) if you only ever render one
selected member; update the JSX around selectedMember and styles.chipList
accordingly so the DOM is semantically correct.
- Line 87: Move the inline styles applied to IconXCircle and IconUser into a
vanilla-extract stylesheet and apply them via className/wrapper: create or
update the related *.css.ts (e.g., add classes like iconSmall and iconGray) that
set width, height and color, import those classes into MvpPage.tsx, and replace
the inline style={{ width, height, color }} on IconXCircle and IconUser with the
appropriate className or wrap the icon in a span/div that uses the new class;
ensure you update all occurrences noted (around the IconXCircle at the shown
line and the IconUser usages at lines ~101-103) so no inline style remains.
---
Nitpick comments:
In `@src/pages/MvpPage.tsx`:
- Around line 32-36: The submission saves the raw reason while validation uses
reason.trim(), causing inconsistency; in handleSubmit (which calls update and
navigate and checks selectedMember), pass the trimmed reason to update by
setting comment_text to reason.trim() so stored value matches the isAllFilled
validation and leading/trailing whitespace is removed consistently.
🪄 Autofix (Beta)
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: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: bd36ebb2-ad61-4b1d-8fa3-ec77fcba1f09
📒 Files selected for processing (6)
CLAUDE.mdsrc/App.tsxsrc/pages/ClosingPage.tsxsrc/pages/ContinueCommentPage.tsxsrc/pages/MvpPage.css.tssrc/pages/MvpPage.tsx
💤 Files with no reviewable changes (1)
- src/pages/ClosingPage.tsx
| └─ UserInfoPage (사용자 정보 입력, step 1/7) | ||
| └─ StopCommentPage (step 2/7) | ||
| └─ StartCommentPage (step 3/7) | ||
| └─ ContinueCommentPage (step 4/7) | ||
| └─ MvpPage (step 6/7) | ||
| └─ ClosingPage (step 7/7) | ||
| ``` |
There was a problem hiding this comment.
스텝 번호가 5/7을 건너뜁니다.
ContinueCommentPage가 step 4/7인데 바로 MvpPage를 step 6/7로 표기하여 step 5/7이 누락되어 있습니다. 전체 7단계가 맞다면 MvpPage를 5/7로, ClosingPage를 6/7로 조정하거나, 중간에 빠진 페이지를 보완해야 플로우 문서와 실제 구현(MvpPage.tsx의 currentStep={6} totalSteps={7})이 일치합니다.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@CLAUDE.md` around lines 15 - 21, The step numbering in the flow and
implementation is inconsistent: Update the step values so they match the
documented 7-step flow — either set MvpPage's props in MvpPage.tsx from
currentStep={6} to currentStep={5} and ClosingPage from step 7 to step 6, or
insert the missing intermediate page between ContinueCommentPage and MvpPage;
specifically adjust the MvpPage and ClosingPage step labels/props (and any
related UI indicators) to reflect the corrected sequence (ContinueCommentPage ->
MvpPage (5/7) -> ClosingPage (6/7) -> final step if applicable) so flow text and
the component prop currentStep/totalSteps remain consistent.
| overflow: 'hidden', | ||
| listStyle: 'none', | ||
| padding: 0, | ||
| boxShadow: '0 4px 12px rgba(0, 0, 0, 0.4)', |
There was a problem hiding this comment.
하드코딩된 색상 사용 지양.
boxShadow의 rgba(0, 0, 0, 0.4)는 @sopt-makers/colors를 사용하지 않은 하드코딩 값입니다. 디자인 시스템 토큰을 사용하거나, 불가피할 경우 주석으로 사유를 남겨주세요.
As per coding guidelines: "Use @sopt-makers/colors for all color values instead of hardcoding color values".
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@src/pages/MvpPage.css.ts` at line 76, The boxShadow currently hardcodes
rgba(0, 0, 0, 0.4); update the MvpPage styles to use the design token from
`@sopt-makers/colors` instead (import the appropriate black/alpha token and
compose the boxShadow using that token) and replace the literal in the boxShadow
property; if a token cannot represent the exact alpha value, add a short inline
comment above the boxShadow explaining why a hardcoded rgba is required and
reference the missing token so reviewers can follow up.
[스텝 번호 수정]
- 전체 스텝 수 7 → 6으로 변경
[하드코딩된 색상 제거]
- MvpPage dropdown에서 boxShadow rgba(0,0,0,0.4) 제거
[인라인 스타일 → vanilla-extract 이관]
- IconCircleFilled: style={{ width, height, color }} → styles.clearIcon 클래스 적용
- IconUser: style={{ width, height }} → styles.avatarIconSvg 클래스 적용
[HTML 구조 수정]
- 선택된 MVP 표시 영역: <ul> + MemberChip → <div className={styles.chipWrapper}>로 교체
- MemberChip이 <li>를 렌더링하지 않아 <ul> 직계 자식 규칙 위반
- MVP는 단일 선택이므로 리스트 구조 불필요
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Related Issue 🚀
Work Description ✏️
MvpPage 뷰 구현
/closing으로 이동nextPath수정:/next→/mvp(라우트 연결)/mvp라우트 등록header_img.pngimport 제거 (StepLayout 기본 배너 사용)PR Point 📸
FieldSection 컴포넌트 미추출
padding: 24px 28px 12px가 UserInfoPage, SprintCodePage, MvpPage에 반복됨. 별도 이슈로 리팩토링 예정.contentSection좌우 패딩 20px. FieldSection 리팩토링 시 28px로 함께 조정 검토 필요.IconXCircle filled 미존재