Skip to content

[FEAT] 디자이너 외주 내용 조회 페이지 퍼블리싱#62

Merged
KOJ50 merged 5 commits into
mainfrom
feature/#60-designer-detail-ui
Jul 13, 2026
Merged

[FEAT] 디자이너 외주 내용 조회 페이지 퍼블리싱#62
KOJ50 merged 5 commits into
mainfrom
feature/#60-designer-detail-ui

Conversation

@KOJ50

@KOJ50 KOJ50 commented Jul 12, 2026

Copy link
Copy Markdown
Contributor

📢 PR 유형

어떤 변경 사항이 있었나요?

  • 새로운 기능 추가
  • 버그 수정
  • 코드에 영향을 주지 않는 변경사항(오타 수정, 탭 사이즈 변경, 변수명 변경)
  • 코드 리팩토링
  • 주석 추가 및 수정
  • 문서 수정
  • 빌드 부분 혹은 패키지 매니저 수정
  • 파일 혹은 폴더명 수정
  • 파일 혹은 폴더 삭제

📌 관련 이슈번호


✅ Key Changes

  • 디자이너 detail 관련 UI를 widgets/designer/detail로 분리
  • submit 페이지에 파일 제출하기 / 외주 내용 확인 토글 추가
  • 외주 내용 확인 클릭 시 detail에서 만든 CommissionDetailSection 위젯 렌더링
  • 외주 찾기의 확인하기 버튼 클릭 시 /designer/detail/[commissionId]로 이동하도록 수정
  • 마이페이지 지급내역, home의 시안제출예정외주/발표대기 > 아이콘 클릭 시 detail 페이지로 이동하도록 수정

📸 스크린샷 or 실행영상

2026-07-13.02.47.57.mov
2026-07-13.02.51.32.mov
2026-07-13.02.52.00.mov

🎸 기타 사항 or 추가 코멘트

Summary by CodeRabbit

  • 새로운 기능
    • 디자이너 커미션 상세 페이지를 추가했습니다.
    • 디자인 정보, 작업 요청사항, 자료 및 레퍼런스를 탭으로 확인할 수 있습니다.
    • 커미션 마감일, D-Day, 보상 금액과 참여 버튼을 제공합니다.
    • 파일을 최대 9개까지 업로드하고 제출할 수 있습니다.
    • 각 디자이너 목록에서 상세 보기 및 제출 화면으로 이동할 수 있습니다.
    • 작업 제출 확인 후 디자이너 홈으로 이동합니다.
    • 일부 상세 화면에서 뒤로가기 및 참여 기능을 숨길 수 있습니다.

@KOJ50 KOJ50 self-assigned this Jul 12, 2026
@coderabbitai

coderabbitai Bot commented Jul 12, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

디자이너 커미션 상세 조회와 제출 페이지를 추가하고, 상세 데이터·탭 UI·파일 업로드 모달을 구성했습니다. 홈, 검색, 결제 내역 행에는 상세 및 제출 페이지로 이동하는 라우팅을 연결했습니다.

Changes

디자이너 커미션 상세 및 제출 흐름

