50 lines
1.7 KiB
Swift
50 lines
1.7 KiB
Swift
import Foundation
|
|
|
|
struct AppConfig: Codable, Equatable {
|
|
var appToken: String = ""
|
|
var tableId: String = ""
|
|
var assigneeName: String = ""
|
|
var fieldMappings: FieldMappings = FieldMappings()
|
|
var pollIntervalSeconds: Int = 300
|
|
var showFloatingWidget: Bool = false
|
|
var launchAtLogin: Bool = true
|
|
var feishuBaseDomain: String = "xorbitlab.feishu.cn"
|
|
|
|
struct FieldMappings: Codable, Equatable {
|
|
var titleField: String = "Title"
|
|
var priorityField: String = "Priority"
|
|
var statusField: String = "Status"
|
|
var assigneeField: String = "Assignee"
|
|
var reporterField: String = "Reporter"
|
|
var customerField: String = "客户名称"
|
|
var createdAtField: String = "Created At"
|
|
var updatedAtField: String = "Updated At"
|
|
|
|
/// Map Feishu display values to standard BugStatus cases.
|
|
/// Keys are the Feishu select-option text; values are the standard status.
|
|
/// Unknown values default to .unknown (shown as active).
|
|
var statusMappings: [String: BugStatus] = [
|
|
"Bug Triage": .open,
|
|
"Open": .open,
|
|
"New": .open,
|
|
"待处理": .open,
|
|
"开发进行中": .inProgress,
|
|
"In Progress": .inProgress,
|
|
"验收中": .inReview,
|
|
"In Review": .inReview,
|
|
"验收完毕": .resolved,
|
|
"Resolved": .resolved,
|
|
"Fixed": .resolved,
|
|
"取消": .closed,
|
|
"Closed": .closed,
|
|
"Won't fix": .closed,
|
|
"转需求": .closed,
|
|
"验收不通过": .closed,
|
|
]
|
|
}
|
|
|
|
var isConfigured: Bool {
|
|
!appToken.isEmpty && !tableId.isEmpty
|
|
}
|
|
}
|