Skip to content

[feat] 운영서포터즈 직군 세분화#587

Merged
kangkings merged 1 commit into
devfrom
feat/586-supporters-jobfamily-division
Jul 9, 2026
Merged

[feat] 운영서포터즈 직군 세분화#587
kangkings merged 1 commit into
devfrom
feat/586-supporters-jobfamily-division

Conversation

@kangkings

@kangkings kangkings commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

#️⃣연관된 이슈

close #586

📝 작업 내용

운영 서포터즈 직군 세분화 반영 (jobfamily 추가, 기존데이터 호환을위해 SUPPORTER 유지)

  • OPS(운영팀)
  • INFRA(인프라팀)
  • BX(BX팀)
  • ER(대외협력팀)

🙏 리뷰 요구사항 (선택)

Summary by CodeRabbit

  • 새 기능
    • 직군 선택 항목에 운영팀(OPS), 인프라팀(INFRA), BX팀(BX), 대외협력팀(ER) 이 추가되었습니다.
    • 각 직군의 설명이 한국어로 표시되며, 기존과 동일한 설정이 적용됩니다.

@kangkings
kangkings requested a review from 023-dev July 9, 2026 11:50
@kangkings kangkings self-assigned this Jul 9, 2026
@kangkings kangkings added the 👨🏻‍💻backend 백엔드 작업 label Jul 9, 2026
@coderabbitai

coderabbitai Bot commented Jul 9, 2026

Copy link
Copy Markdown

Review Change Stack

Walkthrough

JobFamily enum에 운영팀(OPS), 인프라팀(INFRA), BX팀(BX), 대외협력팀(ER) 4개 상수가 추가되었으며, 각 상수는 한국어 표시명과 false 값의 포트폴리오 필수 여부를 갖습니다. 관련 테스트 파일(JobFamilyTest, FileControllerTest, ApplicationPeriodTest)에서 신규 직군에 대한 검증 및 Redis 모킹이 확장되었습니다.

Changes

JobFamily 신규 직군 추가

Layer / File(s) Summary
JobFamily enum 상수 추가
src/main/java/org/ject/support/domain/member/JobFamily.java
OPS, INFRA, BX, ER 4개 상수가 추가되고 각각 한국어 표시명과 isPortfolioRequired 값(false)이 정의됨.
JobFamily 관련 테스트 확장
src/test/java/org/ject/support/domain/member/JobFamilyTest.java, src/test/java/org/ject/support/domain/file/controller/FileControllerTest.java, src/test/java/org/ject/support/testconfig/ApplicationPeriodTest.java
신규 직군에 대한 설명/포트폴리오 필수 여부 테스트 추가, Redis recruit 플래그 및 모집 기간 관련 모킹 대상이 신규 직군까지 확장됨.

Estimated code review effort: 1 (Trivial) | ~5 minutes

Poem

당근밭에 새 팀이 생겼어요 🥕
OPS, INFRA, BX, ER 네 마리 토끼
테스트도 함께 깡총깡총 따라오고
false 도장 콱콱 찍어봐요
오늘도 무사히 컴파일 완료!

🚥 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 연결된 #586의 제목과 PR 변경 사항이 모두 운영서포터즈 직군 세분화에 부합합니다.
Out of Scope Changes check ✅ Passed 변경 범위가 JobFamily 추가와 관련 테스트 보강에 한정되어 있어 범위를 벗어난 수정은 보이지 않습니다.
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 feat/586-supporters-jobfamily-division

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

github-actions Bot commented Jul 9, 2026

Copy link
Copy Markdown

Test Results

413 tests   413 ✅  13s ⏱️
 77 suites    0 💤
 77 files      0 ❌

Results for commit 003c15b.

@github-actions

github-actions Bot commented Jul 9, 2026

Copy link
Copy Markdown

📊테스트 커버리지

Overall Project 85.15% 🍏
Files changed 100% 🍏

File Coverage
JobFamily.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/test/java/org/ject/support/testconfig/ApplicationPeriodTest.java (1)

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

ApplicationPeriodTestJobFamily.values() 반복문으로 리팩터링을 권장합니다.

FileControllerTest에서 제안한 것과 동일한 패턴입니다. setUp()의 개별 JobFamily 스텁도 반복문으로 대체하면 향후 직군 추가 시 이 파일을 수정할 필요가 없습니다.

