feat: 소프트 딜리트 기능 전면 구현 완료
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

## 주요 변경사항
- Company, Equipment, License, Warehouse Location 모든 화면에 소프트 딜리트 구현
- 관리자 권한으로 삭제된 데이터 조회 가능 (includeInactive 파라미터)
- 데이터 무결성 보장을 위한 논리 삭제 시스템 완성

## 기능 개선
- 각 리스트 컨트롤러에 toggleIncludeInactive() 메서드 추가
- UI에 "비활성 포함" 체크박스 추가 (관리자 전용)
- API 데이터소스에 includeInactive 파라미터 지원

## 문서 정리
- 불필요한 문서 파일 제거 및 재구성
- CLAUDE.md 프로젝트 상태 업데이트 (진행률 80%)
- 테스트 결과 문서화 (test20250812v01.md)

## UI 컴포넌트
- Equipment 화면 위젯 모듈화 (custom_dropdown_field, equipment_basic_info_section)
- 폼 유효성 검증 강화

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
JiWoong Sul
2025-08-12 20:02:54 +09:00
parent 1645182b38
commit e7860ae028
48 changed files with 2096 additions and 1242 deletions

View File

@@ -13,6 +13,7 @@ class WarehouseLocationListController extends BaseListController<WarehouseLocati
// 필터 옵션
bool? _isActive;
bool _includeInactive = false; // 비활성 창고 포함 여부
WarehouseLocationListController() {
if (GetIt.instance.isRegistered<WarehouseService>()) {
@@ -25,6 +26,13 @@ class WarehouseLocationListController extends BaseListController<WarehouseLocati
// 추가 Getters
List<WarehouseLocation> get warehouseLocations => items;
bool? get isActive => _isActive;
bool get includeInactive => _includeInactive;
// 비활성 포함 토글
void toggleIncludeInactive() {
_includeInactive = !_includeInactive;
loadData(isRefresh: true);
}
@override
Future<PagedResult<WarehouseLocation>> fetchData({
@@ -37,6 +45,8 @@ class WarehouseLocationListController extends BaseListController<WarehouseLocati
page: params.page,
perPage: params.perPage,
isActive: _isActive,
search: params.search,
includeInactive: _includeInactive,
),
onError: (failure) {
throw failure;
@@ -129,8 +139,11 @@ class WarehouseLocationListController extends BaseListController<WarehouseLocati
},
);
// 로컬 삭제
removeItemLocally((l) => l.id == id);
// 로컬 삭제 대신 서버에서 새로고침
// removeItemLocally((l) => l.id == id);
// 삭제 후 리스트 새로고침 (서버에서 10개 다시 가져오기)
await refresh();
}
// 사용 중인 창고 위치 조회