desktop/src-tauri/crates/core/src/adapters/jsonl.rs
第 1 条注释,第 1 行
desktop/src-tauri/crates/core/src/adapters/jsonl.rs:1
//! 有界 JSONL 读取器(V07)。第 2 条注释,第 2 行
desktop/src-tauri/crates/core/src/adapters/jsonl.rs:2
//!(空行)第 3 条注释,第 3 行
desktop/src-tauri/crates/core/src/adapters/jsonl.rs:3
//! 约定(architecture.md「各输入的增量策略」):第 4 条注释,第 4 行
desktop/src-tauri/crates/core/src/adapters/jsonl.rs:4
//! - 游标 = 文件身份 + generation + 完整行字节偏移 + 解析上下文;第 5 条注释,第 5 行
desktop/src-tauri/crates/core/src/adapters/jsonl.rs:5
//! - 默认单行上限 8 MiB、单块 4 MiB(允许跨块组装行);超限不静默丢弃,第 6 条注释,第 6 行
desktop/src-tauri/crates/core/src/adapters/jsonl.rs:6
//! 状态显示位置与原因,允许受控重试;第 7 条注释,第 7 行
desktop/src-tauri/crates/core/src/adapters/jsonl.rs:7
//! - 半行留待下次(游标不前移);跨块 UTF-8 正确组装;跳过 UTF-8 BOM;第 8 条注释,第 8 行
desktop/src-tauri/crates/core/src/adapters/jsonl.rs:8
//! - 坏行隔离:诊断只存错误码与位置(行号/字节偏移),不复制原始行内容;第 9 条注释,第 9 行
desktop/src-tauri/crates/core/src/adapters/jsonl.rs:9
//! - 截断/同大小替换/改名时重探测;变更检测不限于文件长度。第 10 条注释,第 14 行
desktop/src-tauri/crates/core/src/adapters/jsonl.rs:14
/// 单行上限初值 8 MiB。第 11 条注释,第 16 行
desktop/src-tauri/crates/core/src/adapters/jsonl.rs:16
/// 单块上限初值 4 MiB。第 12 条注释,第 18 行
desktop/src-tauri/crates/core/src/adapters/jsonl.rs:18
/// 身份采样字节数(首/尾各取这么多做内容指纹)。第 13 条注释,第 22 行
desktop/src-tauri/crates/core/src/adapters/jsonl.rs:22
/// 读取限制。`max_lines` 是确定性行数上限(测试与受控重试用);第 14 条注释,第 23 行
desktop/src-tauri/crates/core/src/adapters/jsonl.rs:23
/// `time_budget` 是墙钟超时(单源每轮 30 秒初值)。第 15 条注释,第 43 行
desktop/src-tauri/crates/core/src/adapters/jsonl.rs:43
/// 一条完整行(含字节位置;`end` 为行终止符之后的偏移)。第 16 条注释,第 52 行
desktop/src-tauri/crates/core/src/adapters/jsonl.rs:52
/// 坏行诊断(无正文)。第 17 条注释,第 60 行
desktop/src-tauri/crates/core/src/adapters/jsonl.rs:60
/// 读取停止原因。第 18 条注释,第 63 行
desktop/src-tauri/crates/core/src/adapters/jsonl.rs:63
/// 读到当前文件尾。第 19 条注释,第 65 行
desktop/src-tauri/crates/core/src/adapters/jsonl.rs:65
/// 某完整行超过单行上限:游标停在该行起点,可受控重试(提高上限)。第 20 条注释,第 67 行
desktop/src-tauri/crates/core/src/adapters/jsonl.rs:67
/// 达到确定性行数或字节上限。第 21 条注释,第 69 行
desktop/src-tauri/crates/core/src/adapters/jsonl.rs:69
/// 达到墙钟超时时间。第 22 条注释,第 73 行
desktop/src-tauri/crates/core/src/adapters/jsonl.rs:73
/// 一次增量读取的结果。第 23 条注释,第 78 行
desktop/src-tauri/crates/core/src/adapters/jsonl.rs:78
/// 下一 unread 偏移(最后一条完整行之后;半行不前移)。第 24 条注释,第 80 行
desktop/src-tauri/crates/core/src/adapters/jsonl.rs:80
/// 下一行号(1 起始)。第 25 条注释,第 82 行
desktop/src-tauri/crates/core/src/adapters/jsonl.rs:82
/// 半行字节数(留待下次)。第 26 条注释,第 87 行
desktop/src-tauri/crates/core/src/adapters/jsonl.rs:87
/// 从 `start_offset`(完整行边界)读取 JSONL。`first_line_number` 为该偏移处的行号。第 27 条注释,第 119 行
desktop/src-tauri/crates/core/src/adapters/jsonl.rs:119
// 起点为 0 时跳过 BOM;BOM 不计入行内容但计入字节偏移。第 28 条注释,第 159 行
desktop/src-tauri/crates/core/src/adapters/jsonl.rs:159
// EOF:carry 中的残余是半行,留待下次。第 29 条注释,第 166 行
desktop/src-tauri/crates/core/src/adapters/jsonl.rs:166
// 逐条提取完整行;0x0A 不会出现在 UTF-8 多字节序列内,按字节切分安全。第 30 条注释,第 215 行
desktop/src-tauri/crates/core/src/adapters/jsonl.rs:215
// 无换行符的残余:若已超过单行上限,同样按超长行处理(不等待它继续增长)。第 31 条注释,第 237 行
desktop/src-tauri/crates/core/src/adapters/jsonl.rs:237
/// 文件身份探测:长度、mtime、创建时间与首/尾采样指纹。变更检测不限于长度。第 32 条注释,第 243 行
desktop/src-tauri/crates/core/src/adapters/jsonl.rs:243
/// 首采样指纹(采样长度 `head_len`)。第 33 条注释,第 245 行
desktop/src-tauri/crates/core/src/adapters/jsonl.rs:245
/// 首采样长度:len >= 4096 时固定 4096;小文件为当前长度(增长后不可比)。第 34 条注释,第 296 行
desktop/src-tauri/crates/core/src/adapters/jsonl.rs:296
/// 已存储的扫描状态(source_files 行 + 游标)。第 35 条注释,第 303 行
desktop/src-tauri/crates/core/src/adapters/jsonl.rs:303
/// 首采样长度:与探测值不一致时首指纹不可比(小文件增长跨过采样边界)。第 36 条注释,第 309 行
desktop/src-tauri/crates/core/src/adapters/jsonl.rs:309
/// 判断文件能否续读,或是否需创建新的文件 generation。第 37 条注释,第 312 行
desktop/src-tauri/crates/core/src/adapters/jsonl.rs:312
/// 同一 generation:未变化或仅追加内容时从游标继续。第 38 条注释,第 314 行
desktop/src-tauri/crates/core/src/adapters/jsonl.rs:314
/// 文件被替换/截断/重建:generation+1 从头重扫,解析上下文作废。第 39 条注释,第 318 行
desktop/src-tauri/crates/core/src/adapters/jsonl.rs:318
/// 比较存储状态与当前探测。身份要点:创建时间变化 → 新文件;第 40 条注释,第 319 行
desktop/src-tauri/crates/core/src/adapters/jsonl.rs:319
/// 长度小于游标表示截断;可比首指纹变化或同长尾指纹变化表示替换。第 41 条注释,第 320 行
desktop/src-tauri/crates/core/src/adapters/jsonl.rs:320
/// 小文件增长导致采样长度变化时,改按创建时间和长度单调性判断。第 42 条注释,第 339 行
desktop/src-tauri/crates/core/src/adapters/jsonl.rs:339
/// JSONL 游标(持久化在 ingestion_checkpoints.cursor_value)。第 43 条注释,第 370 行
desktop/src-tauri/crates/core/src/adapters/jsonl.rs:370
// 小文件增长:首采样长度变化,指纹不可比,但创建时间一致且长度递增 → 追加。