- 매장 선택 → 연/월 → 월 캘린더(날짜별 제품 사진 썸네일) → 날짜 상세 플로우로 전면 재작성 - 스캔 플로우: 촬영 → 재촬영/사용 → 그 달 날짜만 선택 → 저장 후 카메라 자동 복귀 (손전등 지원) - 날짜 상세 다중 선택 삭제 (전체 선택/해제 + 일괄 삭제 확인) - 다크 전용 민트 테마, SwiftData 모델(Store ↔ ProductRecord, 원본+썸네일 분리 저장) - 밝은 민트 앱 아이콘(SVG 원본 포함) + 런치 스크린/인앱 스플래시 - CLAUDE.md 새 구조 기준으로 재작성 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
38 lines
817 B
Swift
38 lines
817 B
Swift
import Foundation
|
|
import SwiftData
|
|
|
|
@Model
|
|
final class Store {
|
|
var name: String
|
|
var createdAt: Date
|
|
|
|
@Relationship(deleteRule: .cascade, inverse: \ProductRecord.store)
|
|
var records: [ProductRecord] = []
|
|
|
|
init(name: String) {
|
|
self.name = name
|
|
self.createdAt = .now
|
|
}
|
|
}
|
|
|
|
@Model
|
|
final class ProductRecord {
|
|
/// 유통기한 날짜 (자정으로 정규화)
|
|
var expiryDate: Date
|
|
var createdAt: Date
|
|
|
|
@Attribute(.externalStorage)
|
|
var imageData: Data
|
|
var thumbnailData: Data
|
|
|
|
var store: Store?
|
|
|
|
init(expiryDate: Date, imageData: Data, thumbnailData: Data, store: Store?) {
|
|
self.expiryDate = expiryDate
|
|
self.createdAt = .now
|
|
self.imageData = imageData
|
|
self.thumbnailData = thumbnailData
|
|
self.store = store
|
|
}
|
|
}
|