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

@@ -10,61 +10,61 @@ _$EquipmentResponseImpl _$$EquipmentResponseImplFromJson(
Map<String, dynamic> json) =>
_$EquipmentResponseImpl(
id: (json['id'] as num).toInt(),
equipmentNumber: json['equipmentNumber'] as String,
equipmentNumber: json['equipment_number'] as String,
category1: json['category1'] as String?,
category2: json['category2'] as String?,
category3: json['category3'] as String?,
manufacturer: json['manufacturer'] as String,
modelName: json['modelName'] as String?,
serialNumber: json['serialNumber'] as String?,
modelName: json['model_name'] as String?,
serialNumber: json['serial_number'] as String?,
barcode: json['barcode'] as String?,
purchaseDate: json['purchaseDate'] == null
purchaseDate: json['purchase_date'] == null
? null
: DateTime.parse(json['purchaseDate'] as String),
purchasePrice: (json['purchasePrice'] as num?)?.toDouble(),
: DateTime.parse(json['purchase_date'] as String),
purchasePrice: json['purchase_price'] as String?,
status: const EquipmentStatusJsonConverter()
.fromJson(json['status'] as String),
currentCompanyId: (json['currentCompanyId'] as num?)?.toInt(),
currentBranchId: (json['currentBranchId'] as num?)?.toInt(),
warehouseLocationId: (json['warehouseLocationId'] as num?)?.toInt(),
lastInspectionDate: json['lastInspectionDate'] == null
currentCompanyId: (json['current_company_id'] as num?)?.toInt(),
currentBranchId: (json['current_branch_id'] as num?)?.toInt(),
warehouseLocationId: (json['warehouse_location_id'] as num?)?.toInt(),
lastInspectionDate: json['last_inspection_date'] == null
? null
: DateTime.parse(json['lastInspectionDate'] as String),
nextInspectionDate: json['nextInspectionDate'] == null
: DateTime.parse(json['last_inspection_date'] as String),
nextInspectionDate: json['next_inspection_date'] == null
? null
: DateTime.parse(json['nextInspectionDate'] as String),
: DateTime.parse(json['next_inspection_date'] as String),
remark: json['remark'] as String?,
createdAt: DateTime.parse(json['createdAt'] as String),
updatedAt: DateTime.parse(json['updatedAt'] as String),
companyName: json['companyName'] as String?,
branchName: json['branchName'] as String?,
warehouseName: json['warehouseName'] as String?,
createdAt: DateTime.parse(json['created_at'] as String),
updatedAt: DateTime.parse(json['updated_at'] as String),
companyName: json['company_name'] as String?,
branchName: json['branch_name'] as String?,
warehouseName: json['warehouse_name'] as String?,
);
Map<String, dynamic> _$$EquipmentResponseImplToJson(
_$EquipmentResponseImpl instance) =>
<String, dynamic>{
'id': instance.id,
'equipmentNumber': instance.equipmentNumber,
'equipment_number': instance.equipmentNumber,
'category1': instance.category1,
'category2': instance.category2,
'category3': instance.category3,
'manufacturer': instance.manufacturer,
'modelName': instance.modelName,
'serialNumber': instance.serialNumber,
'model_name': instance.modelName,
'serial_number': instance.serialNumber,
'barcode': instance.barcode,
'purchaseDate': instance.purchaseDate?.toIso8601String(),
'purchasePrice': instance.purchasePrice,
'purchase_date': instance.purchaseDate?.toIso8601String(),
'purchase_price': instance.purchasePrice,
'status': const EquipmentStatusJsonConverter().toJson(instance.status),
'currentCompanyId': instance.currentCompanyId,
'currentBranchId': instance.currentBranchId,
'warehouseLocationId': instance.warehouseLocationId,
'lastInspectionDate': instance.lastInspectionDate?.toIso8601String(),
'nextInspectionDate': instance.nextInspectionDate?.toIso8601String(),
'current_company_id': instance.currentCompanyId,
'current_branch_id': instance.currentBranchId,
'warehouse_location_id': instance.warehouseLocationId,
'last_inspection_date': instance.lastInspectionDate?.toIso8601String(),
'next_inspection_date': instance.nextInspectionDate?.toIso8601String(),
'remark': instance.remark,
'createdAt': instance.createdAt.toIso8601String(),
'updatedAt': instance.updatedAt.toIso8601String(),
'companyName': instance.companyName,
'branchName': instance.branchName,
'warehouseName': instance.warehouseName,
'created_at': instance.createdAt.toIso8601String(),
'updated_at': instance.updatedAt.toIso8601String(),
'company_name': instance.companyName,
'branch_name': instance.branchName,
'warehouse_name': instance.warehouseName,
};