Skip to content

[Refactor] AUTH 도메인 리팩토링 - #218

Merged
na311ng merged 4 commits into
developfrom
refactor/auth-208-clean
Feb 11, 2026
Merged

[Refactor] AUTH 도메인 리팩토링#218
na311ng merged 4 commits into
developfrom
refactor/auth-208-clean

Conversation

@na311ng

@na311ng na311ng commented Feb 11, 2026

Copy link
Copy Markdown
Contributor

🔗 관련 이슈

관련된 이슈 번호를 적어주세요.

closes #208

📌 작업 내용

이번 PR에서 작업한 내용을 간략히 설명해주세요.

🧪 테스트 결과

Postman 스크린샷, 테스트 통과 여부 등을 첨부해주세요.

📸 스크린샷 (선택)

필요시 스크린샷을 첨부해주세요.

📎 참고 사항 (선택)

리뷰어에게 전달할 내용이 있다면 작성해주세요.

Summary by CodeRabbit

릴리스 노트

  • Refactor

    • 인증 시스템 내부 로직을 재구성하여 코드 유지보수성을 개선했습니다.
    • 오류 처리 구조를 최적화했습니다.
  • Documentation

    • 인증 관련 코드 문서화를 정리했습니다.

@na311ng na311ng self-assigned this Feb 11, 2026
@na311ng na311ng added the ♻️Refactor 리팩토링 label Feb 11, 2026
@coderabbitai

coderabbitai Bot commented Feb 11, 2026

Copy link
Copy Markdown

Walkthrough

인증 모듈 리팩토링 작업으로, AuthConverter에서 2개 메서드를 제거하고, 여러 DTO와 에러 코드에 한국어 주석을 추가하며, AuthErrorCode enum의 코드를 변경하고 message 필드를 추가했습니다. AuthServiceImpl에는 회원가입 로직을 지원하는 5개의 private 헬퍼 메서드가 추가되었습니다.

Changes

Cohort / File(s) Summary
Converter 정리
src/main/java/com/umc/finly/domain/auth/converter/AuthConverter.java
toCheckEmailResDTO()와 toReissueResDTO() 메서드 제거
Request DTO 주석 추가
src/main/java/com/umc/finly/domain/auth/dto/request/AuthLoginReqDTO.java, AuthSignUpReqDTO.java
로그인 요청 및 회원가입 요청 DTO에 한국어 주석 추가
Response DTO 주석 추가
src/main/java/com/umc/finly/domain/auth/dto/response/AuthReissueResDTO.java, AuthSignUpResDTO.java, CheckEmailResDTO.java, TermDetailResDTO.java, TermResDTO.java
각 응답 DTO에 한국어 주석 추가 및 약관 조회 응답 주석 변경
에러 코드 구조 변경
src/main/java/com/umc/finly/domain/auth/exception/code/AuthErrorCode.java
enum 상수의 코드 형식 변경(예: AUTH403 → AUTH403_1), message 필드 추가, EMAIL_ALREADY_EXISTS 상수 재정의
인증 서비스 헬퍼 메서드 추가
src/main/java/com/umc/finly/domain/auth/service/AuthServiceImpl.java
isValidPassword(), toAgreedMap(), validateRequiredTermsAgreed(), resolvePersonaFromSignup(), saveTermAgreements() 등 5개의 private 헬퍼 메서드 추가

Possibly related PRs

Suggested reviewers

  • ye-zin
  • wonee1
  • yjhss
  • dosp74
  • jangsh7
