Skip to content

[WTH-220] 동아리 이미지도 File을 타도록 수정#40

Merged
hyxklee merged 14 commits intodevfrom
refactor/WTH-220-동아리-프사-배경사진-File-도메인-연동
Mar 25, 2026

Hidden character warning

The head ref may contain hidden characters: "refactor/WTH-220-\ub3d9\uc544\ub9ac-\ud504\uc0ac-\ubc30\uacbd\uc0ac\uc9c4-File-\ub3c4\uba54\uc778-\uc5f0\ub3d9"
Merged

[WTH-220] 동아리 이미지도 File을 타도록 수정#40
hyxklee merged 14 commits intodevfrom
refactor/WTH-220-동아리-프사-배경사진-File-도메인-연동

Conversation

@hyxklee
Copy link
Copy Markdown
Contributor

@hyxklee hyxklee commented Mar 25, 2026

📌 Summary

어떤 작업인지 한 줄 요약해 주세요.

동아리 프사, 배경사진도 File 도메인을 타도록 수정했습니당.

📝 Changes

변경사항을 what, why, how로 구분해 작성해 주세요.

What

Why

CDN 도입시 원활하게 연동시키기 위함

How

File에 저장한 후 그 key를 저장하도록 수정

📸 Screenshots / Logs

필요시 스크린샷 or 로그를 첨부해주세요.

💡 Reviewer 참고사항

리뷰에 참고할 내용을 작성해주세요.

동아리 API 테스트 후 수정 사항 본 PR에 같이 올리겠습니당!

✅ Checklist

  • PR 제목 설정 완료 (WTH-123 인증 필터 설정)
  • 테스트 구현 완료
  • 리뷰어 등록 완료
  • 자체 코드 리뷰 완료

Summary by CodeRabbit

  • New Features

    • 관리자 대상 멤버 복구 기능 추가 및 복구 성공 응답코드 추가
  • 버그 수정 / 동작 개선

    • 관리자가 자기 자신을 추방하거나 본인 권한을 변경하지 못하도록 방지(명확한 오류 제공)
    • 클럽 프로필/배경 이미지 업로드·교체·삭제 흐름 개선
  • 호환성 변경

    • 벌점 관련 요청/응답에서 penaltyType 제거
    • 멤버 역할 변경 요청 형태 단순화 및 사용자 학번 유효성 검사 범위에 학교 추가

@hyxklee hyxklee requested a review from soo0711 March 25, 2026 05:43
@hyxklee hyxklee self-assigned this Mar 25, 2026
@hyxklee hyxklee added the 🔨 Refactor 코드 구조 개선 및 리팩토링 label Mar 25, 2026
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 25, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 40350f10-8e85-4a7a-ba84-78491c479936

📥 Commits

Reviewing files that changed from the base of the PR and between 46e4ce6 and dd2519e.

📒 Files selected for processing (5)
  • src/main/kotlin/com/weeth/domain/club/application/usecase/command/ManageClubUseCase.kt
  • src/main/kotlin/com/weeth/domain/club/presentation/ClubController.kt
  • src/main/kotlin/com/weeth/domain/club/presentation/ClubResponseCode.kt
  • src/main/kotlin/com/weeth/domain/user/presentation/UserController.kt
  • src/test/kotlin/com/weeth/domain/club/application/usecase/command/ManageClubUseCaseTest.kt

📝 Walkthrough

Walkthrough

클럽 생성·수정 DTO의 이미지 필드가 문자열 storageKey에서 FileSaveRequest로 변경되고, ManageClubUseCase에 파일 저장 및 기존 업로드 파일의 소프트 삭제 로직이 추가되었습니다. 관리자 멤버 복구 API·유즈케이스 및 자기 조작 금지 예외가 도입되었으며, 페널티 관련 타입 축소와 엔티티/UseCase 간소화가 포함됩니다.

Changes

