62 lines · 2.1 KB · Swift
RawDownload
import Foundation extension MiniMaxUsageParser {    static func mapModelNameToServiceType(modelName: String) -> String {        let lower = modelName.trimmingCharacters(in: .whitespacesAndNewlines).lowercased()        if lower == "general" || lower == "video" {            return lower        }         // Legacy text model names are separate from Token Plan's `general` bucket.        if self.isTextGenerationModelName(modelName) {            return "Text Generation"        }         // Text to Speech (语音合成): speech-hd, Speech 2.8, etc.        if lower.contains("speech") {            return "Text to Speech"        }         // Image to Video Fast (图生视频 Fast): Hailuo-2.3-Fast        if lower.contains("hailuo"), lower.contains("fast") {            return "Image to Video"        }         // Text to Video (文生视频): Hailuo-2.3 (non-Fast)        if lower.contains("hailuo") {            return "Text to Video"        }         // Image Generation (图像生成): image-01, image-02, etc.        if lower.hasPrefix("image-") {            return "Image Generation"        }         // Music Generation (音乐生成): music-2.5, etc.        if lower.contains("music") {            return "Music Generation"        }         return modelName    }     static func isTextGenerationModelName(_ modelName: String) -> Bool {        let lower = modelName.lowercased()        return lower == "general" || lower.contains("minimax-m") || lower.hasPrefix("m2.")    }     static func shouldRenderWeeklyWindow(for modelName: String) -> Bool {        self.isTextGenerationModelName(modelName)    }     static func formatMiniMaxDateTimeRange(startTime: Date?, endTime: Date?) -> String? {        guard let startTime, let endTime else { return nil }        let formatter = DateFormatter()        formatter.locale = Locale(identifier: "en_US_POSIX")        formatter.timeZone = TimeZone(identifier: "Asia/Shanghai")        formatter.dateFormat = "MM/dd HH:mm"        let start = formatter.string(from: startTime)        let end = formatter.string(from: endTime)        return "\(start) - \(end)(UTC+8)"    }}