import Foundation /// 章节级位置模型——单章内的精确定位 /// 取代旧版 RDEPUBLocation 的全局 progression 方式 public struct RDEPUBChapterLocation: Codable, Equatable { /// 章节在 spine 中的索引 public var spineIndex: Int /// 章内字符偏移(从章首算起,0-based) public var chapterOffset: Int /// HTML fragment ID(如章节内锚点 #section1) public var fragmentID: String? /// 章内 progression(可选,fragmentID 优先时为 nil) public var progressionInChapter: Double? /// schema 版本:1=粗估降级, 2=精确值 public var schemaVersion: Int public init( spineIndex: Int, chapterOffset: Int, fragmentID: String? = nil, progressionInChapter: Double? = nil, schemaVersion: Int = 2 ) { self.spineIndex = spineIndex self.chapterOffset = chapterOffset self.fragmentID = fragmentID.flatMap { $0.isEmpty ? nil : $0 } self.progressionInChapter = progressionInChapter self.schemaVersion = schemaVersion } /// 粗估结果标记:schemaVersion == 1 表示 chapterOffset 由 progression 粗估得来 var isFallbackEstimate: Bool { schemaVersion == 1 } }