Skip to content

[FEAT] 메이커스팀 구성원 추가 API 개발#604

Merged
kangkings merged 4 commits into
devfrom
feat/#588-create-member-makers
Jul 22, 2026
Merged

[FEAT] 메이커스팀 구성원 추가 API 개발#604
kangkings merged 4 commits into
devfrom
feat/#588-create-member-makers

Conversation

@kangkings

@kangkings kangkings commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

#️⃣연관된 이슈

close #588

📝 작업 내용

  • 메이커스팀 구성원 관리에 필요한 enum과 member_makers 컬럼 매핑을 정리했습니다.
  • 메이커스팀 구성원 추가 요청 DTO를 구성하고, 기존 일반 구성원 추가와 공통 신상정보 생성/복구 흐름을 재사용하도록 변경했습니다.
  • 메이커스팀 구성원 추가 API와 활동 생성 로직을 연결했습니다.
  • 동일 구성원에게 ACTIVE 상태의 메이커스 활동이 이미 있으면 중복 추가되지 않도록 검증을 추가했습니다.
  • 도메인, 서비스, 레포지토리, E2E 테스트를 보강했습니다.

🙏 리뷰 요구사항 (선택)

변경 범위가 넓어 커밋 단위를 세분화해 두었습니다. 가능하면 커밋 단위로 리뷰 부탁드립니다.

테스트는 관련 범위 기준으로 통과 확인했습니다.

Summary by CodeRabbit

  • 새로운 기능

    • 메이커스팀 구성원을 등록하는 관리자 API가 추가되었습니다.
    • 이름, 연락처, 직군, 경력, 팀, 모집 정보와 활동 가능 여부 등 상세 정보를 입력할 수 있습니다.
    • 기존 회원을 복구하여 재등록할 수 있습니다.
  • 버그 수정

    • 이미 활동 중인 메이커스팀 구성원은 중복 등록되지 않으며, 충돌 오류가 안내됩니다.
  • 개선

    • 회원 유형별 관리 흐름이 분리되어 구성원 등록 및 조회 처리가 안정화되었습니다.

@coderabbitai

coderabbitai Bot commented Jul 21, 2026

Copy link
Copy Markdown

Review Change Stack

Walkthrough

메이커스팀 구성원 생성 요청 DTO와 API가 추가되었습니다. 회원 생성·복구, 메이커스 활동 생성 및 ACTIVE 중복 검증이 연결되었으며, 관련 도메인 타입·JPA 매핑·마이그레이션과 테스트가 확장되었습니다.

Changes

메이커스팀 구성원 생성

