Skip to content

[FEATURE] 디자이너 외주 찾기 목록 조회 기능 추가#59

Open
Jong0128 wants to merge 5 commits into
devfrom
feat/#55-designers-commission-list
Open

[FEATURE] 디자이너 외주 찾기 목록 조회 기능 추가#59
Jong0128 wants to merge 5 commits into
devfrom
feat/#55-designers-commission-list

Conversation

@Jong0128

@Jong0128 Jong0128 commented Jun 26, 2026

Copy link
Copy Markdown
Collaborator

🚀 Related issue

Closes #55

#️⃣ Summary

  • 디자이너 외주 찾기 목록 조회 기능 추가

🔧 Changes

  • GET /api/v1/designers/commissions API 추가

📸 Test Evidence

image

💬 Reviewer Notes

  • 해당 Controller에서도 InstructorCommissionHistoryController 와 같이 Pageable 정렬 정의하여 주입하는 방식으로 진행했습니다.

Summary by CodeRabbit

  • New Features

    • 디자이너가 확인할 수 있는 “모집 중 외주 목록” 조회 API가 추가되었습니다.
    • 목록은 페이지 단위로 제공되며, 마감일 기준으로 정렬되어 보여집니다.
    • 각 외주 항목에 제목, 카테고리, 마감일, 금액 정보가 포함됩니다.
  • Bug Fixes

    • 존재하지 않는 디자이너 조회 시 명확한 오류가 반환되도록 개선되었습니다.
    • 디자이너 레벨에 맞는 금액 정책이 없을 때 적절한 오류 처리가 추가되었습니다.

@Jong0128 Jong0128 requested a review from fervovita as a code owner June 26, 2026 02:47
@Jong0128 Jong0128 self-assigned this Jun 26, 2026
@Ditda-Official Ditda-Official deleted a comment from coderabbitai Bot Jun 26, 2026
@Ditda-Official Ditda-Official deleted a comment from coderabbitai Bot Jun 26, 2026
@Jong0128 Jong0128 requested a review from Copilot June 26, 2026 03:33

Copilot AI 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.

Pull request overview

디자이너가 모집 중(RECRUITING) 외주 목록을 페이징으로 조회할 수 있는 신규 API(GET /api/v1/designers/commissions)를 추가하고, 디자이너 레벨에 따른 금액 정책을 응답에 포함하도록 구성한 PR입니다.

Changes:

  • 디자이너용 모집 중 외주 목록 조회 API 컨트롤러/파사드/서비스/매퍼 및 응답 DTO 추가
  • CommissionRepository에 상태 기반 페이징 조회 메서드 추가
  • 디자이너 조회/레벨 정책 관련 에러코드 및 금액 정책(레벨별 기본금 + 최대 보너스) 추가

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
src/main/java/ditda/backend/domain/designer/service/DesignerService.java 디자이너 엔티티 조회 전용 서비스 추가
src/main/java/ditda/backend/domain/designer/exception/DesignerErrorCode.java 디자이너 조회 실패/레벨 정책 미존재 에러 코드 추가
src/main/java/ditda/backend/domain/commission/core/service/DesignerCommissionService.java 모집 중 외주 목록 조회 서비스 추가 (status+pageable)
src/main/java/ditda/backend/domain/commission/core/repository/CommissionRepository.java findByStatus(…, Pageable) 메서드 추가
src/main/java/ditda/backend/domain/commission/core/mapper/CommissionMapper.java Commission Page → CommissionListResponse 변환 매퍼 추가
src/main/java/ditda/backend/domain/commission/core/facade/DesignerCommissionFacade.java 디자이너 조회 + 모집중 외주 조회를 결합한 파사드 추가
src/main/java/ditda/backend/domain/commission/core/entity/enums/CommissionAmountPolicy.java 디자이너 레벨별 기본/최대 금액 정책 enum 추가
src/main/java/ditda/backend/domain/commission/core/dto/response/CommissionListResponse.java 디자이너 외주 목록 조회 응답 DTO 추가
src/main/java/ditda/backend/domain/commission/core/controller/DesignerCommissionController.java 신규 GET API 엔드포인트 및 정렬 주입(applicationDeadline ASC, id ASC) 추가

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/main/java/ditda/backend/domain/designer/exception/DesignerErrorCode.java Outdated
@coderabbitai