♻️ 제안하는 리팩터링
-        when(valueOperations.get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, JobFamily.PM.name())))
-                .thenReturn(Boolean.toString(true));
-        when(valueOperations.get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, JobFamily.PD.name())))
-                .thenReturn(Boolean.toString(true));
-        when(valueOperations.get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, JobFamily.FE.name())))
-                .thenReturn(Boolean.toString(true));
-        when(valueOperations.get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, JobFamily.BE.name())))
-                .thenReturn(Boolean.toString(true));
-        when(valueOperations.get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, JobFamily.APP.name())))
-                .thenReturn(Boolean.toString(true));
-        when(valueOperations.get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, JobFamily.SUPPORTER.name())))
-                .thenReturn(Boolean.toString(true));
-        when(valueOperations.get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, JobFamily.OPS.name())))
-                .thenReturn(Boolean.toString(true));
-        when(valueOperations.get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, JobFamily.INFRA.name())))
-                .thenReturn(Boolean.toString(true));
-        when(valueOperations.get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, JobFamily.BX.name())))
-                .thenReturn(Boolean.toString(true));
-        when(valueOperations.get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, JobFamily.ER.name())))
-                .thenReturn(Boolean.toString(true));
+        for (JobFamily jobFamily : JobFamily.values()) {
+            when(valueOperations.get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, jobFamily.name())))
+                    .thenReturn(Boolean.toString(true));
+        }
🤖 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/test/java/org/ject/support/testconfig/ApplicationPeriodTest.java` around
lines 28 - 47, `ApplicationPeriodTest`의 `setUp()`에서 `valueOperations.get(...)`를
JobFamily별로 하나씩 스텁하는 중복을 `JobFamily.values()` 반복문으로 제거하세요.
`ApplicationPeriodTest`와 `valueOperations.get` 호출 패턴을 유지하되, 각 `JobFamily`에 대해
동일한 true 응답을 한 번에 설정하도록 리팩터링하면 됩니다. `Constants.RECRUIT_FLAG_PREFIX` 조합 로직은 그대로
두고, 개별 `JobFamily.PM`~`JobFamily.ER` 하드코딩을 반복문 기반으로 바꿔 주세요.
src/test/java/org/ject/support/domain/file/controller/FileControllerTest.java (1)

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

Redis 모킹 패턴을 JobFamily.values() 반복문으로 리팩터링을 권장합니다.

새로운 JobFamily가 추가될 때마다 ApplicationPeriodTestFileControllerTest 양쪽에 개별 when(...) 스텁을 수동으로 추가해야 합니다. JobFamily.values()를 순회하는 반복문으로 대체하면 향후 직군 추가 시 테스트 파일을 수정할 필요가 없어 유지보수성이 크게 향상됩니다.

♻️ 제안하는 리팩터링
-        when(redisTemplate.opsForValue().get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, JobFamily.PM.name())))
-                .thenReturn(Boolean.toString(false));
-        when(redisTemplate.opsForValue().get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, JobFamily.PD.name())))
-                .thenReturn(Boolean.toString(false));
-        when(redisTemplate.opsForValue().get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, JobFamily.FE.name())))
-                .thenReturn(Boolean.toString(false));
-        when(redisTemplate.opsForValue().get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, JobFamily.BE.name())))
-                .thenReturn(Boolean.toString(false));
-        when(redisTemplate.opsForValue().get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, JobFamily.APP.name())))
-                .thenReturn(Boolean.toString(false));
-        when(redisTemplate.opsForValue().get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, JobFamily.SUPPORTER.name())))
-                .thenReturn(Boolean.toString(false));
-        when(redisTemplate.opsForValue().get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, JobFamily.OPS.name())))
-                .thenReturn(Boolean.toString(false));
-        when(redisTemplate.opsForValue().get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, JobFamily.INFRA.name())))
-                .thenReturn(Boolean.toString(false));
-        when(redisTemplate.opsForValue().get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, JobFamily.BX.name())))
-                .thenReturn(Boolean.toString(false));
-        when(redisTemplate.opsForValue().get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, JobFamily.ER.name())))
-                .thenReturn(Boolean.toString(false));
+        for (JobFamily jobFamily : JobFamily.values()) {
+            when(redisTemplate.opsForValue().get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, jobFamily.name())))
+                    .thenReturn(Boolean.toString(false));
+        }

ApplicationPeriodTestsetUp()에도 동일한 패턴을 적용하면 일관성을 유지할 수 있습니다.

🤖 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/test/java/org/ject/support/domain/file/controller/FileControllerTest.java`
around lines 101 - 120, The Redis stubbing in FileControllerTest is duplicated
per JobFamily and should be refactored to avoid adding new when(...) calls for
every future role. Update the test setup in the FileControllerTest class to
iterate over JobFamily.values() and stub redisTemplate.opsForValue().get(...)
dynamically for each enum value, using the existing
Constants.RECRUIT_FLAG_PREFIX and JobFamily.name() pattern. Keep the same
behavior for all current job families, and apply the same approach in
ApplicationPeriodTest if it uses the same manual stubbing pattern.
🤖 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/test/java/org/ject/support/domain/file/controller/FileControllerTest.java`:
- Around line 101-120: The Redis stubbing in FileControllerTest is duplicated
per JobFamily and should be refactored to avoid adding new when(...) calls for
every future role. Update the test setup in the FileControllerTest class to
iterate over JobFamily.values() and stub redisTemplate.opsForValue().get(...)
dynamically for each enum value, using the existing
Constants.RECRUIT_FLAG_PREFIX and JobFamily.name() pattern. Keep the same
behavior for all current job families, and apply the same approach in
ApplicationPeriodTest if it uses the same manual stubbing pattern.

In `@src/test/java/org/ject/support/testconfig/ApplicationPeriodTest.java`:
- Around line 28-47: `ApplicationPeriodTest`의 `setUp()`에서
`valueOperations.get(...)`를 JobFamily별로 하나씩 스텁하는 중복을 `JobFamily.values()` 반복문으로
제거하세요. `ApplicationPeriodTest`와 `valueOperations.get` 호출 패턴을 유지하되, 각
`JobFamily`에 대해 동일한 true 응답을 한 번에 설정하도록 리팩터링하면 됩니다.
`Constants.RECRUIT_FLAG_PREFIX` 조합 로직은 그대로 두고, 개별 `JobFamily.PM`~`JobFamily.ER`
하드코딩을 반복문 기반으로 바꿔 주세요.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 47146a06-e108-4c08-aed8-2d3649475a3f

📥 Commits

Reviewing files that changed from the base of the PR and between 6d4d5f4 and 003c15b.

📒 Files selected for processing (4)
  • src/main/java/org/ject/support/domain/member/JobFamily.java
  • src/test/java/org/ject/support/domain/file/controller/FileControllerTest.java
  • src/test/java/org/ject/support/domain/member/JobFamilyTest.java
  • src/test/java/org/ject/support/testconfig/ApplicationPeriodTest.java

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

Labels

👨🏻‍💻backend 백엔드 작업

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

[FEAT] 운영서포터즈 직군 세분화

2 participants