- License Expiry Summary API 연동 완료 - 30/60/90일 내 만료 예정 라이선스 요약 표시 - 대시보드 상단에 알림 카드로 통합 - 만료 임박 순서로 색상 구분 (빨강/주황/노랑) - Lookup 데이터 전역 캐싱 시스템 구축 - LookupService 및 RemoteDataSource 생성 - 전체 lookup 데이터 일괄 로드 및 캐싱 - 타입별 필터링 지원 - 새로운 모델 추가 - LicenseExpirySummary (Freezed) - LookupData, LookupCategory, LookupItem 모델 - CLAUDE.md 문서 업데이트 - 미사용 API 활용 계획 추가 - 구현 우선순위 정의 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
35 lines
1.3 KiB
Dart
35 lines
1.3 KiB
Dart
import 'package:freezed_annotation/freezed_annotation.dart';
|
|
|
|
part 'lookup_data.freezed.dart';
|
|
part 'lookup_data.g.dart';
|
|
|
|
@freezed
|
|
class LookupData with _$LookupData {
|
|
const factory LookupData({
|
|
@JsonKey(name: 'equipment_types') required List<LookupItem> equipmentTypes,
|
|
@JsonKey(name: 'equipment_statuses') required List<LookupItem> equipmentStatuses,
|
|
@JsonKey(name: 'license_types') required List<LookupItem> licenseTypes,
|
|
@JsonKey(name: 'manufacturers') required List<LookupItem> manufacturers,
|
|
@JsonKey(name: 'user_roles') required List<LookupItem> userRoles,
|
|
@JsonKey(name: 'company_statuses') required List<LookupItem> companyStatuses,
|
|
@JsonKey(name: 'warehouse_types') required List<LookupItem> warehouseTypes,
|
|
}) = _LookupData;
|
|
|
|
factory LookupData.fromJson(Map<String, dynamic> json) =>
|
|
_$LookupDataFromJson(json);
|
|
}
|
|
|
|
@freezed
|
|
class LookupItem with _$LookupItem {
|
|
const factory LookupItem({
|
|
required String code,
|
|
required String name,
|
|
String? description,
|
|
@JsonKey(name: 'display_order') int? displayOrder,
|
|
@JsonKey(name: 'is_active') @Default(true) bool isActive,
|
|
Map<String, dynamic>? metadata,
|
|
}) = _LookupItem;
|
|
|
|
factory LookupItem.fromJson(Map<String, dynamic> json) =>
|
|
_$LookupItemFromJson(json);
|
|
} |