feat: 사용자 관리 시스템 백엔드 API 호환성 대폭 개선
Some checks failed
Flutter Test & Quality Check / Test on macos-latest (push) Has been cancelled
Flutter Test & Quality Check / Test on ubuntu-latest (push) Has been cancelled
Flutter Test & Quality Check / Build APK (push) Has been cancelled

- UserRemoteDataSource: API v0.2.1 스펙 완전 대응
  • 응답 형식 통일 (success: true 구조)
  • 페이지네이션 처리 개선
  • 에러 핸들링 강화
  • 불필요한 파라미터 제거 (includeInactive 등)

- UserDto 모델 현대화:
  • 서버 응답 구조와 100% 일치
  • 도메인 모델 변환 메서드 추가
  • Freezed 불변성 패턴 완성

- User 도메인 모델 신규 구현:
  • Clean Architecture 원칙 준수
  • UserRole enum 타입 안전성 강화
  • 비즈니스 로직 캡슐화

- 사용자 관련 UseCase 리팩토링:
  • Repository 패턴 완전 적용
  • Either<Failure, Success> 에러 처리
  • 의존성 주입 최적화

- UI 컨트롤러 및 화면 개선:
  • API 응답 변경사항 반영
  • 사용자 권한 표시 정확성 향상
  • 폼 검증 로직 강화

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
JiWoong Sul
2025-08-15 23:31:51 +09:00
parent c1063f5670
commit 93bceb8a6c
20 changed files with 2006 additions and 2017 deletions

View File

@@ -11,19 +11,14 @@ _$UserDtoImpl _$$UserDtoImplFromJson(Map<String, dynamic> json) =>
id: (json['id'] as num).toInt(),
username: json['username'] as String,
name: json['name'] as String,
email: json['email'] as String?,
email: json['email'] as String,
phone: json['phone'] as String?,
role: json['role'] as String,
companyId: (json['company_id'] as num?)?.toInt(),
companyName: json['company_name'] as String?,
branchId: (json['branch_id'] as num?)?.toInt(),
branchName: json['branch_name'] as String?,
isActive: json['is_active'] as bool,
lastLoginAt: json['last_login_at'] == null
? null
: DateTime.parse(json['last_login_at'] as String),
createdAt: DateTime.parse(json['created_at'] as String),
updatedAt: DateTime.parse(json['updated_at'] as String),
updatedAt: json['updated_at'] == null
? null
: DateTime.parse(json['updated_at'] as String),
);
Map<String, dynamic> _$$UserDtoImplToJson(_$UserDtoImpl instance) =>
@@ -34,27 +29,20 @@ Map<String, dynamic> _$$UserDtoImplToJson(_$UserDtoImpl instance) =>
'email': instance.email,
'phone': instance.phone,
'role': instance.role,
'company_id': instance.companyId,
'company_name': instance.companyName,
'branch_id': instance.branchId,
'branch_name': instance.branchName,
'is_active': instance.isActive,
'last_login_at': instance.lastLoginAt?.toIso8601String(),
'created_at': instance.createdAt.toIso8601String(),
'updated_at': instance.updatedAt.toIso8601String(),
'updated_at': instance.updatedAt?.toIso8601String(),
};
_$CreateUserRequestImpl _$$CreateUserRequestImplFromJson(
Map<String, dynamic> json) =>
_$CreateUserRequestImpl(
username: json['username'] as String,
email: json['email'] as String?,
email: json['email'] as String,
password: json['password'] as String,
name: json['name'] as String,
phone: json['phone'] as String?,
role: json['role'] as String,
companyId: (json['company_id'] as num?)?.toInt(),
branchId: (json['branch_id'] as num?)?.toInt(),
);
Map<String, dynamic> _$$CreateUserRequestImplToJson(
@@ -66,8 +54,6 @@ Map<String, dynamic> _$$CreateUserRequestImplToJson(
'name': instance.name,
'phone': instance.phone,
'role': instance.role,
'company_id': instance.companyId,
'branch_id': instance.branchId,
};
_$UpdateUserRequestImpl _$$UpdateUserRequestImplFromJson(
@@ -78,9 +64,6 @@ _$UpdateUserRequestImpl _$$UpdateUserRequestImplFromJson(
password: json['password'] as String?,
phone: json['phone'] as String?,
role: json['role'] as String?,
companyId: (json['company_id'] as num?)?.toInt(),
branchId: (json['branch_id'] as num?)?.toInt(),
isActive: json['is_active'] as bool?,
);
Map<String, dynamic> _$$UpdateUserRequestImplToJson(
@@ -91,35 +74,20 @@ Map<String, dynamic> _$$UpdateUserRequestImplToJson(
'password': instance.password,
'phone': instance.phone,
'role': instance.role,
'company_id': instance.companyId,
'branch_id': instance.branchId,
'is_active': instance.isActive,
};
_$ChangeStatusRequestImpl _$$ChangeStatusRequestImplFromJson(
_$CheckUsernameResponseImpl _$$CheckUsernameResponseImplFromJson(
Map<String, dynamic> json) =>
_$ChangeStatusRequestImpl(
isActive: json['is_active'] as bool,
_$CheckUsernameResponseImpl(
available: json['available'] as bool,
message: json['message'] as String?,
);
Map<String, dynamic> _$$ChangeStatusRequestImplToJson(
_$ChangeStatusRequestImpl instance) =>
Map<String, dynamic> _$$CheckUsernameResponseImplToJson(
_$CheckUsernameResponseImpl instance) =>
<String, dynamic>{
'is_active': instance.isActive,
};
_$ChangePasswordRequestImpl _$$ChangePasswordRequestImplFromJson(
Map<String, dynamic> json) =>
_$ChangePasswordRequestImpl(
currentPassword: json['current_password'] as String,
newPassword: json['new_password'] as String,
);
Map<String, dynamic> _$$ChangePasswordRequestImplToJson(
_$ChangePasswordRequestImpl instance) =>
<String, dynamic>{
'current_password': instance.currentPassword,
'new_password': instance.newPassword,
'available': instance.available,
'message': instance.message,
};
_$UserListDtoImpl _$$UserListDtoImplFromJson(Map<String, dynamic> json) =>