Skip to content

Main 코드 업데이트#27

Merged
Sangyoon98 merged 8 commits intomainfrom
dev
Nov 9, 2025
Merged

Main 코드 업데이트#27
Sangyoon98 merged 8 commits intomainfrom
dev

Conversation

@Sangyoon98
Copy link
Member

@Sangyoon98 Sangyoon98 commented Nov 9, 2025

Summary by CodeRabbit

릴리스 노트

  • 새로운 기능

    • 직원 관리 기능 추가: 직원 목록 조회, 직책 수정, 근무 상태 업데이트 기능
    • 사용자 프로필 편집 기능 개선
    • 대시보드에 직원 수 표시 추가
  • UI/스타일

    • 버튼 스타일 개선 및 새로운 보조 버튼 타입 추가
    • 강조 색상 일관성 개선

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Nov 9, 2025

Caution

Review failed

The pull request is closed.

Walkthrough

사용자 프로필 및 직원 관리 기능을 추가합니다. 새로운 UserAPI, UserRepository, 다양한 Use Case를 통해 프로필 조회/수정, 직원 목록 조회/편집/상태 변경을 구현하고, DI 레이어를 확장하여 의존성을 주입합니다.

Changes

Cohort / File(s) Change Summary
User Feature - Domain Models
SampoomManagement/Features/User/Domain/Models/Employee.swift, EmployeeStatus.swift, User.swift, UserPosition.swift
직원 데이터 모델 추가 및 기존 모델 정리. Employee, EmployeeStatus 열거형 도입하고 한국어 표시명(displayNameKo) 추가
User Feature - Use Cases
SampoomManagement/Features/User/Domain/UseCase/GetProfileUseCase.swift, GetStoredUserUseCase.swift, UpdateProfileUseCase.swift, GetEmployeeUseCase.swift, EditEmployeeUseCase.swift, GetEmployeeCountUseCase.swift, UpdateEmployeeStatusUseCase.swift
프로필 관리 및 직원 관리 관련 Use Case 7개 신규 추가
User Feature - Repository
SampoomManagement/Features/User/Domain/Repository/UserRepository.swift, SampoomManagement/Features/User/Data/Repository/UserRepositoryImpl.swift
UserRepository 인터페이스 및 구현체 추가. 지수 백오프 재시도 로직 포함
User Feature - Remote API & DTO
SampoomManagement/Features/User/Data/Remote/API/UserAPI.swift, SampoomManagement/Features/User/Data/Remote/DTO/EditEmployeeRequestDTO.swift, EditEmployeeResponseDTO.swift, EmployeeDTO.swift, EmployeeListDTO.swift, GetProfileResponseDTO.swift, UpdateEmployeeStatusRequestDTO.swift, UpdateEmployeeStatusResponseDTO.swift, UpdateProfileRequestDTO.swift, UpdateProfileResponseDTO.swift
UserAPI 클래스 및 10개의 DTO 신규 추가
User Feature - Mappers
SampoomManagement/Features/User/Data/Mappers/UserMappers.swift
DTO-to-Model 변환 로직 5개 추가
User Feature - UI Layer
SampoomManagement/Features/User/UI/EmployeeListView.swift, EmployeeListViewModel.swift, EmployeeListUiEvent.swift, EmployeeListUiState.swift, EditEmployeeBottomSheet.swift, EditEmployeeViewModel.swift, EditEmployeeUiEvent.swift, EditEmployeeUiState.swift, UpdateEmployeeStatusBottomSheet.swift, UpdateEmployeeStatusViewModel.swift, UpdateEmployeeStatusUiEvent.swift, UpdateEmployeeStatusUiState.swift, UpdateProfileBottomSheet.swift, UpdateProfileViewModel.swift, UpdateProfileUiEvent.swift, UpdateProfileUiState.swift, EmployeeBottomSheetType.swift
직원 목록, 편집, 상태 업데이트, 프로필 업데이트 관련 UI 및 ViewModel 17개 신규 추가
Auth Feature - Mapper & API Changes
SampoomManagement/Features/Auth/Data/Mappers/AuthMappers.swift, SampoomManagement/Features/Auth/Data/Remote/API/AuthAPI.swift
GetProfileResponseDTO.toModel() 및 User.mergeWith() 메서드 제거, AuthAPI에서 getProfile 메서드 제거
Auth Feature - Repository & ViewModel
SampoomManagement/Features/Auth/Data/Repository/AuthRepositoryImpl.swift, SampoomManagement/Features/Auth/UI/LoginViewModel.swift, SampoomManagement/Features/Auth/UI/SignUpViewModel.swift
로그인 후 프로필 조회 추가, LoginViewModel 및 SignUpViewModel에 GetProfileUseCase 의존성 주입
Dashboard Feature
SampoomManagement/Features/Dashboard/UI/DashboardView.swift, DashboardViewModel.swift, DashboardUiState.swift
동적 사용자 데이터 기반 UI 업데이트, 직원 수 표시, refreshUser() 메서드 추가, 관리자용 직원 버튼 기능화
Setting Feature
SampoomManagement/Features/Setting/UI/SettingView.swift, SettingViewModel.swift, SampoomManagement/Features/Setting/UI/SettingUiEvent.swift
프로필 편집 바텀시트 추가, getStoredUserUseCase 의존성 변경, editProfile/logout 이벤트 제거
DI Configuration
SampoomManagement/Core/DI/AppDependencies.swift
UserAPI, UserRepository, 8개 Use Case 및 5개 ViewModel 팩토리 메서드 추가. 기존 LoginViewModel, SignUpViewModel, DashboardViewModel, SettingViewModel 의존성 업데이트
Resources & Utilities
SampoomManagement/Core/Resources/StringResources.swift, SampoomManagement/Core/Utilities/EmployeeStatusFormatter.swift, AuthValidator.swift, ValidationResult.swift
StringResources에 Employee/Setting 관련 키 25개 추가, employeeStatusToKorean() 유틸 함수 추가, 여백 정리
Common Components
SampoomManagement/Core/UI/Components/CommonButton.swift
ButtonType.secondary 케이스 추가, 반투명 accent 색상 스타일 구현
Button Styling Updates
SampoomManagement/Features/Cart/UI/CartListView.swift, SampoomManagement/Features/Outbound/UI/OutboundListView.swift, SampoomManagement/Features/Part/UI/PartDetailBottomSheetView.swift
CommonButton 색상 지정 방식을 type 기반 스타일로 변경 (filled, secondary)
App Navigation
SampoomManagement/App/ContentView.swift
EmployeeNavigation 열거형 추가, DashboardView/SettingView 초기화 매개변수 변경, EmployeeListView 네비게이션 대상 추가

