Files
superport_v2/lib/injection_container.dart
JiWoong Sul c3010965ad 결재 템플릿 단계 적용 구현
- ApprovalTemplate 엔티티·DTO·원격 리포지토리 추가
- ApprovalController에 템플릿 로딩/적용 상태와 assignSteps 호출 연동
- ApprovalPage 단계 탭에 템플릿 선택 UI 및 적용 확인 다이얼로그 구현
- 템플릿 적용 단위 테스트와 IMPLEMENTATION_TASKS 현황 갱신
2025-09-25 00:21:12 +09:00

105 lines
4.2 KiB
Dart

// ignore_for_file: public_member_api_docs
import 'package:dio/dio.dart';
import 'package:get_it/get_it.dart';
import 'core/network/api_client.dart';
import 'core/network/interceptors/auth_interceptor.dart';
import 'features/masters/customer/data/repositories/customer_repository_remote.dart';
import 'features/masters/customer/domain/repositories/customer_repository.dart';
import 'features/masters/group/data/repositories/group_repository_remote.dart';
import 'features/masters/group/domain/repositories/group_repository.dart';
import 'features/masters/menu/data/repositories/menu_repository_remote.dart';
import 'features/masters/menu/domain/repositories/menu_repository.dart';
import 'features/masters/group_permission/data/repositories/group_permission_repository_remote.dart';
import 'features/masters/group_permission/domain/repositories/group_permission_repository.dart';
import 'features/masters/product/data/repositories/product_repository_remote.dart';
import 'features/masters/product/domain/repositories/product_repository.dart';
import 'features/masters/user/data/repositories/user_repository_remote.dart';
import 'features/masters/user/domain/repositories/user_repository.dart';
import 'features/masters/vendor/data/repositories/vendor_repository_remote.dart';
import 'features/masters/vendor/domain/repositories/vendor_repository.dart';
import 'features/masters/warehouse/data/repositories/warehouse_repository_remote.dart';
import 'features/masters/warehouse/domain/repositories/warehouse_repository.dart';
import 'features/masters/uom/data/repositories/uom_repository_remote.dart';
import 'features/masters/uom/domain/repositories/uom_repository.dart';
import 'features/approvals/data/repositories/approval_repository_remote.dart';
import 'features/approvals/data/repositories/approval_template_repository_remote.dart';
import 'features/approvals/domain/repositories/approval_repository.dart';
import 'features/approvals/domain/repositories/approval_template_repository.dart';
/// 전역 DI 컨테이너
final GetIt sl = GetIt.instance;
/// 의존성 등록(스켈레톤)
/// - Environment.initialize() 이후 호출하여 baseUrl/타임아웃 등을 주입한다.
Future<void> initInjection({
required String baseUrl,
Duration? connectTimeout,
Duration? receiveTimeout,
}) async {
// Dio 기본 옵션 설정
final options = BaseOptions(
baseUrl: baseUrl,
connectTimeout: connectTimeout ?? const Duration(seconds: 15),
receiveTimeout: receiveTimeout ?? const Duration(seconds: 30),
headers: const {'Accept': 'application/json'},
);
final dio = Dio(options);
// 인터셉터 등록 (Auth 등)
dio.interceptors.add(AuthInterceptor());
// 개발용 로거는 필요 시 추가 (pretty_dio_logger 등)
// if (!kReleaseMode) { dio.interceptors.add(PrettyDioLogger(...)); }
// ApiClient 등록
sl.registerLazySingleton<ApiClient>(() => ApiClient(dio: dio));
// 리포지토리 등록 (예: 벤더)
sl.registerLazySingleton<VendorRepository>(
() => VendorRepositoryRemote(apiClient: sl<ApiClient>()),
);
sl.registerLazySingleton<ProductRepository>(
() => ProductRepositoryRemote(apiClient: sl<ApiClient>()),
);
sl.registerLazySingleton<WarehouseRepository>(
() => WarehouseRepositoryRemote(apiClient: sl<ApiClient>()),
);
sl.registerLazySingleton<UomRepository>(
() => UomRepositoryRemote(apiClient: sl<ApiClient>()),
);
sl.registerLazySingleton<CustomerRepository>(
() => CustomerRepositoryRemote(apiClient: sl<ApiClient>()),
);
sl.registerLazySingleton<GroupRepository>(
() => GroupRepositoryRemote(apiClient: sl<ApiClient>()),
);
sl.registerLazySingleton<UserRepository>(
() => UserRepositoryRemote(apiClient: sl<ApiClient>()),
);
sl.registerLazySingleton<MenuRepository>(
() => MenuRepositoryRemote(apiClient: sl<ApiClient>()),
);
sl.registerLazySingleton<GroupPermissionRepository>(
() => GroupPermissionRepositoryRemote(apiClient: sl<ApiClient>()),
);
sl.registerLazySingleton<ApprovalRepository>(
() => ApprovalRepositoryRemote(apiClient: sl<ApiClient>()),
);
sl.registerLazySingleton<ApprovalTemplateRepository>(
() => ApprovalTemplateRepositoryRemote(apiClient: sl<ApiClient>()),
);
}