feat(gift): 선물 표시 정책을 추가한다

This commit is contained in:
Yu Sung
2026-10-08 12:32:44 +09:00
parent 9b7acc905a
commit 07afa85e21
2 changed files with 269 additions and 0 deletions
@@ -0,0 +1,105 @@
import Foundation
enum GiftDirection: String, Decodable {
case sent = "SENT"
case received = "RECEIVED"
}
enum GiftStatus: String, Decodable, CaseIterable {
case received = "RECEIVED"
case trackingRegistered = "TRACKING_REGISTERED"
case arrivedAtMailbox = "ARRIVED_AT_MAILBOX"
case inspectionCompleted = "INSPECTION_COMPLETED"
case delivered = "DELIVERED"
case undeliverable = "UNDELIVERABLE"
case canceled = "CANCELED"
}
enum GiftProgressStep: String, CaseIterable {
case received = "RECEIVED"
case trackingRegistered = "TRACKING_REGISTERED"
case arrivedAtMailbox = "ARRIVED_AT_MAILBOX"
case inspectionCompleted = "INSPECTION_COMPLETED"
case delivered = "DELIVERED"
var title: String {
switch self {
case .received:
return "신청 접수"
case .trackingRegistered:
return "발송 확인"
case .arrivedAtMailbox:
return "사서함 도착"
case .inspectionCompleted:
return "검수 완료"
case .delivered:
return "전달 완료"
}
}
}
enum GiftSize: String, Decodable {
case small = "SMALL"
case medium = "MEDIUM"
case large = "LARGE"
}
struct GiftListStatusDisplayModel {
let title: String
let subtitle: String?
}
struct GiftListCardDisplayModel {
let applicationNo: String
let direction: GiftDirection
let status: GiftStatus
let counterpartNickname: String
let counterpartProfileImageUrl: String?
let categoryName: String
let sizeName: String
let createdDateText: String?
let statusDisplay: GiftListStatusDisplayModel
}
struct GiftProgressDisplayModel {
let step: GiftProgressStep
let occurredDateText: String?
}
struct GiftAddressDisplayModel {
let name: String
let phoneNumber: String
let address: String
}
struct SentGiftDetailDisplayModel {
let status: GiftStatus
let statusName: String
let undeliverableReason: String?
let recipientCreatorNickname: String?
let sizeName: String
let categoryName: String
let applicationNo: String
let paidCan: Int?
let tracking: String?
let shippingRequestedDateText: String?
let applicationDateText: String?
let canceledDateText: String?
let senderInfo: GiftAddressDisplayModel?
let mailbox: GiftAddressDisplayModel?
let trackingRequired: Bool
let progress: [GiftProgressDisplayModel]
}
struct ReceivedGiftDetailDisplayModel {
let status: GiftStatus
let statusName: String
let undeliverableReason: String?
let senderNickname: String?
let sizeName: String
let categoryName: String
let shippingRequestedDateText: String?
let recipientAddressRequired: Bool
let recipientAddress: GiftAddressDisplayModel?
let progress: [GiftProgressDisplayModel]
}