Estimated code review effort

🎯 5 (Critical) | ⏱️ ~120 minutes

집중 검토 필요 영역:

  • UserRepositoryImpl의 지수 백오프 재시도 로직 — 5회 재시도, 300~1500ms 지연, 1.8배 증가 팩터 구현의 정확성 검증 필요
  • AuthRepositoryImpl의 흐름 변경 — 프로필 즉시 저장에서 로그인 후 프로필 조회로 변경된 인증 흐름의 일관성 확인
  • DashboardViewModel의 새로운 사용자/직원 수 로딩 로직 — 여러 비동기 작업 조율, 에러 처리, UI 상태 동기화
  • EmployeeListViewModel의 페이지네이션 및 바텀시트 로직 — 상태 관리 복잡도, 메모리 누수 가능성
  • 직원 편집/상태 업데이트 ViewModel들의 중복 패턴 — 일관된 에러 처리 및 UI 상태 업데이트 검증
  • DI 레이어의 광범위한 변경 — 9개 새로운 의존성 추가, 기존 5개 팩토리 메서드 수정에 따른 상호 영향
  • UserAPI와 UserRepository 간의 네트워크 에러 처리 — NetworkError 변환 및 사용자 메시지 매핑 일관성
  • Auth 기능 제거 — getProfile API 제거와 신규 UserAPI.getProfile 간의 마이그레이션 완성도

Possibly related PRs

Suggested labels

ready-to-merge, feature/user-management, refactor/di-container, enhancement/auth-flow

Suggested reviewers

  • Lee-Jong-Jin
  • CHOOSLA
  • yangjiseonn
  • vivivim
  • taemin3

Poem

🐰 새로운 직원 목록과 프로필 관리,
DI 레이어로 의존성 조율하며,
바텀시트 위에 업데이트 반영하고,
재시도 로직으로 네트워크 안정화,
한국어 상태명과 함께 완성된 기능! 🎉

✨ 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 dev

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 32252e8 and ceef69f.

