Skip to content

Conversation

@Roy-wonji
Copy link
Collaborator


✨ μž‘μ—… λ‚΄μš©

  • ν”„λ‘œν•„ νŽΈμ§‘ API JSON ꡬ쑰 역할별 λΆ„κΈ° 둜직 κ΅¬ν˜„ (Manager/Member ꡬ뢄)
  • ProfileDTO λ””μ½”λ”© μ—λŸ¬ ν•΄κ²° 및 μ„œλ²„ 응닡 νŒŒμ‹± μ•ˆμ •μ„± κ°œμ„ 
  • μ—­ν•  기반 API μš”μ²­ μ΅œμ ν™” (Member μ‚¬μš©μž λΆˆν•„μš” ν•„λ“œ 제거)

πŸ“Έ Showcase

λ³€κ²½ μ „ λ³€κ²½ ν›„
Manager/Member λ™μΌν•œ JSON ꡬ쑰{"managerRoles":null, ...} Manager: {"managerRoles":null, ...}Member: {...} (ν•„λ“œ 제거)
ProfileDTO λ””μ½”λ”© μ—λŸ¬ λ°œμƒβŒ DecodingError μ•ˆμ „ν•œ μ˜΅μ…”λ„ μ²˜λ¦¬βœ… 정상 λ””μ½”λ”©

πŸ“Œ 역할별 μ΅œμ ν™”λœ API ꡬ쑰 및 μ•ˆμ •μ μΈ μ„œλ²„ 응닡 νŒŒμ‹± κ΅¬ν˜„


πŸ“ μ°Έκ³  사항

  • EditProfile API의 JSON ꡬ쑰가 μ‚¬μš©μž 역할에 따라 λ‹€λ₯΄κ²Œ μ „μ†‘λ©λ‹ˆλ‹€
  • ProfileDTO의 managerRoles ν•„λ“œκ°€ μ˜΅μ…”λ„λ‘œ λ³€κ²½λ˜μ–΄ μ„œλ²„ 응닡 ꡬ쑰 변화에 λŒ€μ‘ν•©λ‹ˆλ‹€
  • κΈ°μ‘΄ Manager μ‚¬μš©μžλŠ” λ™μΌν•˜κ²Œ λ™μž‘ν•˜λ©°, Member μ‚¬μš©μžμ˜ API νš¨μœ¨μ„±μ΄ κ°œμ„ λ©λ‹ˆλ‹€

Motivation πŸ₯³ (μ½”λ“œλ₯Ό μΆ”κ°€/λ³€κ²½ν•˜κ²Œ 된 이유)

  • API νš¨μœ¨μ„± κ°œμ„ : Member μ‚¬μš©μžμ—κ²Œ λΆˆν•„μš”ν•œ managerRoles ν•„λ“œ 제거둜 νŽ˜μ΄λ‘œλ“œ μ΅œμ ν™” ν•„μš”
  • μ•ˆμ •μ„± κ°•ν™”: μ„œλ²„ 응닡 ꡬ쑰 변화에도 μ•ˆμ •μ μΈ 디코딩을 μœ„ν•œ μ˜΅μ…”λ„ 처리 ν•„μš”
  • μ—­ν•  기반 ꡬ쑰: Manager와 Member의 λͺ…ν™•ν•œ ꡬ뢄을 ν†΅ν•œ 더 λ‚˜μ€ API 섀계 ν•„μš”

Key Changes πŸ”₯ (μ£Όμš” κ΅¬ν˜„/λ³€κ²½ 사항)

πŸ”„ ν”„λ‘œν•„ νŽΈμ§‘ API ꡬ쑰 κ°œμ„ 

  • EditProfileRequestDTO: 역할별 쑰건뢀 managerRoles ν•„λ“œ 처리 κ΅¬ν˜„
    // Manager: managerRoles 포함 (null κ°€λŠ₯)
    // Member: managerRoles ν•„λ“œ μ™„μ „ 제거

πŸ›‘οΈ ProfileDTO μ•ˆμ •μ„± κ°•ν™”

  • ProfileDTO: managerRolesλ₯Ό μ˜΅μ…”λ„ νƒ€μž…μœΌλ‘œ λ³€κ²½ ([String] β†’ [String]?)
  • ProfileDTO 맀퍼: μ˜΅μ…”λ„ 체이닝을 ν†΅ν•œ μ•ˆμ „ν•œ λ³€ν™˜ 둜직 적용

πŸ“Š ν…ŒμŠ€νŠΈ 검증 μ™„λ£Œ

  • Manager (빈 λ°°μ—΄): βœ… {"managerRoles": null} 정상 전솑
  • Member (nil): βœ… managerRoles ν•„λ“œ 제거됨
  • Manager (μ‹€μ œ μ—­ν• ): βœ… {"managerRoles": ["TEAM_MANAGING"]} λ°°μ—΄ 포함
  • μ„œλ²„ 응닡 λ””μ½”λ”©: βœ… DecodingError ν•΄κ²° 확인