🚥 Pre-merge checks | ✅ 3 | ❌ 2
❌ Failed checks (1 warning, 1 inconclusive)
Check name Status Explanation Resolution
Description check ⚠️ Warning PR 설명은 기본 템플릿 구조는 유지하고 있으나 '작업 내용', '테스트 결과', '스크린샷', '참고 사항' 항목이 모두 미작성된 상태이며 관련 이슈 번호만 기재되어 있습니다. 작업 내용에 리팩토링의 구체적 변경 사항(메서드 제거, 주석 추가, 에러 코드 형식 통일 등)을 설명하고 테스트 결과를 포함해주세요.
Linked Issues check ❓ Inconclusive 연결된 이슈 #208은 '이슈 요약', '상세 내용', '체크리스트' 항목이 거의 작성되지 않아 구체적인 요구 사항이 명확하지 않으며, 변경 내용이 리팩토링 범위에 속하는지 검증하기 어렵습니다. 이슈 #208의 구체적인 작업 내용과 완료 기준을 정의하여 PR 변경 내용이 이슈 요구사항을 충족하는지 확인할 수 있도록 해주세요.
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed PR 제목은 AUTH 도메인 리팩토링이라는 주요 변경사항을 명확하게 요약하고 있으며, 실제 변경 내용(메서드 제거, 주석 추가, 에러 코드 형식 통일)과 일치합니다.
Out of Scope Changes check ✅ Passed PR의 모든 변경사항(메서드 제거, 주석 추가, 에러 코드 통일)이 AUTH 도메인 리팩토링과 관련된 범위 내에 있으며 불필요한 외부 변경이 관찰되지 않습니다.
Docstring Coverage ✅ Passed Docstring coverage is 88.89% which is sufficient. The required threshold is 80.00%.

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

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch refactor/auth-208-clean

No actionable comments were generated in the recent review. 🎉

🧹 Recent nitpick comments
src/main/java/com/umc/finly/domain/auth/service/AuthServiceImpl.java (3)

254-265: 중복 termId 요청 시 조용히 무시되는 동작에 주의하세요.

(a, b) -> a merge 함수로 인해 클라이언트가 동일한 termId를 서로 다른 agreed 값으로 중복 전송할 경우, 첫 번째 값만 사용되고 나머지는 무시됩니다. 의도된 동작이라면 괜찮지만, 데이터 오류를 감추는 원인이 될 수 있습니다.

중복 시 명시적으로 예외를 던지는 방식을 고려해 보세요:

♻️ 제안
         return agreements.stream().collect(Collectors.toMap(
                 AuthSignUpReqDTO.TermAgreementReq::getTermId,
-                a -> Boolean.TRUE.equals(a.getAgreed()),
-                (a, b) -> a
+                a -> Boolean.TRUE.equals(a.getAgreed()),
+                (a, b) -> { throw new CustomException(AuthErrorCode.INVALID_TERM_REQUEST); }
         ));

267-281: validateRequiredTermsAgreed에서 필수 약관 타입별 개별 조회 발생.

현재 REQUIRED_TERMS 크기가 2개이므로 성능 영향은 미미하지만, 필수 약관 타입이 늘어날 경우 N+1 패턴이 됩니다. termRepository.findAllByTermTypeIn(REQUIRED_TERMS) 같은 배치 조회로 변경하면 확장성이 좋아집니다.


283-294: resolvePersonaFromSignup에서 불필요한 DTO 복사를 제거하세요.

PersonaAnswerReqDTOquestionIdoptionId 두 개 필드만 가지고 있으므로, 동일한 필드로 새로운 인스턴스를 생성하는 것은 불필요합니다. 원본 리스트를 그대로 personaScoringService.resolvePersona(answers)에 전달하면 됩니다.

♻️ 제안
     private Persona resolvePersonaFromSignup(List<PersonaAnswerReqDTO> answers) {
         if (answers == null || answers.isEmpty()) {
             throw new CustomException(AuthErrorCode.INVALID_PERSONA_ANSWERS);
         }
-
-        List<PersonaAnswerReqDTO> convertedAnswers = answers.stream()
-                .map(a -> new PersonaAnswerReqDTO(a.getQuestionId(), a.getOptionId()))
-                .toList();
-
-        return personaScoringService.resolvePersona(convertedAnswers);
+        return personaScoringService.resolvePersona(answers);
     }

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.

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

고생하셨습니다!

@na311ng
na311ng merged commit 7bbbf10 into develop Feb 11, 2026
2 checks passed
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.

[Refactor] auth 리팩토링

2 participants