[FIX] 주문 요청 시 AgencyId 파라미터 추가#32
Conversation
|
Warning Rate limit exceeded@Sangyoon98 has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 18 minutes and 38 seconds before requesting another review. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. 📒 Files selected for processing (1)
Walkthrough프로젝트 메타데이터(버전) 업데이트, 인증/사용자 모델에서 Changes
Sequence Diagram(s)sequenceDiagram
participant UI as UI (Login/Signup)
participant VM as ViewModel
participant AuthUC as Auth UseCase / Repo
participant API as Auth API (원격)
participant Store as AuthPreferences
rect rgba(180,220,255,0.25)
UI->>VM: 로그인/회원가입 입력 (role)
VM->>AuthUC: execute(..., role: String)
AuthUC->>AuthUC: build RequestDTO(role: role)
AuthUC->>API: call login/signup with role
API-->>AuthUC: response DTO
AuthUC->>Store: saveUser(user with role:String)
AuthUC-->>VM: User
VM-->>UI: 상태 업데이트
end
sequenceDiagram
participant VM as Any ViewModel
participant UserUC as User UseCase
participant Repo as UserRepositoryImpl
participant API as User API
VM->>UserUC: getProfile(role: String)
UserUC->>Repo: getProfile(role: String)
Repo->>API: GET /user/profile?role=<role>
API-->>Repo: GetProfileResponseDTO (workspace removed)
Repo->>VM: User (role:String, no workspace)
(변경 요약: 모든 관련 호출은 query/body에 Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes
Possibly related PRs
Suggested labels
Suggested reviewers
Poem
Pre-merge checks and finishing touches❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
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. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
SampoomManagement/Features/User/Data/Mappers/UserMappers.swift (1)
29-46: 빈 문자열 할당을 재검토해 주세요.Line 35에서
role이 빈 문자열("")로 할당되고 있습니다. 프로필 업데이트 응답에서 role 정보가 반환되지 않는 경우라도, 빈 문자열 대신 기존 사용자의 role을 유지하거나 DTO에서 실제 반환되는 값을 매핑하는 것이 더 적절할 수 있습니다.DTO 응답 구조를 확인하고, role 필드가 실제로 반환되지 않는 경우 기존 사용자 정보를 병합하는 로직을 고려해 주세요.
🧹 Nitpick comments (5)
SampoomManagement/Features/User/UI/EmployeeListViewModel.swift (1)
90-95: 하드코딩된 role 값을 상수로 추출 권장
role: "AGENCY"값이 하드코딩되어 있습니다. 이 값이 코드베이스 전반에서 사용되는 경우 중앙 상수 또는 열거형으로 정의하는 것이 유지보수성을 향상시킵니다.예시:
// Constants.swift 또는 적절한 위치에 추가 enum UserRole { static let agency = "AGENCY" static let vendor = "VENDOR" // 기타 역할들... } // 사용 let result = try await getEmployeeUseCase.execute( role: UserRole.agency, organizationId: user.agencyId, page: page, size: 20 )SampoomManagement/Features/Auth/UI/SignUpViewModel.swift (1)
103-103: 하드코딩된 문자열을 상수로 관리하는 것을 권장합니다.
"AGENCY"문자열이 하드코딩되어 있습니다. 동일한 값이 여러 곳에서 사용될 경우 상수나 열거형으로 관리하면 유지보수성이 향상됩니다.예시:
// Constants.swift enum UserRole { static let agency = "AGENCY" static let admin = "ADMIN" } // 사용 _ = try await getProfileUseCase.execute(role: UserRole.agency)SampoomManagement/Features/User/UI/EditEmployeeViewModel.swift (1)
72-72: 파라미터 변경 확인 완료 및 하드코딩된 문자열 개선 권장.
workspace파라미터가role로 올바르게 변경되었습니다. 다만,"AGENCY"문자열이 하드코딩되어 있어SignUpViewModel과 동일한 개선이 필요합니다.여러 파일에서 동일한
"AGENCY"문자열이 반복 사용되고 있으므로, 공통 상수로 정의하여 관리하는 것을 권장합니다.// Constants/UserRole.swift enum UserRole { static let agency = "AGENCY" static let admin = "ADMIN" } // 사용 let result = try await editEmployeeUseCase.execute(employee: updatedEmployee, role: UserRole.agency)SampoomManagement/Features/User/Data/Repository/UserRepositoryImpl.swift (1)
105-131: editEmployee 메서드가 올바르게 업데이트되었으나, 타입 안정성 개선을 고려하세요.role 파라미터 전달과 직원 정보 병합 로직이 정상적으로 작동합니다.
Line 118의 방어 로직(
updatedEmployee.role.isEmpty ? employee.role : updatedEmployee.role)은 API 응답에서 role이 비어있을 수 있음을 시사합니다. 다음 개선사항을 고려해주세요:
- 타입 안정성 강화: role을 String 대신 enum으로 정의하여 잘못된 값 전달을 방지
- API 응답 검증: role이 비어있는 경우에 대한 명시적 에러 처리 또는 로깅
예시:
enum UserRole: String, Codable { case agency = "AGENCY" case admin = "ADMIN" // 기타 역할 추가 }SampoomManagement/Features/User/Domain/Repository/UserRepository.swift (1)
12-17: 프로토콜 메서드 시그니처가 일관되게 업데이트되었습니다.모든 메서드에서
workspace파라미터가role파라미터로 올바르게 변경되었으며, 구현체(UserRepositoryImpl)와 일치합니다.향후 유지보수성과 타입 안정성을 위해 다음 개선사항을 고려하세요:
- Enum 사용: role을 String 대신 강타입 enum으로 정의
- 기본값 제공: getProfile 메서드에 기본 role 값 제공을 고려
예시:
enum UserRole: String { case agency = "AGENCY" case admin = "ADMIN" } protocol UserRepository { func getProfile(role: UserRole = .agency) async throws -> User func getEmployeeList(role: UserRole, organizationId: Int, page: Int, size: Int) async throws -> (employees: [Employee], hasNext: Bool) // ... }이렇게 하면 컴파일 타임에 잘못된 role 값 전달을 방지할 수 있습니다.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (32)
SampoomManagement/Core/Network/TokenRefreshService.swift(0 hunks)SampoomManagement/Features/Auth/Data/Local/Preferences/AuthPreferences.swift(2 hunks)SampoomManagement/Features/Auth/Data/Mappers/AuthMappers.swift(1 hunks)SampoomManagement/Features/Auth/Data/Remote/API/AuthAPI.swift(3 hunks)SampoomManagement/Features/Auth/Data/Remote/DTO/LoginRequestDTO.swift(1 hunks)SampoomManagement/Features/Auth/Data/Remote/DTO/SignupRequestDTO.swift(1 hunks)SampoomManagement/Features/Auth/Data/Repository/AuthRepositoryImpl.swift(2 hunks)SampoomManagement/Features/Auth/Domain/Repository/AuthRepository.swift(1 hunks)SampoomManagement/Features/Auth/Domain/UseCase/SignUpUseCase.swift(1 hunks)SampoomManagement/Features/Auth/UI/LoginViewModel.swift(1 hunks)SampoomManagement/Features/Auth/UI/SignUpUiState.swift(5 hunks)SampoomManagement/Features/Auth/UI/SignUpViewModel.swift(2 hunks)SampoomManagement/Features/Dashboard/UI/DashboardViewModel.swift(1 hunks)SampoomManagement/Features/User/Data/Mappers/UserMappers.swift(4 hunks)SampoomManagement/Features/User/Data/Remote/API/UserAPI.swift(2 hunks)SampoomManagement/Features/User/Data/Remote/DTO/EditEmployeeResponseDTO.swift(1 hunks)SampoomManagement/Features/User/Data/Remote/DTO/EmployeeDTO.swift(0 hunks)SampoomManagement/Features/User/Data/Remote/DTO/GetProfileResponseDTO.swift(0 hunks)SampoomManagement/Features/User/Data/Remote/DTO/UpdateEmployeeStatusResponseDTO.swift(1 hunks)SampoomManagement/Features/User/Data/Repository/UserRepositoryImpl.swift(6 hunks)SampoomManagement/Features/User/Domain/Models/Employee.swift(0 hunks)SampoomManagement/Features/User/Domain/Models/User.swift(1 hunks)SampoomManagement/Features/User/Domain/Repository/UserRepository.swift(1 hunks)SampoomManagement/Features/User/Domain/UseCase/EditEmployeeUseCase.swift(1 hunks)SampoomManagement/Features/User/Domain/UseCase/GetEmployeeCountUseCase.swift(1 hunks)SampoomManagement/Features/User/Domain/UseCase/GetEmployeeUseCase.swift(1 hunks)SampoomManagement/Features/User/Domain/UseCase/GetProfileUseCase.swift(1 hunks)SampoomManagement/Features/User/Domain/UseCase/UpdateEmployeeStatusUseCase.swift(1 hunks)SampoomManagement/Features/User/UI/EditEmployeeViewModel.swift(1 hunks)SampoomManagement/Features/User/UI/EmployeeListViewModel.swift(1 hunks)SampoomManagement/Features/User/UI/UpdateEmployeeStatusViewModel.swift(1 hunks)SampoomManagement/Features/User/UI/UpdateProfileViewModel.swift(0 hunks)
💤 Files with no reviewable changes (5)
- SampoomManagement/Features/User/Data/Remote/DTO/EmployeeDTO.swift
- SampoomManagement/Core/Network/TokenRefreshService.swift
- SampoomManagement/Features/User/Data/Remote/DTO/GetProfileResponseDTO.swift
- SampoomManagement/Features/User/Domain/Models/Employee.swift
- SampoomManagement/Features/User/UI/UpdateProfileViewModel.swift
🧰 Additional context used
🧬 Code graph analysis (15)
SampoomManagement/Features/User/Domain/UseCase/UpdateEmployeeStatusUseCase.swift (8)
SampoomManagement/Features/Auth/Domain/UseCase/SignUpUseCase.swift (1)
execute(17-33)SampoomManagement/Features/User/Domain/UseCase/EditEmployeeUseCase.swift (1)
execute(17-19)SampoomManagement/Features/User/Domain/UseCase/GetEmployeeCountUseCase.swift (1)
execute(17-19)SampoomManagement/Features/User/Domain/UseCase/GetEmployeeUseCase.swift (1)
execute(17-19)SampoomManagement/Features/User/Domain/UseCase/GetProfileUseCase.swift (1)
execute(17-19)SampoomManagement/Features/User/Data/Remote/API/UserAPI.swift (1)
updateEmployeeStatus(71-84)SampoomManagement/Features/User/Data/Repository/UserRepositoryImpl.swift (1)
updateEmployeeStatus(133-146)SampoomManagement/Features/User/UI/UpdateEmployeeStatusViewModel.swift (1)
updateEmployeeStatus(53-96)
SampoomManagement/Features/Auth/UI/LoginViewModel.swift (1)
SampoomManagement/Features/User/Domain/UseCase/GetProfileUseCase.swift (1)
execute(17-19)
SampoomManagement/Features/User/Data/Remote/API/UserAPI.swift (3)
SampoomManagement/Features/User/Data/Repository/UserRepositoryImpl.swift (4)
getProfile(23-58)getEmployeeList(95-103)editEmployee(105-131)updateEmployeeStatus(133-146)SampoomManagement/Features/User/UI/EditEmployeeViewModel.swift (1)
editEmployee(46-89)SampoomManagement/Features/User/UI/UpdateEmployeeStatusViewModel.swift (1)
updateEmployeeStatus(53-96)
SampoomManagement/Features/User/Domain/UseCase/GetProfileUseCase.swift (2)
SampoomManagement/Features/User/Data/Remote/API/UserAPI.swift (1)
getProfile(19-26)SampoomManagement/Features/User/Data/Repository/UserRepositoryImpl.swift (1)
getProfile(23-58)
SampoomManagement/Features/User/Domain/UseCase/GetEmployeeCountUseCase.swift (6)
SampoomManagement/Features/Auth/Domain/UseCase/SignUpUseCase.swift (1)
execute(17-33)SampoomManagement/Features/User/Domain/UseCase/EditEmployeeUseCase.swift (1)
execute(17-19)SampoomManagement/Features/User/Domain/UseCase/GetEmployeeUseCase.swift (1)
execute(17-19)SampoomManagement/Features/User/Domain/UseCase/GetProfileUseCase.swift (1)
execute(17-19)SampoomManagement/Features/User/Domain/UseCase/UpdateEmployeeStatusUseCase.swift (1)
execute(17-19)SampoomManagement/Features/User/Data/Repository/UserRepositoryImpl.swift (1)
getEmployeeCount(148-154)
SampoomManagement/Features/User/Domain/UseCase/GetEmployeeUseCase.swift (4)
SampoomManagement/Features/User/Domain/UseCase/GetEmployeeCountUseCase.swift (1)
execute(17-19)SampoomManagement/Features/User/Domain/UseCase/GetProfileUseCase.swift (1)
execute(17-19)SampoomManagement/Features/User/Data/Remote/API/UserAPI.swift (1)
getEmployeeList(45-52)SampoomManagement/Features/User/Data/Repository/UserRepositoryImpl.swift (1)
getEmployeeList(95-103)
SampoomManagement/Features/Auth/UI/SignUpViewModel.swift (2)
SampoomManagement/Features/Auth/Domain/UseCase/SignUpUseCase.swift (1)
execute(17-33)SampoomManagement/Features/User/Domain/UseCase/GetProfileUseCase.swift (1)
execute(17-19)
SampoomManagement/Features/User/UI/UpdateEmployeeStatusViewModel.swift (2)
SampoomManagement/Features/User/Domain/UseCase/EditEmployeeUseCase.swift (1)
execute(17-19)SampoomManagement/Features/User/Domain/UseCase/UpdateEmployeeStatusUseCase.swift (1)
execute(17-19)
SampoomManagement/Features/User/Domain/Repository/UserRepository.swift (4)
SampoomManagement/Features/User/Data/Remote/API/UserAPI.swift (5)
getProfile(19-26)updateProfile(29-42)getEmployeeList(45-52)editEmployee(55-68)updateEmployeeStatus(71-84)SampoomManagement/Features/User/Data/Repository/UserRepositoryImpl.swift (6)
getProfile(23-58)updateProfile(60-93)getEmployeeList(95-103)editEmployee(105-131)updateEmployeeStatus(133-146)getEmployeeCount(148-154)SampoomManagement/Features/User/UI/EditEmployeeViewModel.swift (1)
editEmployee(46-89)SampoomManagement/Features/User/UI/UpdateEmployeeStatusViewModel.swift (1)
updateEmployeeStatus(53-96)
SampoomManagement/Features/User/UI/EditEmployeeViewModel.swift (1)
SampoomManagement/Features/User/Domain/UseCase/EditEmployeeUseCase.swift (1)
execute(17-19)
SampoomManagement/Features/User/Domain/UseCase/EditEmployeeUseCase.swift (3)
SampoomManagement/Features/User/Data/Remote/API/UserAPI.swift (1)
editEmployee(55-68)SampoomManagement/Features/User/Data/Repository/UserRepositoryImpl.swift (1)
editEmployee(105-131)SampoomManagement/Features/User/UI/EditEmployeeViewModel.swift (1)
editEmployee(46-89)
SampoomManagement/Features/Auth/Data/Local/Preferences/AuthPreferences.swift (1)
SampoomManagement/Features/Auth/Data/Local/Preferences/KeychainManager.swift (1)
save(24-43)
SampoomManagement/Features/Dashboard/UI/DashboardViewModel.swift (2)
SampoomManagement/Features/User/Domain/UseCase/GetEmployeeCountUseCase.swift (1)
execute(17-19)SampoomManagement/Features/User/Domain/UseCase/GetStoredUserUseCase.swift (1)
execute(17-19)
SampoomManagement/Features/Auth/Domain/UseCase/SignUpUseCase.swift (1)
SampoomManagement/Features/Auth/Data/Repository/AuthRepositoryImpl.swift (1)
signUp(20-50)
SampoomManagement/Features/User/Data/Repository/UserRepositoryImpl.swift (4)
SampoomManagement/Features/User/Data/Remote/API/UserAPI.swift (4)
getProfile(19-26)getEmployeeList(45-52)editEmployee(55-68)updateEmployeeStatus(71-84)SampoomManagement/Features/Auth/Data/Repository/AuthRepositoryImpl.swift (1)
retry(152-173)SampoomManagement/Features/User/UI/EditEmployeeViewModel.swift (1)
editEmployee(46-89)SampoomManagement/Features/User/UI/UpdateEmployeeStatusViewModel.swift (1)
updateEmployeeStatus(53-96)
🔇 Additional comments (37)
SampoomManagement/Features/User/UI/UpdateEmployeeStatusViewModel.swift (1)
62-76: 변경 사항이 올바릅니다.
Employee객체 생성에서workspace필드가 제거되고 기존 필드들이 올바르게 유지되고 있습니다. 리팩토링 방향과 일치합니다.SampoomManagement/Features/Auth/UI/SignUpUiState.swift (1)
12-12: 일관된 리팩토링 확인
workspace에서role로의 전환이 프로퍼티, 이니셜라이저,copy()메서드 전반에 걸쳐 일관되게 적용되었습니다. 기본값"AGENCY"는 다른 파일들과 일관성을 유지하고 있으나, 향후 중앙 상수로 추출하는 것을 고려해 주세요.Also applies to: 38-38, 58-58, 95-95, 116-116
SampoomManagement/Features/Auth/Data/Repository/AuthRepositoryImpl.swift (2)
20-35: signUp 메서드 시그니처 업데이트 확인
workspace파라미터가role로 정확하게 변경되었으며, API 호출에도 올바르게 전달되고 있습니다.
98-111: 토큰 갱신 시 사용자 정보 보존 확인
refreshToken메서드에서User생성 시workspace필드가 제거되고role필드를 올바르게 사용하고 있습니다. 기존 사용자 정보가 적절하게 보존됩니다.SampoomManagement/Features/Auth/UI/LoginViewModel.swift (1)
52-54: GetProfileUseCase 호출 업데이트 확인
workspace에서role로의 파라미터 라벨 변경이GetProfileUseCase.execute(role:)시그니처와 올바르게 일치합니다. 하드코딩된"AGENCY"값은 프로젝트 전반의 패턴과 일관성을 유지하고 있습니다.SampoomManagement/Features/Dashboard/UI/DashboardViewModel.swift (1)
132-137: role 기반 로직 전환 및 폴백 처리 확인
workspace기반에서role기반으로의 전환이 올바르게 구현되었습니다. 빈 role 값에 대한 폴백 로직(storedUser.role.isEmpty ? "AGENCY" : storedUser.role)이 적절히 구현되어 있어AuthMappers에서 발생할 수 있는 빈 role 문제를 완화합니다.SampoomManagement/Features/User/Data/Remote/DTO/EditEmployeeResponseDTO.swift (1)
10-15: DTO 필드 리네이밍 일관성 확인
workspace에서role로의 필드 변경이 프로젝트 전반의 DTO 리팩토링과 일관되게 적용되었습니다. 백엔드 API 응답이 동일하게role필드를 반환하는지 확인해 주세요.SampoomManagement/Features/Auth/Data/Remote/DTO/LoginRequestDTO.swift (1)
10-14: 클라이언트 코드 일관성 확인 완료 - 백엔드 계약 검증 필요스크립트 결과에 따르면 클라이언트 코드는 일관성 있게 업데이트되었습니다.
AuthAPI.swift라인 20에서LoginRequestDTO(role: "AGENCY", email: email, password: password)로 올바르게 사용 중이며, 로그인 흐름에서workspace필드에 대한 상충하는 참조는 발견되지 않았습니다.다만 백엔드 API가
role필드를 예상하도록 업데이트되었는지는 코드베이스에서 직접 확인할 수 없습니다. 백엔드 API 스키마 또는 문서를 통해 다음을 확인해 주세요:
- 로그인 엔드포인트가
role필드를 기대하는지workspace필드 지원이 중단되었는지SampoomManagement/Features/Auth/Data/Mappers/AuthMappers.swift (1)
11-26: 검증 완료: 빈 role 처리가 적절히 구현되어 있음
LoginResponseDTO는 설계상 role 정보를 포함하지 않으며, 로그인 직후getProfileUseCase.execute(role: "AGENCY")를 통해 프로필을 조회합니다. 프로필 조회가 실패하면 사용자에게 에러 메시지가 표시되고, 성공 시 role이 업데이트됩니다. 또한DashboardViewModel의role.isEmpty ? "AGENCY" : storedUser.role패턴과UserMappers,UserRepositoryImpl의 폴백 처리로 중간 상태에서 빈 role로 인한 문제가 방지됩니다.SampoomManagement/Features/User/Domain/UseCase/GetProfileUseCase.swift (1)
17-18: 변경 사항 확인 완료.파라미터명이
workspace에서role로 일관되게 변경되었으며, 리포지토리 호출도 올바르게 업데이트되었습니다.SampoomManagement/Features/Auth/Data/Remote/DTO/SignupRequestDTO.swift (1)
12-12: DTO 필드 변경 확인 완료.
workspace필드가role로 변경되어 API 계약과 일치합니다.SampoomManagement/Features/User/Data/Remote/DTO/UpdateEmployeeStatusResponseDTO.swift (1)
13-13: 응답 DTO 변경 확인 완료.
workspace필드가role로 변경되어 서버 응답 스키마와 일치합니다.SampoomManagement/Features/Auth/UI/SignUpViewModel.swift (1)
85-96: 변수 및 파라미터 변경 확인 완료.
workspace변수와 파라미터가role로 일관되게 변경되었습니다.SampoomManagement/Features/User/Domain/UseCase/EditEmployeeUseCase.swift (1)
17-18: 유스케이스 변경 확인 완료.파라미터가
workspace에서role로 변경되었으며, 리포지토리 호출이 올바르게 업데이트되었습니다.SampoomManagement/Features/Auth/Domain/Repository/AuthRepository.swift (1)
13-13: 프로토콜 시그니처 변경 확인 완료.
signUp메서드의 파라미터가workspace에서role로 변경되었습니다.SampoomManagement/Features/User/Domain/Models/User.swift (1)
14-14: 서버 API와의 호환성을 고려한 현재 구현 방식 확인 필요검증 결과,
UserRole열거형은 현재 코드베이스에 존재하지 않으며,role은 처음부터String타입으로 설계되었습니다. 서버 API가 쿼리 파라미터로 문자열 기반 역할을 요구하기 때문에 이러한 설계가 필요한 상태입니다.다만 타입 안전성 개선을 위해 다음을 고려해주세요:
"AGENCY"등 허용 가능한 role 값들을 상수로 정의하거나enum RoleValue같은 구조로 관리- 현재 DashboardViewModel에서 사용 중인 fallback 로직처럼 역할 값 검증을 시스템 전역에서 일관되게 처리
- 서버 API 문서에 허용 가능한 역할 값 범위를 명시
SampoomManagement/Features/Auth/Domain/UseCase/SignUpUseCase.swift (1)
17-33: 파라미터 이름 변경이 올바르게 적용되었습니다.
workspace에서role로의 파라미터 이름 변경이 일관되게 적용되었으며, 리포지토리 호출도 올바르게 업데이트되었습니다.SampoomManagement/Features/User/Domain/UseCase/GetEmployeeCountUseCase.swift (1)
17-19: 파라미터 이름 변경이 올바르게 적용되었습니다.
workspace에서role로의 변경이 일관되게 적용되었습니다.SampoomManagement/Features/Auth/Data/Remote/API/AuthAPI.swift (2)
19-34: 하드코딩된 role 값을 확인해 주세요.로그인 시
role이"AGENCY"로 하드코딩되어 있습니다. 만약 향후 다른 역할(예: ADMIN, USER 등)의 사용자가 로그인해야 하는 경우 이 구현이 제한적일 수 있습니다.의도적으로 AGENCY 역할만 로그인하도록 제한하는 것인지 확인해 주시고, 향후 확장성을 고려하여 role을 파라미터로 받도록 변경하는 것을 검토해 주세요.
37-69: 회원가입 API 변경이 올바르게 적용되었습니다.
workspace에서role로의 파라미터 변경이 일관되게 적용되었으며, DTO 구성과 API 요청 파라미터가 올바르게 업데이트되었습니다.SampoomManagement/Features/User/Data/Mappers/UserMappers.swift (4)
10-27: 프로필 조회 매핑이 올바르게 적용되었습니다.
workspace필드가 제거되고role이 문자열로 직접 할당되는 것으로 올바르게 변경되었습니다.
48-66: 직원 수정 매핑이 올바르게 적용되었습니다.
workspace필드가 제거되고role이 응답 DTO에서 직접 매핑되도록 올바르게 변경되었습니다.
68-86: 직원 DTO 매핑이 올바르게 적용되었습니다.
workspace필드가 제거되고role필드가 유지되었습니다.
88-106: 상태 업데이트 매핑의 폴백 로직이 적절합니다.Line 94에서 응답에 role이 비어있을 경우 기존 직원의 role을 유지하는 폴백 로직이 잘 구현되어 있습니다.
SampoomManagement/Features/User/Domain/UseCase/GetEmployeeUseCase.swift (1)
17-19: 파라미터 이름 변경이 올바르게 적용되었습니다.
workspace에서role로의 변경이 일관되게 적용되었습니다.SampoomManagement/Features/User/Domain/UseCase/UpdateEmployeeStatusUseCase.swift (1)
17-19: 파라미터 이름 변경이 올바르게 적용되었습니다.
workspace에서role로의 변경이 일관되게 적용되었습니다.SampoomManagement/Features/Auth/Data/Local/Preferences/AuthPreferences.swift (3)
28-58: 사용자 저장 로직이 올바르게 업데이트되었습니다.
workspace관련 저장 로직이 제거되고role이 문자열로 직접 저장되도록 올바르게 변경되었습니다. 롤백 로직도 일관되게 업데이트되었습니다.
72-111: 사용자 조회 로직이 올바르게 업데이트되었습니다.
workspace필드 조회가 제거되고role을 문자열로 직접 사용하도록 변경되었습니다. 마이그레이션 대응을 위한 안전한 기본값 처리도 적절합니다.
140-158: 키체인 정리 로직이 올바르게 업데이트되었습니다.
workspace키 삭제 로직이 제거되어 변경사항과 일관성을 유지합니다.SampoomManagement/Features/User/Data/Remote/API/UserAPI.swift (4)
18-26: 기본값으로 하드코딩된 role을 확인해 주세요.
getProfile메서드의role파라미터가 기본값"AGENCY"로 하드코딩되어 있습니다. 다른 역할의 사용자 프로필을 조회해야 하는 경우를 고려하여, 이 기본값이 적절한지 확인해 주세요.호출하는 측에서 명시적으로 role을 전달하도록 하거나, 기본값 제거를 검토해 주세요.
44-52: 직원 목록 조회 API 변경이 올바르게 적용되었습니다.
workspace에서role로의 파라미터 변경이 엔드포인트 쿼리 스트링에 올바르게 반영되었습니다.
54-68: 직원 수정 API 변경이 올바르게 적용되었습니다.
workspace에서role로의 파라미터 변경이 엔드포인트 쿼리 스트링에 올바르게 반영되었습니다.
70-84: 직원 상태 수정 API 변경이 올바르게 적용되었습니다.
workspace에서role로의 파라미터 변경이 엔드포인트 쿼리 스트링에 올바르게 반영되었습니다.SampoomManagement/Features/User/Data/Repository/UserRepositoryImpl.swift (4)
95-103: getEmployeeList 메서드가 올바르게 업데이트되었습니다.role 파라미터가 API 호출에 정확히 전달되고 있으며, 에러 처리와 반환 로직도 적절합니다.
133-146: updateEmployeeStatus 메서드가 올바르게 업데이트되었습니다.role 파라미터가 API에 정확히 전달되고 있으며, 에러 처리도 적절합니다.
148-154: getEmployeeCount 메서드가 올바르게 업데이트되었습니다.role 파라미터를 사용하여 직원 수를 조회하는 로직이 정상적으로 작동합니다.
23-26: role: "AGENCY" 하드코딩이 6개 위치에서 확인됨 - 동적 role 관리 검토 필요파라미터 변경(workspace → role)은 올바르게 적용되었으나, 다음 위치들에서 "AGENCY" 값이 하드코딩되어 있습니다:
- UpdateEmployeeStatusViewModel.swift:79 (updateEmployeeStatusUseCase 호출)
- EditEmployeeViewModel.swift:72 (editEmployeeUseCase 호출)
- SignUpViewModel.swift:103 (getProfileUseCase 호출)
- LoginViewModel.swift:53 (getProfileUseCase 호출)
- AuthAPI.swift:20 (LoginRequestDTO 생성)
- EmployeeListViewModel.swift:91 (getEmployeeUseCase 호출)
앱의 비즈니스 로직에 따라 이것이 의도된 동작인지, 아니면 런타임에 동적으로 role을 결정해야 하는지 검토하여 일관된 role 관리 전략을 확인해주세요.
📝 Summary
[FIX] 주문 요청 시 AgencyId 파라미터 추가
🙏 Question & PR point
📬 Reference
Summary by CodeRabbit
릴리스 노트
새로운 기능
개선사항