bugger/Sources/Models/AppConfig.swift

49 lines
1.6 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 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
}
}