coderabbitai Bot commented Jun 26, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@Jong0128, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 49 minutes and 27 seconds. Learn how PR review limits work.

Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file).

⌛ How to resolve this issue?

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 credits.

🚦 How do rate 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 see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yml

Review profile: CHILL

Plan: Pro Plus

Run ID: 85383a2f-d661-4b1a-b61e-15ffc6eed49d

📥 Commits

Reviewing files that changed from the base of the PR and between c6eee22 and 0942d9d.

📒 Files selected for processing (2)
  • src/main/java/ditda/backend/domain/commission/core/entity/enums/CommissionAmountPolicy.java
  • src/main/java/ditda/backend/domain/designer/exception/DesignerErrorCode.java
📝 Walkthrough

Walkthrough

디자이너 인증 기반의 /api/v1/designers/commissions 조회 API가 추가됐다. 모집 중 외주를 페이지 단위로 조회하고, 디자이너 레벨에 따라 기본금과 최대금액을 계산해 목록 응답으로 반환한다.

Changes

디자이너 모집 외주 목록 조회

Layer / File(s) Summary
응답 계약
src/main/java/ditda/backend/domain/commission/core/dto/response/CommissionListResponse.java
목록 응답 DTO와 단일 항목 DTO가 추가되고, 외주 목록 메타데이터와 항목 필드가 Swagger 스키마와 함께 선언된다.
디자이너 조회와 모집 중 커미션 조회
src/main/java/ditda/backend/domain/designer/exception/DesignerErrorCode.java, src/main/java/ditda/backend/domain/designer/service/DesignerService.java, src/main/java/ditda/backend/domain/commission/core/repository/CommissionRepository.java, src/main/java/ditda/backend/domain/commission/core/service/DesignerCommissionService.java
디자이너 미존재 오류 코드, 디자이너 조회 서비스, 상태/페이징 기반 커미션 조회 메서드와 서비스가 추가된다.
금액 정책과 응답 매핑
src/main/java/ditda/backend/domain/commission/core/entity/enums/CommissionAmountPolicy.java, src/main/java/ditda/backend/domain/commission/core/mapper/CommissionMapper.java, src/main/java/ditda/backend/domain/commission/core/facade/DesignerCommissionFacade.java
디자이너 레벨별 금액 정책을 계산하고, 페이지 결과를 금액 포함 목록 응답으로 조합하는 매퍼와 facade가 추가된다.
API 엔드포인트 노출
src/main/java/ditda/backend/domain/commission/core/controller/DesignerCommissionController.java
/api/v1/designers/commissions GET 엔드포인트가 추가되고, 페이지 정렬을 고정한 뒤 facade 결과를 ApiResponse로 반환한다.

Sequence Diagram(s)