Layer / File(s) Summary
요청 계약과 도메인 모델
src/main/java/org/ject/support/admin/member/dto/request/*, src/main/java/org/ject/support/domain/member/*, src/main/java/org/ject/support/domain/member/entity/*, src/main/resources/db/migration/*
공통 회원 생성 요청 계약과 메이커스 전용 검증 DTO, 메이커스 관련 열거형, 활동·하위 엔티티 생성 로직, enum 기반 JPA 매핑 및 컬럼 변경 마이그레이션이 추가되었습니다.
생성 오케스트레이션과 중복 검증
src/main/java/org/ject/support/admin/member/service/*, src/main/java/org/ject/support/domain/member/repository/*, src/main/java/org/ject/support/domain/member/exception/*
회원 생성·복구 후 메이커스 활동을 생성하고 저장하며, ACTIVE 메이커스 활동 존재 시 충돌 오류를 반환하도록 연결되었습니다.
관리자 API와 유스케이스 분리
src/main/java/org/ject/support/admin/member/controller/*
POST /admin/members/makers 엔드포인트가 추가되었고, 학기 컨트롤러가 AdminMemberSemesterUseCase를 사용하도록 변경되었습니다.
생성·중복·복구 검증
src/test/java/org/ject/support/admin/member/controller/*, src/test/java/org/ject/support/admin/member/service/*, src/test/java/org/ject/support/domain/member/*
메이커스 구성원 생성, ACTIVE 중복 차단, 삭제 회원 복구, 엔티티 생성 및 저장소 조회 결과를 검증하는 테스트가 추가·갱신되었습니다.

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

Poem

당근을 문 토끼가 뛰어요
메이커스 팀원이 새로 와요
중복 활동은 살짝 멈추고
새 활동은 꼼꼼히 담아요
테스트 숲에도 꽃이 피어요

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 23.91% 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 제목이 메이커스팀 구성원 추가 API 개발이라는 핵심 변경을 정확히 요약합니다.
Linked Issues check ✅ Passed 직접 연결된 이슈 #588의 메이커스팀 구성원 추가 목적과 코드 변경이 일치합니다.
Out of Scope Changes check ✅ Passed 변경은 API, 도메인, 저장소, 마이그레이션, 테스트 등 기능 구현에 필요한 범위로 보이며 뚜렷한 무관 변경은 없습니다.
✨ 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 feat/#588-create-member-makers

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.

@kangkings
kangkings requested a review from 023-dev July 21, 2026 12:42
@kangkings kangkings self-assigned this Jul 21, 2026
@kangkings kangkings added ✨feature 구현, 개선 사항 관련 부분 👨🏻‍💻backend 백엔드 작업 labels Jul 21, 2026
@github-actions

Copy link
Copy Markdown

Test Results

426 tests   426 ✅  12s ⏱️
 78 suites    0 💤
 78 files      0 ❌

Results for commit 22561b4.

@github-actions

Copy link
Copy Markdown

📊테스트 커버리지

Overall Project 85.66% 🍏
Files changed 100% 🍏

File Coverage
CareerLevel.java 100% 🍏
Availability.java 100% 🍏
MakersTeam.java 100% 🍏
AdminMemberSemesterUseCase.java 100% 🍏
AdminMemberService.java 100% 🍏
AdminMemberMakersUseCase.java 100% 🍏
AdminMemberActivityService.java 100% 🍏
MemberMakers.java 100% 🍏
MemberActivity.java 100% 🍏

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

🧹 Nitpick comments (2)
src/main/java/org/ject/support/admin/member/service/AdminMemberMakersUseCase.java (1)

7-7: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

사용하지 않는 import 제거

jakarta.validation.Valid는 이 클래스 내에서 사용되지 않으므로 제거하는 것이 좋습니다. 입력값 검증은 이미 Controller 계층에서 @Valid를 통해 수행되고 있습니다.

♻️ 수정 제안
-import jakarta.validation.Valid;
🤖 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/main/java/org/ject/support/admin/member/service/AdminMemberMakersUseCase.java`
at line 7, Remove the unused jakarta.validation.Valid import from
AdminMemberMakersUseCase; keep validation responsibility in the Controller layer
unchanged.
src/main/java/org/ject/support/domain/member/repository/MemberActivityRepository.java (1)

27-34: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

JPQL의 패키지명 하드코딩 리팩토링 제안

JPQL 내부에 org.ject.support.domain.member.MemberType.MAKERS와 같이 패키지 경로를 포함한 FQCN(Fully Qualified Class Name)을 하드코딩하면, 추후 Enum의 패키지나 클래스명이 변경될 때 런타임 에러가 발생할 위험이 있습니다.

다음과 같이 Spring Data JPA의 쿼리 메서드(Derived Query)와 default 메서드를 조합하여 타입 안정성을 확보하는 방식을 권장합니다.

♻️ 쿼리 메서드를 활용한 리팩토링 예시
import org.ject.support.domain.member.ActivityStatus;
import org.ject.support.domain.member.MemberType;

// ...

	default boolean existsActiveMakersActivityByMemberId(Long memberId) {
		return existsByMemberIdAndMemberTypeAndActivityStatus(
			memberId, 
			MemberType.MAKERS, 
			ActivityStatus.ACTIVE
		);
	}

	boolean existsByMemberIdAndMemberTypeAndActivityStatus(
		Long memberId, 
		MemberType memberType, 
		ActivityStatus activityStatus
	);
🤖 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/main/java/org/ject/support/domain/member/repository/MemberActivityRepository.java`
around lines 27 - 34, Replace the hard-coded JPQL in
existsActiveMakersActivityByMemberId with a derived repository method named
existsByMemberIdAndMemberTypeAndActivityStatus, and implement the existing
method as a default wrapper that passes MemberType.MAKERS and
ActivityStatus.ACTIVE. Add the required enum imports and preserve the current
memberId-based behavior.
🤖 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.

Nitpick comments:
In
`@src/main/java/org/ject/support/admin/member/service/AdminMemberMakersUseCase.java`:
- Line 7: Remove the unused jakarta.validation.Valid import from
AdminMemberMakersUseCase; keep validation responsibility in the Controller layer
unchanged.

In
`@src/main/java/org/ject/support/domain/member/repository/MemberActivityRepository.java`:
- Around line 27-34: Replace the hard-coded JPQL in
existsActiveMakersActivityByMemberId with a derived repository method named
existsByMemberIdAndMemberTypeAndActivityStatus, and implement the existing
method as a default wrapper that passes MemberType.MAKERS and
ActivityStatus.ACTIVE. Add the required enum imports and preserve the current
memberId-based behavior.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 494bc06b-6662-4f0a-8c8f-244754c8b5b7

📥 Commits

Reviewing files that changed from the base of the PR and between 5846a93 and 22561b4.

📒 Files selected for processing (23)
  • src/main/java/org/ject/support/admin/member/controller/AdminMemberMakersApiSpec.java
  • src/main/java/org/ject/support/admin/member/controller/AdminMemberMakersController.java
  • src/main/java/org/ject/support/admin/member/controller/AdminMemberSemesterController.java
  • src/main/java/org/ject/support/admin/member/dto/request/CreateMemberMakersRequest.java
  • src/main/java/org/ject/support/admin/member/dto/request/CreateMemberRequest.java
  • src/main/java/org/ject/support/admin/member/dto/request/CreateMemberSemesterRequest.java
  • src/main/java/org/ject/support/admin/member/service/AdminMemberActivityService.java
  • src/main/java/org/ject/support/admin/member/service/AdminMemberMakersUseCase.java
  • src/main/java/org/ject/support/admin/member/service/AdminMemberSemesterUseCase.java
  • src/main/java/org/ject/support/admin/member/service/AdminMemberService.java
  • src/main/java/org/ject/support/domain/member/Availability.java
  • src/main/java/org/ject/support/domain/member/CareerLevel.java
  • src/main/java/org/ject/support/domain/member/MakersTeam.java
  • src/main/java/org/ject/support/domain/member/entity/MemberActivity.java
  • src/main/java/org/ject/support/domain/member/entity/MemberMakers.java
  • src/main/java/org/ject/support/domain/member/exception/MemberErrorCode.java
  • src/main/java/org/ject/support/domain/member/repository/MemberActivityRepository.java
  • src/main/resources/db/migration/V35__rename_member_makers_team_name_to_makers_team.sql
  • src/test/java/org/ject/support/admin/member/controller/AdminMemberMakersControllerTest.java
  • src/test/java/org/ject/support/admin/member/service/AdminMemberActivityServiceTest.java
  • src/test/java/org/ject/support/admin/member/service/AdminMemberSemesterUseCaseTest.java
  • src/test/java/org/ject/support/domain/member/entity/MemberActivityTest.java
  • src/test/java/org/ject/support/domain/member/repository/MemberActivityRepositoryTest.java

@023-dev 023-dev left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

수고하셨습니다 👍🏼

@kangkings
kangkings merged commit 972360d into dev Jul 22, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

👨🏻‍💻backend 백엔드 작업 ✨feature 구현, 개선 사항 관련 부분

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

[FUNC_MBR_MGT_09] 메이커스팀 구성원 추가

2 participants