To Reviewers πŸ™ (λ¦¬λ·°μ–΄μ—κ²Œ μ „λ‹¬ν•˜κ³  싢은 말)

  • 핡심 변경사항: EditProfileRequestDTO.swift:38-60의 encode λ©”μ„œλ“œμ™€ ProfileDTO.swift:18의 managerRoles νƒ€μž… 변경이 μ£Όμš” ν¬μΈνŠΈμž…λ‹ˆλ‹€
  • API λ™μž‘ 검증: Manager μ‚¬μš©μžλŠ” κΈ°μ‘΄κ³Ό λ™μΌν•˜κ²Œ λ™μž‘ν•˜λ©°, Member μ‚¬μš©μžλ§Œ μ΅œμ ν™”λœ ꡬ쑰둜 λ³€κ²½λ©λ‹ˆλ‹€
  • μ•ˆμ •μ„± 확인: ProfileDTO λ””μ½”λ”© μ—λŸ¬κ°€ μ™„μ „νžˆ ν•΄κ²°λ˜μ—ˆλŠ”μ§€ μ‹€μ œ API 호좜둜 ν…ŒμŠ€νŠΈ λΆ€νƒλ“œλ¦½λ‹ˆλ‹€

Reference πŸ”—


@Roy-wonji Roy-wonji self-assigned this Jan 6, 2026
…_iOS_2024 into refator/profile

# Conflicts:
#	Projects/App/Sources/Di/DiRegister.swift
#	Projects/Data/API/Sources/API/Auth/AuthAPI.swift
#	Projects/Data/Repository/Sources/Auth/RefreshToken/AuthSessionManager.swift
#	Projects/Data/Repository/Sources/Auth/Repository/AuthRepositoryImpl.swift
#	Projects/Data/Repository/Sources/SignUp/SignUpRepositoryImpl.swift
#	Projects/Data/Service/Sources/Auth/AuthService.swift
#	Projects/Data/Service/Sources/SignUp/SignUpUserRequestDTO.swift
#	Projects/Domain/DomainInterface/Sources/Auth/AuthInterface.swift
#	Projects/Domain/DomainInterface/Sources/Auth/DefaultAuthRepositoryImpl.swift
#	Projects/Domain/UseCase/Sources/Auth/AuthUseCaseImpl.swift
#	Projects/Domain/UseCase/Sources/Manager/KeychainManager.swift
#	Projects/Domain/UseCase/Sources/OAuth/UnifiedOAuthUseCase.swift
#	Projects/Domain/UseCase/Sources/SignUp/ SignUpUseCaseImpl.swift
#	Projects/Network/Foundations/Sources/APIHeader/APIHeader.swift
#	Projects/Presentation/Auth/Project.swift
#	Projects/Presentation/Auth/Sources/AuthCoordinator/Reducer/AuthCoordinator.swift
#	Projects/Presentation/Auth/Sources/SignUpSelectManging/Reducer/SignUpSelectManging.swift
#	Projects/Presentation/Auth/Sources/SignUpSelectTeam/Reducer/SignUpSelectTeam.swift
#	Projects/Presentation/Member/Project.swift
#	Projects/Presentation/Member/Sources/MemberMain/Reducer/MemberMain.swift
#	Projects/Presentation/OnBoarding/Project.swift
#	Projects/Presentation/OnBoarding/Sources/ SelectPart/View/SelectPartView.swift
#	Projects/Presentation/OnBoarding/Sources/InviteCode/Reducer/InviteCodeReducer.swift
#	Projects/Presentation/OnBoarding/Sources/InviteCode/View/OnBoardingInviteCodeView.swift
#	Projects/Presentation/OnBoarding/Sources/SelectManaging/View/SelectManagingView.swift
#	Projects/Presentation/OnBoarding/Sources/SelectTeam/View/SelectTeamView.swift
#	Projects/Presentation/Profile/Project.swift
#	Projects/Presentation/Profile/Sources/Main/Reducer/ProfileReducer.swift
#	Projects/Presentation/Profile/Sources/Main/View/ProfileView.swift
#	Projects/Presentation/Splash/Sources/Reducer/Splash.swift
@honghoker honghoker self-requested a review January 8, 2026 15:52
Copy link
Member

@honghoker honghoker left a comment

Choose a reason for hiding this comment

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

크 정말 고생 λ§Žμ•˜μ–΄~! μž‘μ—…λŸ‰ λ―Έμ³€λ‹€ λ―Έμ³€μ–΄ γ…‹γ…‹γ…‹γ…‹

@Roy-wonji Roy-wonji merged commit 479007b into develop Jan 9, 2026
@Roy-wonji Roy-wonji deleted the refator/profile branch January 9, 2026 09:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants