feat: V/R 유지보수 시스템 전환 및 대시보드 테이블 형태 완성
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

- V/R 시스템 완전 전환: WARRANTY/CONTRACT/INSPECTION → V(방문)/R(원격)
- 유지보수 대시보드 카드 → StandardDataTable 테이블 형태 전환
- "조회중..." 문제 해결: 백엔드 직접 필드 사용 (equipment_model, company_name)
- MaintenanceDto 신규 필드 추가: company_id, company_name, equipment_serial, equipment_model
- preloadEquipmentData 비활성화로 불필요한 equipment-history API 호출 제거
- CO-STAR 프레임워크 적용 및 CLAUDE.md v3.0 업데이트
- Flutter Analyze ERROR: 0 유지, 100% shadcn_ui 컴플라이언스

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
JiWoong Sul
2025-09-05 14:33:20 +09:00
parent 2c20999025
commit 519e1883a3
46 changed files with 7804 additions and 1034 deletions

View File

@@ -62,6 +62,11 @@ import 'data/repositories/maintenance_repository.dart';
import 'data/repositories/maintenance_repository_impl.dart';
import 'domain/usecases/maintenance_usecase.dart';
import 'screens/maintenance/controllers/maintenance_controller.dart';
// Maintenance Stats (새로운 대시보드 기능)
import 'data/repositories/maintenance_stats_repository.dart';
import 'data/repositories/maintenance_stats_repository_impl.dart';
import 'domain/usecases/get_maintenance_stats_usecase.dart';
import 'screens/maintenance/controllers/maintenance_dashboard_controller.dart';
import 'data/repositories/zipcode_repository.dart';
import 'domain/usecases/zipcode_usecase.dart';
import 'screens/zipcode/controllers/zipcode_controller.dart';
@@ -69,6 +74,8 @@ import 'data/repositories/rent_repository_impl.dart';
import 'domain/repositories/rent_repository.dart';
import 'domain/usecases/rent_usecase.dart';
import 'screens/rent/controllers/rent_controller.dart';
import 'services/inventory_history_service.dart';
import 'screens/inventory/controllers/inventory_history_controller.dart';
// Use Cases - Auth
import 'domain/usecases/auth/login_usecase.dart';
@@ -230,6 +237,12 @@ Future<void> init() async {
remoteDataSource: sl<MaintenanceRemoteDataSource>(),
),
);
// Maintenance Stats Repository (대시보드 통계용)
sl.registerLazySingleton<MaintenanceStatsRepository>(
() => MaintenanceStatsRepositoryImpl(
remoteDataSource: sl<MaintenanceRemoteDataSource>(),
),
);
sl.registerLazySingleton<ZipcodeRepository>(
() => ZipcodeRepositoryImpl(sl<ApiClient>()),
);
@@ -307,6 +320,11 @@ Future<void> init() async {
() => MaintenanceUseCase(repository: sl<MaintenanceRepository>()),
);
// Use Cases - Maintenance Stats (대시보드용)
sl.registerLazySingleton<GetMaintenanceStatsUseCase>(
() => GetMaintenanceStatsUseCase(repository: sl<MaintenanceStatsRepository>()),
);
// Use Cases - Zipcode
sl.registerLazySingleton<ZipcodeUseCase>(
() => ZipcodeUseCaseImpl(sl<ZipcodeRepository>()),
@@ -341,7 +359,12 @@ Future<void> init() async {
sl<VendorUseCase>(),
));
sl.registerFactory(() => EquipmentHistoryController(useCase: sl<EquipmentHistoryUseCase>()));
sl.registerFactory(() => MaintenanceController(maintenanceUseCase: sl<MaintenanceUseCase>()));
sl.registerFactory(() => MaintenanceController(
maintenanceUseCase: sl<MaintenanceUseCase>(),
equipmentHistoryRepository: sl<EquipmentHistoryRepository>(),
));
// Maintenance Dashboard Controller (대시보드용)
sl.registerFactory(() => MaintenanceDashboardController(getMaintenanceStatsUseCase: sl<GetMaintenanceStatsUseCase>()));
sl.registerFactory(() => ZipcodeController(sl<ZipcodeUseCase>()));
sl.registerFactory(() => RentController(sl<RentUseCase>()));
sl.registerFactory(() => AdministratorController(sl<AdministratorUseCase>()));
@@ -388,4 +411,17 @@ Future<void> init() async {
sl.registerLazySingleton<WarehouseService>(
() => WarehouseService(),
);
// 재고 이력 관리 서비스 (새로 추가)
sl.registerLazySingleton<InventoryHistoryService>(
() => InventoryHistoryService(
historyRepository: sl<EquipmentHistoryRepository>(),
equipmentDetailUseCase: sl<GetEquipmentDetailUseCase>(),
),
);
// 재고 이력 컨트롤러 (새로 추가)
sl.registerFactory(() => InventoryHistoryController(
service: sl<InventoryHistoryService>(),
));
}