Cohort / File(s) Summary
요청 DTO 변경
src/main/kotlin/com/weeth/domain/club/application/dto/request/ClubCreateRequest.kt, src/main/kotlin/com/weeth/domain/club/application/dto/request/ClubUpdateRequest.kt, src/main/kotlin/com/weeth/domain/file/application/dto/request/FileSaveRequest.kt
프로필/배경 이미지 필드를 nullable String storageKey → nullable FileSaveRequest로 변경하고 @field:Valid 추가; FileSaveRequest.storageKey 스키마 예시 갱신.
클럽 이미지 퍼시스턴스 로직
src/main/kotlin/com/weeth/domain/club/application/usecase/command/ManageClubUseCase.kt
FileRepository 주입 및 사용 추가: 생성 시 파일 저장, 이미지 교체 시 기존 UPLOADED 파일 markDeleted() 후 새 파일 저장, 이미지 삭제 시 기존 파일 markDeleted() 처리.
파일 소유자/테스트 변경
src/main/kotlin/com/weeth/domain/file/domain/enums/FileOwnerType.kt, src/test/kotlin/com/weeth/domain/club/.../ManageClubUseCaseTest.kt, src/test/kotlin/com/weeth/domain/club/fixture/ClubMemberTestFixture.kt
FileOwnerTypeCLUB_PROFILE, CLUB_BACKGROUND 추가. 테스트에 FileRepository 모킹·검증 추가 및 banned member fixture 추가.
관리자 멤버 복구·제약 추가
src/main/kotlin/com/weeth/domain/club/application/usecase/command/AdminClubMemberUseCase.kt, src/main/kotlin/com/weeth/domain/club/presentation/ClubAdminController.kt, src/main/kotlin/com/weeth/domain/club/presentation/ClubResponseCode.kt, src/main/kotlin/com/weeth/domain/club/application/dto/request/ClubMemberRoleUpdateRequest.kt, src/main/kotlin/com/weeth/domain/club/application/exception/*.kt
restore 유즈케이스·컨트롤러 엔드포인트 추가, updateMemberRoleclubMemberId 파라미터화, 자기 자신 추방/권한 변경 금지 오류 코드·예외(SELF_BAN_NOT_ALLOWED, SELF_ROLE_CHANGE_NOT_ALLOWED) 추가; DTO에서 clubMemberId 제거.
ClubMember 도메인 변경
src/main/kotlin/com/weeth/domain/club/domain/entity/ClubMember.kt
restore()resetPenaltyCount() 추가(상태 BANNED→ACTIVE 복구 및 패널티 카운트 리셋).
페널티 도메인 및 UseCase 축소
src/main/kotlin/com/weeth/domain/penalty/... (여러 파일)
PenaltyType에서 AUTO_PENALTY, WARNING 제거; Penalty 엔티티 생성자/프로퍼티 재배치; 자동 페널티 관련 매퍼/분기 로직 제거; Save/Delete UseCase에서 항상 페널티 카운트 증감 처리로 단순화.
레포지토리/유효성 변경
src/main/kotlin/com/weeth/domain/user/domain/repository/UserRepository.kt, src/main/kotlin/com/weeth/domain/user/application/usecase/command/UpdateUserProfileUseCase.kt
학생ID 중복 검사에 학교(school)를 포함하도록 리포지토리 시그니처 및 사용 변경.
문서·주석·마이너 변경
src/main/kotlin/.../ClubController.kt, .../UniversityController.kt, .../UserController.kt, src/main/kotlin/com/weeth/domain/club/domain/entity/Club.kt
여러 컨트롤러에 Swagger @SecurityRequirements 추가, 불필요 TODO/문서 텍스트 수정 등 문서성 변경.

Sequence Diagram(s)

sequenceDiagram
    participant Client
    participant ManageClubUseCase
    participant ClubRepository
    participant FileRepository
    participant FileEntity

    rect rgba(100,150,200,0.5)
    Note over Client,ManageClubUseCase: 클럽 생성(이미지 포함)
    Client->>ManageClubUseCase: createClub(request with profileImage, backgroundImage)
    ManageClubUseCase->>ClubRepository: save(club)
    ManageClubUseCase->>FileRepository: save(File from profileImage) / save(File from backgroundImage)
    FileRepository-->>FileEntity: create UPLOADED files
    FileRepository-->>ManageClubUseCase: saved File entities
    ManageClubUseCase-->>Client: return created club
    end

    rect rgba(150,100,200,0.5)
    Note over Client,ManageClubUseCase: 프로필 이미지 교체
    Client->>ManageClubUseCase: updateClub(request with new profileImage)
    ManageClubUseCase->>FileRepository: findAllByOwnerTypeAndOwnerIdAndStatus(CLUB_PROFILE, clubId, UPLOADED)
    FileRepository-->>ManageClubUseCase: existing uploaded files
    ManageClubUseCase->>FileEntity: markDeleted() on existing files
    ManageClubUseCase->>FileRepository: save(new File from profileImage)
    FileRepository-->>ManageClubUseCase: saved new File
    ManageClubUseCase->>ClubRepository: save(club with new storageKey)
    ManageClubUseCase-->>Client: return updated club
    end
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Suggested reviewers

  • soo0711
  • dalzzy

Poem

🐰🌿
옛 키는 묻어두고 새 파일 온다,
살포시 markDeleted로 흔적 남기고,
저장소는 바뀌어도 마음은 같아,
복구의 손길로 멤버 다시 춤추네. 🎉

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 4.44% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed PR 제목 'WTH-220 동아리 이미지도 File을 타도록 수정'은 주요 변경사항인 동아리 프로필/배경 이미지가 File 도메인을 타도록 변경된 내용을 명확히 요약하고 있습니다.
Description check ✅ Passed PR 설명에서 Summary, Why, How 섹션이 채워져 있으며 체크리스트도 완료되어 있습니다. 다만 What 섹션이 비어있지만, 이미지 파일 도메인 연동이라는 변경의 핵심이 다른 섹션에서 충분히 설명되고 있습니다.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ 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 refactor/WTH-220-동아리-프사-배경사진-File-도메인-연동

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 and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

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 the current code and only fix it if needed.

Inline comments:
In
`@src/test/kotlin/com/weeth/domain/club/application/usecase/command/ManageClubUseCaseTest.kt`:
- Around line 168-174: The storageKey string in ManageClubUseCaseTest within the
FileSaveRequest constructor exceeds the 120-char line limit; extract that long
string into a local val (e.g., val storageKey =
"CLUB_PROFILE/2026-03/550e8400-e29b-41d4-a716-446655440000_profile.png") above
the FileSaveRequest call and then pass storageKey = storageKey, or alternatively
break the string across concatenated literals so the storageKey assignment line
stays under 120 chars; update the FileSaveRequest usage accordingly.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: ad2f93b6-2506-4434-bfba-9d2769b21356

📥 Commits

Reviewing files that changed from the base of the PR and between e522a4b and 28f0278.

📒 Files selected for processing (6)
  • src/main/kotlin/com/weeth/domain/club/application/dto/request/ClubCreateRequest.kt
  • src/main/kotlin/com/weeth/domain/club/application/dto/request/ClubUpdateRequest.kt
  • src/main/kotlin/com/weeth/domain/club/application/usecase/command/ManageClubUseCase.kt
  • src/main/kotlin/com/weeth/domain/club/domain/entity/Club.kt
  • src/main/kotlin/com/weeth/domain/file/domain/enums/FileOwnerType.kt
  • src/test/kotlin/com/weeth/domain/club/application/usecase/command/ManageClubUseCaseTest.kt
💤 Files with no reviewable changes (1)
  • src/main/kotlin/com/weeth/domain/club/domain/entity/Club.kt

@hyxklee hyxklee marked this pull request as draft March 25, 2026 05:49
Copy link
Copy Markdown
Collaborator

@soo0711 soo0711 left a comment

Choose a reason for hiding this comment

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

수고하셧슴니당!

@hyxklee hyxklee marked this pull request as ready for review March 25, 2026 11:07
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 3

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
src/main/kotlin/com/weeth/domain/user/domain/repository/UserRepository.kt (1)

30-30: ⚠️ Potential issue | 🔴 Critical

existsByStudentId 메서드 제거 필요

해당 메서드는 codebase 어디에서도 사용되지 않습니다. school-scoped 버전인 existsBySchoolAndStudentIdAndIdIsNot가 존재하므로, 이 메서드를 제거해 주세요.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/main/kotlin/com/weeth/domain/user/domain/repository/UserRepository.kt` at
line 30, Remove the unused repository method declaration existsByStudentId from
the UserRepository interface; rely on the existing school-scoped method
existsBySchoolAndStudentIdAndIdIsNot instead, so delete the line "fun
existsByStudentId(studentId: String): Boolean" from UserRepository (no other
changes needed unless compilation flags complain about unused imports).
src/main/kotlin/com/weeth/domain/penalty/application/usecase/command/DeletePenaltyUseCase.kt (1)

25-35: ⚠️ Potential issue | 🟡 Minor

불필요한 임포트 제거

Line 5에서 AutoPenaltyDeleteNotAllowedException을 임포트하고 있으나 코드에서 사용되지 않습니다. 제거하세요.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@src/main/kotlin/com/weeth/domain/penalty/application/usecase/command/DeletePenaltyUseCase.kt`
around lines 25 - 35, Remove the unused import
AutoPenaltyDeleteNotAllowedException from DeletePenaltyUseCase.kt; locate the
class/file containing the delete logic in DeletePenaltyUseCase (the block using
penaltyRepository.findByIdWithLock, clubMemberRepository.findByIdWithLock,
lockedMember.decrementPenaltyCount, and penaltyRepository.delete) and delete the
unused import, then run an auto-import/organize-imports pass so no other unused
imports remain.
🧹 Nitpick comments (2)
src/main/kotlin/com/weeth/domain/club/presentation/ClubAdminController.kt (1)

108-118: acceptMember deprecated 표시 확인

deprecated = true로 표시되었습니다. 해당 엔드포인트의 대체 API가 있다면 @Deprecated 어노테이션의 replaceWith 속성이나 API 문서에 대안을 명시하는 것이 사용자 경험에 도움이 됩니다.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/main/kotlin/com/weeth/domain/club/presentation/ClubAdminController.kt`
around lines 108 - 118, The `@Operation` on acceptMember is marked deprecated but
no replacement is documented; update the controller by adding a Kotlin
`@Deprecated` annotation to the acceptMember function and set the message and
replaceWith parameters to point to the replacement API (or indicate no
replacement), e.g. `@Deprecated`(message = "...", replaceWith =
ReplaceWith("replacementFunctionName(...)")), and also update the Operation
summary or KDoc to mention the alternative endpoint; ensure you reference
acceptMember and the `@Operation` declaration when making the change.
src/test/kotlin/com/weeth/domain/club/application/usecase/command/AdminClubMemberUseCaseTest.kt (1)

124-133: restore() 실패 케이스 테스트 누락

현재 테스트는 추방된 멤버를 복구하는 성공 케이스만 검증합니다. ClubMember.restore() 메서드는 멤버가 BANNED 상태가 아닐 경우 예외를 발생시키므로, 해당 실패 케이스에 대한 테스트 추가를 권장합니다.

🧪 추가 테스트 케이스 제안
it("추방되지 않은 멤버는 복구할 수 없다") {
    val activeMember = ClubMemberTestFixture.createActiveMember(club = club)
    every { clubPermissionPolicy.requireAdmin(1L, 10L) } returns adminMember
    every { clubMemberPolicy.getMemberInClub(1L, 20L) } returns activeMember

    shouldThrow<IllegalStateException> {
        useCase.restore(1L, 10L, 20L)
    }
}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@src/test/kotlin/com/weeth/domain/club/application/usecase/command/AdminClubMemberUseCaseTest.kt`
around lines 124 - 133, Add a failing-case unit test to
AdminClubMemberUseCaseTest that verifies useCase.restore(...) throws when the
target member is not BANNED: create an active member via
ClubMemberTestFixture.createActiveMember(club = club), mock
clubPermissionPolicy.requireAdmin(1L, 10L) to return adminMember and
clubMemberPolicy.getMemberInClub(1L, 20L) to return the active member, then
assert that calling useCase.restore(1L, 10L, 20L) results in
shouldThrow<IllegalStateException>; this exercises ClubMember.restore()'s
precondition and complements the existing success test.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In
`@src/main/kotlin/com/weeth/domain/club/application/usecase/command/AdminClubMemberUseCase.kt`:
- Around line 68-78: The restore() path currently lets ClubMember.restore()
throw IllegalStateException via kotlin.check(), which bypasses the BaseException
domain framework; either change ClubMember.restore() to validate state and throw
a domain BaseException subtype (e.g., MemberNotBannedException) instead of using
check(), or add explicit validation in AdminClubMemberUseCase.restore() after
clubMemberPolicy.getMemberInClub(...) and before calling member.restore() and
throw the appropriate domain exception; update references in tests/handlers to
expect the new domain exception so the global exception handler can map it to
the correct error code (see methods: AdminClubMemberUseCase.restore,
clubMemberPolicy.getMemberInClub, ClubMember.restore).

In
`@src/main/kotlin/com/weeth/domain/penalty/application/usecase/command/SavePenaltyUseCase.kt`:
- Around line 36-39: 현재 SavePenaltyUseCase.kt의 클럽 멤버 패널티 카운트
로직(clubMemberRepository.findByIdWithLock(...) 및
lockedMember.incrementPenaltyCount())은 신규 변경만 반영하므로, 배포 전에 기존 데이터의
club_member.penalty_count를 penalty 테이블 집계값으로 재계산하는 마이그레이션 또는 일회성 배치 작업을 추가하세요;
구체적으로 penalty 테이블에서 member_id별 COUNT를 집계해 club_member.penalty_count를 업데이트하는
스크립트(또는 트랜잭션/락을 사용한 배치 메서드)를 만들고, idempotent하게 설계해 배포 전 실행하거나 배포 직후 즉시 실행되도록 하며
삭제 로직(패널티 삭제 시 감소하는 코드)과 일관되도록 검증 케이스를 추가하세요.

In
`@src/main/kotlin/com/weeth/domain/user/application/usecase/command/UpdateUserProfileUseCase.kt`:
- Around line 37-39: Current behavior enforces school+studentId uniqueness only
in UpdateUserProfileUseCase via existsBySchoolAndStudentIdAndIdIsNot(...) while
SocialLoginUseCase performs no studentId uniqueness check; make them consistent
by adding the same uniqueness validation to SocialLoginUseCase (use or add a
repository method like existsBySchoolAndStudentId(...) to check before creating)
or, if the intended rule is different, remove/adjust the update check in
UpdateUserProfileUseCase to match the creation path—update both use cases to use
the same repository method and throw the same domain exception (e.g.,
StudentIdExistsException) for consistency.

---

Outside diff comments:
In
`@src/main/kotlin/com/weeth/domain/penalty/application/usecase/command/DeletePenaltyUseCase.kt`:
- Around line 25-35: Remove the unused import
AutoPenaltyDeleteNotAllowedException from DeletePenaltyUseCase.kt; locate the
class/file containing the delete logic in DeletePenaltyUseCase (the block using
penaltyRepository.findByIdWithLock, clubMemberRepository.findByIdWithLock,
lockedMember.decrementPenaltyCount, and penaltyRepository.delete) and delete the
unused import, then run an auto-import/organize-imports pass so no other unused
imports remain.

In `@src/main/kotlin/com/weeth/domain/user/domain/repository/UserRepository.kt`:
- Line 30: Remove the unused repository method declaration existsByStudentId
from the UserRepository interface; rely on the existing school-scoped method
existsBySchoolAndStudentIdAndIdIsNot instead, so delete the line "fun
existsByStudentId(studentId: String): Boolean" from UserRepository (no other
changes needed unless compilation flags complain about unused imports).

---

Nitpick comments:
In `@src/main/kotlin/com/weeth/domain/club/presentation/ClubAdminController.kt`:
- Around line 108-118: The `@Operation` on acceptMember is marked deprecated but
no replacement is documented; update the controller by adding a Kotlin
`@Deprecated` annotation to the acceptMember function and set the message and
replaceWith parameters to point to the replacement API (or indicate no
replacement), e.g. `@Deprecated`(message = "...", replaceWith =
ReplaceWith("replacementFunctionName(...)")), and also update the Operation
summary or KDoc to mention the alternative endpoint; ensure you reference
acceptMember and the `@Operation` declaration when making the change.

In
`@src/test/kotlin/com/weeth/domain/club/application/usecase/command/AdminClubMemberUseCaseTest.kt`:
- Around line 124-133: Add a failing-case unit test to
AdminClubMemberUseCaseTest that verifies useCase.restore(...) throws when the
target member is not BANNED: create an active member via
ClubMemberTestFixture.createActiveMember(club = club), mock
clubPermissionPolicy.requireAdmin(1L, 10L) to return adminMember and
clubMemberPolicy.getMemberInClub(1L, 20L) to return the active member, then
assert that calling useCase.restore(1L, 10L, 20L) results in
shouldThrow<IllegalStateException>; this exercises ClubMember.restore()'s
precondition and complements the existing success test.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 67dabc03-3788-4586-b775-d162a7210856

📥 Commits

Reviewing files that changed from the base of the PR and between 28f0278 and 46e4ce6.

📒 Files selected for processing (25)
  • src/main/kotlin/com/weeth/domain/club/application/dto/request/ClubMemberRoleUpdateRequest.kt
  • src/main/kotlin/com/weeth/domain/club/application/exception/ClubErrorCode.kt
  • src/main/kotlin/com/weeth/domain/club/application/exception/SelfBanNotAllowedException.kt
  • src/main/kotlin/com/weeth/domain/club/application/exception/SelfRoleChangeNotAllowedException.kt
  • src/main/kotlin/com/weeth/domain/club/application/usecase/command/AdminClubMemberUseCase.kt
  • src/main/kotlin/com/weeth/domain/club/domain/entity/ClubMember.kt
  • src/main/kotlin/com/weeth/domain/club/presentation/ClubAdminController.kt
  • src/main/kotlin/com/weeth/domain/club/presentation/ClubController.kt
  • src/main/kotlin/com/weeth/domain/club/presentation/ClubResponseCode.kt
  • src/main/kotlin/com/weeth/domain/file/application/dto/request/FileSaveRequest.kt
  • src/main/kotlin/com/weeth/domain/penalty/application/dto/request/SavePenaltyRequest.kt
  • src/main/kotlin/com/weeth/domain/penalty/application/dto/response/PenaltyDetailResponse.kt
  • src/main/kotlin/com/weeth/domain/penalty/application/mapper/PenaltyMapper.kt
  • src/main/kotlin/com/weeth/domain/penalty/application/usecase/command/DeletePenaltyUseCase.kt
  • src/main/kotlin/com/weeth/domain/penalty/application/usecase/command/SavePenaltyUseCase.kt
  • src/main/kotlin/com/weeth/domain/penalty/domain/entity/Penalty.kt
  • src/main/kotlin/com/weeth/domain/penalty/domain/enums/PenaltyType.kt
  • src/main/kotlin/com/weeth/domain/schedule/application/usecase/query/GetScheduleQueryService.kt
  • src/main/kotlin/com/weeth/domain/university/presentation/UniversityController.kt
  • src/main/kotlin/com/weeth/domain/user/application/usecase/command/UpdateUserProfileUseCase.kt
  • src/main/kotlin/com/weeth/domain/user/domain/repository/UserRepository.kt
  • src/main/kotlin/com/weeth/domain/user/presentation/UserController.kt
  • src/test/kotlin/com/weeth/domain/club/application/usecase/command/AdminClubMemberUseCaseTest.kt
  • src/test/kotlin/com/weeth/domain/club/application/usecase/command/ManageClubUseCaseTest.kt
  • src/test/kotlin/com/weeth/domain/club/fixture/ClubMemberTestFixture.kt
💤 Files with no reviewable changes (4)
  • src/main/kotlin/com/weeth/domain/penalty/domain/enums/PenaltyType.kt
  • src/main/kotlin/com/weeth/domain/penalty/application/dto/response/PenaltyDetailResponse.kt
  • src/main/kotlin/com/weeth/domain/penalty/application/dto/request/SavePenaltyRequest.kt
  • src/main/kotlin/com/weeth/domain/club/application/dto/request/ClubMemberRoleUpdateRequest.kt
✅ Files skipped from review due to trivial changes (4)
  • src/main/kotlin/com/weeth/domain/university/presentation/UniversityController.kt
  • src/main/kotlin/com/weeth/domain/club/presentation/ClubResponseCode.kt
  • src/main/kotlin/com/weeth/domain/file/application/dto/request/FileSaveRequest.kt
  • src/main/kotlin/com/weeth/domain/schedule/application/usecase/query/GetScheduleQueryService.kt

# Conflicts:
#	src/main/kotlin/com/weeth/domain/club/application/usecase/command/ManageClubUseCase.kt
#	src/main/kotlin/com/weeth/domain/club/presentation/ClubResponseCode.kt
#	src/main/kotlin/com/weeth/domain/user/presentation/UserController.kt
#	src/test/kotlin/com/weeth/domain/club/application/usecase/command/ManageClubUseCaseTest.kt
@hyxklee hyxklee merged commit ac5faec into dev Mar 25, 2026
1 of 2 checks passed
@hyxklee hyxklee deleted the refactor/WTH-220-동아리-프사-배경사진-File-도메인-연동 branch March 25, 2026 12:33
@coderabbitai coderabbitai bot mentioned this pull request Mar 29, 2026
4 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🔨 Refactor 코드 구조 개선 및 리팩토링

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants