refactor: UI 화면 통합 및 불필요한 파일 정리
Some checks failed
Flutter Test & Quality Check / Build APK (push) Has been cancelled
Flutter Test & Quality Check / Test on macos-latest (push) Has been cancelled
Flutter Test & Quality Check / Test on ubuntu-latest (push) Has been cancelled

- 모든 *_redesign.dart 파일을 기본 화면 파일로 통합
- 백업용 컨트롤러 파일들 제거 (*_controller.backup.dart)
- 사용하지 않는 예제 및 테스트 파일 제거
- Clean Architecture 적용 후 남은 정리 작업 완료
- 테스트 코드 정리 및 구조 개선 준비

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
JiWoong Sul
2025-08-11 14:00:44 +09:00
parent 162fe08618
commit 1e6da44917
103 changed files with 1224 additions and 2976 deletions

View File

@@ -3,6 +3,7 @@ import 'package:injectable/injectable.dart';
import 'package:superport/core/errors/exceptions.dart';
import 'package:superport/core/errors/failures.dart';
import 'package:superport/data/datasources/remote/company_remote_datasource.dart';
import 'package:superport/data/models/common/paginated_response.dart';
import 'package:superport/data/models/company/company_dto.dart';
import 'package:superport/data/models/company/company_list_dto.dart';
import 'package:superport/data/models/company/branch_dto.dart';
@@ -16,7 +17,7 @@ class CompanyService {
CompanyService(this._remoteDataSource);
// 회사 목록 조회
Future<List<Company>> getCompanies({
Future<PaginatedResponse<Company>> getCompanies({
int page = 1,
int perPage = 20,
String? search,
@@ -30,7 +31,15 @@ class CompanyService {
isActive: isActive,
);
return response.items.map((dto) => _convertListDtoToCompany(dto)).toList();
return PaginatedResponse<Company>(
items: response.items.map((dto) => _convertListDtoToCompany(dto)).toList(),
page: response.page,
size: response.size,
totalElements: response.totalElements,
totalPages: response.totalPages,
first: response.first,
last: response.last,
);
} on ApiException catch (e) {
debugPrint('[CompanyService] ApiException: ${e.message}');
throw ServerFailure(message: e.message);

View File

@@ -2,6 +2,7 @@ import 'package:get_it/get_it.dart';
import 'package:superport/core/errors/exceptions.dart';
import 'package:superport/core/errors/failures.dart';
import 'package:superport/data/datasources/remote/equipment_remote_datasource.dart';
import 'package:superport/data/models/common/paginated_response.dart';
import 'package:superport/data/models/equipment/equipment_history_dto.dart';
import 'package:superport/data/models/equipment/equipment_in_request.dart';
import 'package:superport/data/models/equipment/equipment_io_response.dart';
@@ -15,7 +16,7 @@ class EquipmentService {
final EquipmentRemoteDataSource _remoteDataSource = GetIt.instance<EquipmentRemoteDataSource>();
// 장비 목록 조회 (DTO 형태로 반환하여 status 정보 유지)
Future<List<EquipmentListDto>> getEquipmentsWithStatus({
Future<PaginatedResponse<EquipmentListDto>> getEquipmentsWithStatus({
int page = 1,
int perPage = 20,
String? status,
@@ -24,7 +25,7 @@ class EquipmentService {
String? search,
}) async {
try {
final dtoList = await _remoteDataSource.getEquipments(
final response = await _remoteDataSource.getEquipments(
page: page,
perPage: perPage,
status: status,
@@ -33,7 +34,15 @@ class EquipmentService {
search: search,
);
return dtoList;
return PaginatedResponse<EquipmentListDto>(
items: response.items,
page: response.page,
size: response.perPage,
totalElements: response.total,
totalPages: response.totalPages,
first: response.page == 1,
last: response.page >= response.totalPages,
);
} on ServerException catch (e) {
throw ServerFailure(message: e.message);
} catch (e) {
@@ -42,7 +51,7 @@ class EquipmentService {
}
// 장비 목록 조회
Future<List<Equipment>> getEquipments({
Future<PaginatedResponse<Equipment>> getEquipments({
int page = 1,
int perPage = 20,
String? status,
@@ -51,7 +60,7 @@ class EquipmentService {
String? search,
}) async {
try {
final dtoList = await _remoteDataSource.getEquipments(
final response = await _remoteDataSource.getEquipments(
page: page,
perPage: perPage,
status: status,
@@ -60,7 +69,15 @@ class EquipmentService {
search: search,
);
return dtoList.map((dto) => _convertListDtoToEquipment(dto)).toList();
return PaginatedResponse<Equipment>(
items: response.items.map((dto) => _convertListDtoToEquipment(dto)).toList(),
page: response.page,
size: response.perPage,
totalElements: response.total,
totalPages: response.totalPages,
first: response.page == 1,
last: response.page >= response.totalPages,
);
} on ServerException catch (e) {
throw ServerFailure(message: e.message);
} catch (e) {
@@ -68,6 +85,42 @@ class EquipmentService {
}
}
// 입고된 장비 목록 조회
Future<PaginatedResponse<EquipmentListDto>> getEquipmentInList({
int page = 1,
int perPage = 20,
int? companyId,
int? warehouseLocationId,
String? search,
}) async {
return getEquipmentsWithStatus(
page: page,
perPage: perPage,
status: 'available', // 입고된 장비는 사용 가능 상태
companyId: companyId,
warehouseLocationId: warehouseLocationId,
search: search,
);
}
// 출고된 장비 목록 조회
Future<PaginatedResponse<EquipmentListDto>> getEquipmentOutList({
int page = 1,
int perPage = 20,
int? companyId,
int? warehouseLocationId,
String? search,
}) async {
return getEquipmentsWithStatus(
page: page,
perPage: perPage,
status: 'in_use', // 출고된 장비는 사용 중 상태
companyId: companyId,
warehouseLocationId: warehouseLocationId,
search: search,
);
}
// 장비 생성
Future<Equipment> createEquipment(Equipment equipment) async {
try {

View File

@@ -77,8 +77,8 @@ class HealthTestService {
final equipments = await _equipmentService.getEquipments(page: 1, perPage: 5);
results['equipments'] = {
'success': true,
'count': equipments.length,
'sample': equipments.take(2).map((e) => {
'count': equipments.items.length,
'sample': equipments.items.take(2).map((e) => {
'id': e.id,
'name': e.name,
'manufacturer': e.manufacturer,
@@ -95,11 +95,11 @@ class HealthTestService {
try {
DebugLogger.log('입고지 API 체크 시작', tag: 'HEALTH_TEST');
final warehouses = await _warehouseService.getWarehouseLocations();
final warehousesResponse = await _warehouseService.getWarehouseLocations();
results['warehouses'] = {
'success': true,
'count': warehouses.length,
'sample': warehouses.take(2).map((w) => {
'count': warehousesResponse.items.length,
'sample': warehousesResponse.items.take(2).map((w) => {
'id': w.id,
'name': w.name,
'address': w.address.toString(),
@@ -115,11 +115,11 @@ class HealthTestService {
try {
DebugLogger.log('회사 API 체크 시작', tag: 'HEALTH_TEST');
final companies = await _companyService.getCompanies();
final companiesResponse = await _companyService.getCompanies();
results['companies'] = {
'success': true,
'count': companies.length,
'sample': companies.take(2).map((c) => {
'count': companiesResponse.items.length,
'sample': companiesResponse.items.take(2).map((c) => {
'id': c.id,
'name': c.name,
'companyTypes': c.companyTypes.map((t) => companyTypeToString(t)).toList(),
@@ -150,8 +150,8 @@ class HealthTestService {
final equipments = await _equipmentService.getEquipments(page: 1, perPage: 10);
return {
'success': true,
'count': equipments.length,
'data': equipments.map((e) => e.toJson()).toList(),
'count': equipments.items.length,
'data': equipments.items.map((e) => e.toJson()).toList(),
};
} catch (e) {
return {'success': false, 'error': e.toString()};
@@ -159,11 +159,11 @@ class HealthTestService {
case 'warehouses':
try {
final warehouses = await _warehouseService.getWarehouseLocations();
final warehousesResponse = await _warehouseService.getWarehouseLocations();
return {
'success': true,
'count': warehouses.length,
'data': warehouses.map((w) => {
'count': warehousesResponse.items.length,
'data': warehousesResponse.items.map((w) => {
'id': w.id,
'name': w.name,
'address': w.address.toString(),
@@ -179,8 +179,8 @@ class HealthTestService {
final companies = await _companyService.getCompanies();
return {
'success': true,
'count': companies.length,
'data': companies.map((c) => c.toJson()).toList(),
'count': companies.items.length,
'data': companies.items.map((c) => c.toJson()).toList(),
};
} catch (e) {
return {'success': false, 'error': e.toString()};

View File

@@ -4,6 +4,7 @@ import 'package:injectable/injectable.dart';
import 'package:superport/core/errors/exceptions.dart';
import 'package:superport/core/errors/failures.dart';
import 'package:superport/data/datasources/remote/license_remote_datasource.dart';
import 'package:superport/data/models/common/paginated_response.dart';
import 'package:superport/data/models/license/license_dto.dart';
import 'package:superport/data/models/license/license_request_dto.dart';
import 'package:superport/models/license_model.dart';
@@ -15,7 +16,7 @@ class LicenseService {
LicenseService(this._remoteDataSource);
// 라이선스 목록 조회
Future<List<License>> getLicenses({
Future<PaginatedResponse<License>> getLicenses({
int page = 1,
int perPage = 20,
bool? isActive,
@@ -65,7 +66,15 @@ class LicenseService {
}
debugPrint('╚════════════════════════════════════════════════════════════\n');
return licenses;
return PaginatedResponse<License>(
items: licenses,
page: response.page,
size: response.perPage,
totalElements: response.total,
totalPages: response.totalPages,
first: response.page == 1,
last: response.page >= response.totalPages,
);
} on ApiException catch (e) {
debugPrint('\n╔════════════════════════════════════════════════════════════');
debugPrint('║ ❌ LICENSE API ERROR');

View File

@@ -1,5 +1,6 @@
import 'package:injectable/injectable.dart';
import 'package:superport/data/datasources/remote/user_remote_datasource.dart';
import 'package:superport/data/models/common/paginated_response.dart';
import 'package:superport/data/models/user/user_dto.dart';
import 'package:superport/models/user_model.dart';
@@ -10,7 +11,7 @@ class UserService {
UserService() : _userRemoteDataSource = UserRemoteDataSource();
/// 사용자 목록 조회
Future<List<User>> getUsers({
Future<PaginatedResponse<User>> getUsers({
int page = 1,
int perPage = 20,
bool? isActive,
@@ -26,7 +27,15 @@ class UserService {
role: role != null ? _mapRoleToApi(role) : null,
);
return response.users.map((dto) => _userDtoToModel(dto)).toList();
return PaginatedResponse<User>(
items: response.users.map((dto) => _userDtoToModel(dto)).toList(),
page: response.page,
size: response.perPage,
totalElements: response.total,
totalPages: response.totalPages,
first: response.page == 1,
last: response.page >= response.totalPages,
);
} catch (e) {
throw Exception('사용자 목록 조회 실패: ${e.toString()}');
}

View File

@@ -4,6 +4,7 @@ import 'package:injectable/injectable.dart';
import 'package:superport/core/errors/exceptions.dart';
import 'package:superport/core/errors/failures.dart';
import 'package:superport/data/datasources/remote/warehouse_remote_datasource.dart';
import 'package:superport/data/models/common/paginated_response.dart';
import 'package:superport/data/models/warehouse/warehouse_dto.dart';
import 'package:superport/models/address_model.dart';
import 'package:superport/models/warehouse_location_model.dart';
@@ -13,7 +14,7 @@ class WarehouseService {
final WarehouseRemoteDataSource _remoteDataSource = GetIt.instance<WarehouseRemoteDataSource>();
// 창고 위치 목록 조회
Future<List<WarehouseLocation>> getWarehouseLocations({
Future<PaginatedResponse<WarehouseLocation>> getWarehouseLocations({
int page = 1,
int perPage = 20,
bool? isActive,
@@ -25,7 +26,15 @@ class WarehouseService {
isActive: isActive,
);
return response.items.map((dto) => _convertDtoToWarehouseLocation(dto)).toList();
return PaginatedResponse<WarehouseLocation>(
items: response.items.map((dto) => _convertDtoToWarehouseLocation(dto)).toList(),
page: response.page,
size: response.perPage,
totalElements: response.total,
totalPages: response.totalPages,
first: response.page == 1,
last: response.page >= response.totalPages,
);
} on ApiException catch (e) {
debugPrint('[WarehouseService] ApiException: ${e.message}');
throw ServerFailure(message: e.message);