Layer / File(s) Summary
커미션 상세 위젯과 데이터 계약
src/widgets/designer/detail/config/commission.ts, src/widgets/designer/detail/ui/*, src/widgets/designer/detail/index.ts
커미션 상세 데이터 타입과 샘플 데이터를 추가하고, 헤더·참여 바·디자인 정보·작업 요청·자료 및 레퍼런스 탭을 구현했습니다.
커미션 상세 라우트 연결
src/app/designer/(withSidebar)/detail/[commissionId]/page.tsx
commissionIdhideActions를 해석해 커미션 상세 정보를 표시하고, 조건에 따라 목록 버튼과 참여 바를 숨깁니다.
커미션 제출 화면
src/app/designer/(withSidebar)/submit/[commissionId]/page.tsx
파일 제출과 외주 내용 확인 뷰를 전환하고, 업로드 파일 수 제한과 제출 확인 모달 및 이동 처리를 추가했습니다.
디자이너 목록 행 라우팅
src/features/designer/home/ui/*, src/features/designer/my/ui/PaymentHistoryRow.tsx, src/features/designer/search/ui/MatchingWaitingRow.tsx
각 목록 행의 상세 보기와 제출하기 버튼을 관련 디자이너 경로로 연결했습니다.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Designer
  participant DesignerRow
  participant DetailPage
  participant CommissionDetailSection
  Designer->>DesignerRow: 상세 보기 클릭
  DesignerRow->>DetailPage: commissionId와 hideActions로 이동
  DetailPage->>CommissionDetailSection: 커미션 상세 데이터 전달
  CommissionDetailSection->>Designer: 선택된 상세 탭 표시
Loading
sequenceDiagram
  participant Designer
  participant SubmitPage
  participant useUploadedFiles
  participant Modal
  participant NextRouter
  Designer->>SubmitPage: 파일 업로드 및 제출 클릭
  SubmitPage->>useUploadedFiles: 업로드 파일 상태 조회
  SubmitPage->>Modal: 제출 확인 요청
  Designer->>Modal: 제출 확인
  Modal->>NextRouter: /designer로 이동
Loading

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목이 외주 내용 조회 페이지 퍼블리싱이라는 핵심 변경을 명확히 요약합니다.
Linked Issues check ✅ Passed 상세 조회 페이지 퍼블리싱, 제출 페이지 토글, 상세 위젯 분리 등 #60의 목표를 충족합니다.
Out of Scope Changes check ✅ Passed 요약된 변경들은 모두 외주 내용 조회 페이지 퍼블리싱과 연결되며 별도 무관한 변경은 보이지 않습니다.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/#60-designer-detail-ui

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.

@github-actions

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (3)
src/app/designer/(withSidebar)/submit/[commissionId]/page.tsx (1)

56-71: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

조건부 classNamecn()으로 정리하세요. src/app/designer/(withSidebar)/submit/[commissionId]/page.tsx:56-71에서 isFileSubmitView 분기를 직접 문자열로 나누고 있어 "w-fit"가 중복됩니다. cn("w-fit", condition && "...") 형태로 바꾸고, import는 @/shared/lib/utils/cn을 사용하세요.

🤖 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/app/designer/`(withSidebar)/submit/[commissionId]/page.tsx around lines
56 - 71, Update the two Button className expressions in the submit view to use
cn from "`@/shared/lib/utils/cn`", extracting the shared "w-fit" class and
applying each conditional class through cn instead of duplicating it in ternary
strings. Preserve the existing conditional styling for isFileSubmitView.

Source: Path instructions

src/widgets/designer/detail/ui/DesignInfoTab.tsx (1)

35-41: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

UnderlineTitle 컴포넌트가 중복 정의되어 있습니다.

동일한 UnderlineTitle 컴포넌트가 ReferenceTab.tsx (Lines 14-20)에도 정의되어 있습니다. 공유 컴포넌트로 추출하여 중복을 제거하세요.

♻️ 제안하는 수정 — 공유 컴포넌트 추출

src/widgets/designer/detail/ui/UnderlineTitle.tsx 생성 후 양쪽에서 import:

+const UnderlineTitle = ({ children }: { children: string }) => {
+  return (
+    <h3 className="border-gray-30 text-body1-sb text-gray-70 inline-block w-fit border-b pb-1">
+      {children}
+    </h3>
+  );
+};
+
+export default UnderlineTitle;

DesignInfoTab.tsxReferenceTab.tsx에서는 기존 로컬 정의를 삭제하고 import로 대체합니다.

🤖 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/widgets/designer/detail/ui/DesignInfoTab.tsx` around lines 35 - 41,
Extract the duplicated UnderlineTitle component into the shared
ui/UnderlineTitle.tsx module, preserving its current props, markup, and styling.
Remove the local UnderlineTitle definitions from DesignInfoTab.tsx and
ReferenceTab.tsx, and import the shared component in both files.
src/widgets/designer/detail/config/commission.ts (1)

1-1: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

타입 정의 위치를 분리하는 것을 권장합니다.

commission.ts(설정 파일)가 CommissionDetailSection.tsx(UI 컴포넌트)에서 타입을 가져옵니다. 설정→UI 의존 방향은 피하는 것이 좋으며, DesignerCommissionDetail 타입을 별도 파일(예: types.ts)로 분리하면 의존성 방향이 개선됩니다.

🤖 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/widgets/designer/detail/config/commission.ts` at line 1, Move the
DesignerCommissionDetail type definition out of the UI component module and into
a dedicated shared types module, then update commission.ts and
CommissionDetailSection to import it from that module. Preserve the existing
type shape while removing the configuration file’s dependency on the UI
component.
🤖 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/app/designer/`(withSidebar)/detail/[commissionId]/page.tsx:
- Around line 24-26: Update the commission selection logic in the page component
so an unmatched commissionId does not fall back to designerDetailCommissions[0].
Preserve the matched commission path, and explicitly handle an undefined find
result with the page’s not-found behavior instead of rendering another
commission’s data.

---

Nitpick comments:
In `@src/app/designer/`(withSidebar)/submit/[commissionId]/page.tsx:
- Around line 56-71: Update the two Button className expressions in the submit
view to use cn from "`@/shared/lib/utils/cn`", extracting the shared "w-fit" class
and applying each conditional class through cn instead of duplicating it in
ternary strings. Preserve the existing conditional styling for isFileSubmitView.

In `@src/widgets/designer/detail/config/commission.ts`:
- Line 1: Move the DesignerCommissionDetail type definition out of the UI
component module and into a dedicated shared types module, then update
commission.ts and CommissionDetailSection to import it from that module.
Preserve the existing type shape while removing the configuration file’s
dependency on the UI component.

In `@src/widgets/designer/detail/ui/DesignInfoTab.tsx`:
- Around line 35-41: Extract the duplicated UnderlineTitle component into the
shared ui/UnderlineTitle.tsx module, preserving its current props, markup, and
styling. Remove the local UnderlineTitle definitions from DesignInfoTab.tsx and
ReferenceTab.tsx, and import the shared component in both files.
🪄 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: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 1e0751a8-58bb-4826-a338-2d1b59b77e96

📥 Commits

Reviewing files that changed from the base of the PR and between 23185c6 and ba39ad3.

📒 Files selected for processing (15)
  • src/app/designer/(withSidebar)/detail/[commissionId]/page.tsx
  • src/app/designer/(withSidebar)/submit/[commissionId]/page.tsx
  • src/features/designer/home/ui/DraftSubmissionScheduleRow.tsx
  • src/features/designer/home/ui/PresentationWaitingRow.tsx
  • src/features/designer/my/ui/PaymentHistoryRow.tsx
  • src/features/designer/search/ui/MatchingWaitingRow.tsx
  • src/widgets/designer/detail/config/commission.ts
  • src/widgets/designer/detail/index.ts
  • src/widgets/designer/detail/ui/BackToListButton.tsx
  • src/widgets/designer/detail/ui/CommissionDetailSection.tsx
  • src/widgets/designer/detail/ui/CommissionHeader.tsx
  • src/widgets/designer/detail/ui/CommissionParticipationBar.tsx
  • src/widgets/designer/detail/ui/DesignInfoTab.tsx
  • src/widgets/designer/detail/ui/ReferenceTab.tsx
  • src/widgets/designer/detail/ui/WorkRequestTab.tsx

Comment on lines +24 to +26
const commission =
designerDetailCommissions.find(item => String(item.id) === commissionId) ??
designerDetailCommissions[0];

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

존재하지 않는 commissionId에 대한 silent fallback를 수정해주세요.

find() 결과가 없을 때 designerDetailCommissions[0]로 fallback하면, 잘못된 ID로 접근한 사용자에게 다른 커미션 데이터를 보여주게 됩니다. not-found 상태 처리를 권장합니다.

🛡️ 제안 수정: not-found 처리 추가
   const commission =
-    designerDetailCommissions.find(item => String(item.id) === commissionId) ??
-    designerDetailCommissions[0];
+    designerDetailCommissions.find(item => String(item.id) === commissionId);
+
+  if (!commission) {
+    return <div>존재하지 않는 커미션입니다.</div>;
+  }
📝 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
const commission =
designerDetailCommissions.find(item => String(item.id) === commissionId) ??
designerDetailCommissions[0];
const commission =
designerDetailCommissions.find(item => String(item.id) === commissionId);
if (!commission) {
return <div>존재하지 않는 커미션입니다.</div>;
}
🤖 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/app/designer/`(withSidebar)/detail/[commissionId]/page.tsx around lines
24 - 26, Update the commission selection logic in the page component so an
unmatched commissionId does not fall back to designerDetailCommissions[0].
Preserve the matched commission path, and explicitly handle an undefined find
result with the page’s not-found behavior instead of rendering another
commission’s data.

@waldls waldls 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.

확인했습니다 수고많았어요~

@KOJ50 KOJ50 merged commit 419364d into main Jul 13, 2026
2 checks passed
@KOJ50 KOJ50 deleted the feature/#60-designer-detail-ui branch July 13, 2026 05:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEAT] 외주 내용 조회 퍼블리싱

2 participants