sequenceDiagram
  participant Designer
  participant DesignerCommissionController
  participant DesignerCommissionFacade
  participant DesignerService
  participant DesignerCommissionService
  participant CommissionRepository
  participant CommissionMapper
  participant CommissionAmountPolicy

  Designer->>DesignerCommissionController: GET /api/v1/designers/commissions
  DesignerCommissionController->>DesignerCommissionFacade: getRecruitingCommissionList(designerId, sortedPageable)
  DesignerCommissionFacade->>DesignerService: getById(designerId)
  DesignerService-->>DesignerCommissionFacade: Designer
  DesignerCommissionFacade->>DesignerCommissionService: getRecruitingCommissions(pageable)
  DesignerCommissionService->>CommissionRepository: findByStatus(RECRUITING, pageable)
  CommissionRepository-->>DesignerCommissionService: Page<Commission>
  DesignerCommissionService-->>DesignerCommissionFacade: Page<Commission>
  DesignerCommissionFacade->>CommissionMapper: toCommissionListResponse(page, designer.level)
  CommissionMapper->>CommissionAmountPolicy: from(designer.level)
  CommissionAmountPolicy-->>CommissionMapper: baseAmount, maxAmount
  CommissionMapper-->>DesignerCommissionFacade: CommissionListResponse
  DesignerCommissionFacade-->>DesignerCommissionController: CommissionListResponse
  DesignerCommissionController-->>Designer: ApiResponse<CommissionListResponse>
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • Ditda-Official/Ditda-Backend#22: CommissionRepository.findByStatus(...)Commission 필드 매핑이 이 PR의 모집 중 외주 목록 조회 흐름과 직접 연결된다.
  • Ditda-Official/Ditda-Backend#33: commission.core 패키지의 저장소와 도메인 타입 구성이 이 PR의 DesignerCommissionService, CommissionRepository, CommissionMapper 사용 경로와 맞닿아 있다.
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 10.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목이 디자이너 외주 목록 조회 기능 추가라는 핵심 변경을 간결하게 잘 요약합니다.
Linked Issues check ✅ Passed 직접 연결된 #55의 GET /api/v1/designers/commissions API 추가 요구사항을 구현했습니다.
Out of Scope Changes check ✅ Passed 추가된 서비스, 매퍼, DTO, 예외 코드는 모두 해당 목록 조회 API 구현을 위한 지원 변경으로 보입니다.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/#55-designers-commission-list

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.

Copilot AI 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.

Pull request overview

Copilot reviewed 9 out of 9 changed files in this pull request and generated no new comments.

@Jong0128

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jun 26, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@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

🤖 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/main/java/ditda/backend/domain/designer/exception/DesignerErrorCode.java`:
- Line 14: The DESIGNER_LEVEL_POLICY_NOT_FOUND error is currently mapped to a
404 in DesignerErrorCode, but it should be treated as a server-side 5xx
classification instead. Update the DESIGNE​R_LEVEL_POLICY_NOT_FOUND enum entry
to use an internal/server error HttpStatus and keep the existing error
code/message consistent, so the error is not reported as a client-side not-found
issue.
🪄 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.yml

Review profile: CHILL

Plan: Pro Plus

Run ID: 2b952022-5826-4c18-82b0-90997468abcd

📥 Commits

Reviewing files that changed from the base of the PR and between 1bcdbd5 and c6eee22.

📒 Files selected for processing (9)
  • src/main/java/ditda/backend/domain/commission/core/controller/DesignerCommissionController.java
  • src/main/java/ditda/backend/domain/commission/core/dto/response/CommissionListResponse.java
  • src/main/java/ditda/backend/domain/commission/core/entity/enums/CommissionAmountPolicy.java
  • src/main/java/ditda/backend/domain/commission/core/facade/DesignerCommissionFacade.java
  • src/main/java/ditda/backend/domain/commission/core/mapper/CommissionMapper.java
  • src/main/java/ditda/backend/domain/commission/core/repository/CommissionRepository.java
  • src/main/java/ditda/backend/domain/commission/core/service/DesignerCommissionService.java
  • src/main/java/ditda/backend/domain/designer/exception/DesignerErrorCode.java
  • src/main/java/ditda/backend/domain/designer/service/DesignerService.java

Comment thread src/main/java/ditda/backend/domain/designer/exception/DesignerErrorCode.java Outdated

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

리뷰가 늦어져서 죄송합니다...
아래의 코멘트 한번만 확인해주세요!!


@Getter
@AllArgsConstructor
public enum CommissionAmountPolicy {

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.

#60CommissionPricePolicy를 이미 구현해 놓았는데,
카테고리에 따라서 가격이 달라지고도 하고 환불/정산 등의 계산 로직이 추가로 들어와야 하는데 이를 enum으로만 관리하기에는 확장성 면에서 무리가 있을 것 같습니다.

혹시 CommissionPricePolicy로 통일해서 구현해주실 수 있을까요...?

그렇게 되면 아마 CommissionMapper 없이 단순 from/of 정적 메소드로 변환이 가능할 것 같습니다..!

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.

[FEATURE] 디자이너 외주 찾기 목록 조회 기능 추가

3 participants