📒 Files selected for processing (62)
  • SampoomManagement/App/ContentView.swift (4 hunks)
  • SampoomManagement/Core/DI/AppDependencies.swift (3 hunks)
  • SampoomManagement/Core/Resources/StringResources.swift (1 hunks)
  • SampoomManagement/Core/UI/Components/CommonButton.swift (5 hunks)
  • SampoomManagement/Core/Utilities/AuthValidator.swift (0 hunks)
  • SampoomManagement/Core/Utilities/EmployeeStatusFormatter.swift (1 hunks)
  • SampoomManagement/Core/Utilities/ValidationResult.swift (0 hunks)
  • SampoomManagement/Features/Auth/Data/Mappers/AuthMappers.swift (0 hunks)
  • SampoomManagement/Features/Auth/Data/Remote/API/AuthAPI.swift (0 hunks)
  • SampoomManagement/Features/Auth/Data/Repository/AuthRepositoryImpl.swift (1 hunks)
  • SampoomManagement/Features/Auth/UI/LoginViewModel.swift (2 hunks)
  • SampoomManagement/Features/Auth/UI/SignUpViewModel.swift (2 hunks)
  • SampoomManagement/Features/Cart/UI/CartListView.swift (1 hunks)
  • SampoomManagement/Features/Dashboard/UI/DashboardUiState.swift (5 hunks)
  • SampoomManagement/Features/Dashboard/UI/DashboardView.swift (5 hunks)
  • SampoomManagement/Features/Dashboard/UI/DashboardViewModel.swift (3 hunks)
  • SampoomManagement/Features/Outbound/UI/OutboundListView.swift (1 hunks)
  • SampoomManagement/Features/Part/UI/PartDetailBottomSheetView.swift (1 hunks)
  • SampoomManagement/Features/Setting/UI/SettingUiEvent.swift (0 hunks)
  • SampoomManagement/Features/Setting/UI/SettingView.swift (4 hunks)
  • SampoomManagement/Features/Setting/UI/SettingViewModel.swift (1 hunks)
  • SampoomManagement/Features/User/Data/Mappers/UserMappers.swift (1 hunks)
  • SampoomManagement/Features/User/Data/Remote/API/UserAPI.swift (1 hunks)
  • SampoomManagement/Features/User/Data/Remote/DTO/EditEmployeeRequestDTO.swift (1 hunks)
  • SampoomManagement/Features/User/Data/Remote/DTO/EditEmployeeResponseDTO.swift (1 hunks)
  • SampoomManagement/Features/User/Data/Remote/DTO/EmployeeDTO.swift (1 hunks)
  • SampoomManagement/Features/User/Data/Remote/DTO/EmployeeListDTO.swift (1 hunks)
  • SampoomManagement/Features/User/Data/Remote/DTO/GetProfileResponseDTO.swift (0 hunks)
  • SampoomManagement/Features/User/Data/Remote/DTO/UpdateEmployeeStatusRequestDTO.swift (1 hunks)
  • SampoomManagement/Features/User/Data/Remote/DTO/UpdateEmployeeStatusResponseDTO.swift (1 hunks)
  • SampoomManagement/Features/User/Data/Remote/DTO/UpdateProfileRequestDTO.swift (1 hunks)
  • SampoomManagement/Features/User/Data/Remote/DTO/UpdateProfileResponseDTO.swift (1 hunks)
  • SampoomManagement/Features/User/Data/Repository/UserRepositoryImpl.swift (1 hunks)
  • SampoomManagement/Features/User/Domain/Models/Employee.swift (1 hunks)
  • SampoomManagement/Features/User/Domain/Models/EmployeeStatus.swift (1 hunks)
  • SampoomManagement/Features/User/Domain/Models/User.swift (1 hunks)
  • SampoomManagement/Features/User/Domain/Models/UserPosition.swift (0 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/GetStoredUserUseCase.swift (1 hunks)
  • SampoomManagement/Features/User/Domain/UseCase/UpdateEmployeeStatusUseCase.swift (1 hunks)
  • SampoomManagement/Features/User/Domain/UseCase/UpdateProfileUseCase.swift (1 hunks)
  • SampoomManagement/Features/User/UI/EditEmployeeBottomSheet.swift (1 hunks)
  • SampoomManagement/Features/User/UI/EditEmployeeUiEvent.swift (1 hunks)
  • SampoomManagement/Features/User/UI/EditEmployeeUiState.swift (1 hunks)
  • SampoomManagement/Features/User/UI/EditEmployeeViewModel.swift (1 hunks)
  • SampoomManagement/Features/User/UI/EmployeeBottomSheetType.swift (1 hunks)
  • SampoomManagement/Features/User/UI/EmployeeListUiEvent.swift (1 hunks)
  • SampoomManagement/Features/User/UI/EmployeeListUiState.swift (1 hunks)
  • SampoomManagement/Features/User/UI/EmployeeListView.swift (1 hunks)
  • SampoomManagement/Features/User/UI/EmployeeListViewModel.swift (1 hunks)
  • SampoomManagement/Features/User/UI/UpdateEmployeeStatusBottomSheet.swift (1 hunks)
  • SampoomManagement/Features/User/UI/UpdateEmployeeStatusUiEvent.swift (1 hunks)
  • SampoomManagement/Features/User/UI/UpdateEmployeeStatusUiState.swift (1 hunks)
  • SampoomManagement/Features/User/UI/UpdateEmployeeStatusViewModel.swift (1 hunks)
  • SampoomManagement/Features/User/UI/UpdateProfileBottomSheet.swift (1 hunks)
  • SampoomManagement/Features/User/UI/UpdateProfileUiEvent.swift (1 hunks)
  • SampoomManagement/Features/User/UI/UpdateProfileUiState.swift (1 hunks)
  • SampoomManagement/Features/User/UI/UpdateProfileViewModel.swift (1 hunks)

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

@taemin3 taemin3 left a comment

Choose a reason for hiding this comment

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

확인했습니다

Copy link

@Lee-Jong-Jin Lee-Jong-Jin left a comment

Choose a reason for hiding this comment

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

PR

@Sangyoon98 Sangyoon98 merged commit a4acb93 into main Nov 9, 2025
6 of 7 checks passed
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