Skip to content

Latest commit

 

History

History
20 lines (13 loc) · 1.93 KB

File metadata and controls

20 lines (13 loc) · 1.93 KB

v0.17.1:bug 修复小版本——知识补充轨迹报错 + 笔记级精修卡住

状态:已交付(2026-09-01) 依据:用户报障——①笔记页知识扩展报错 Invalid column type Null at index: 0, name: trajectory_json;②笔记页使用 AI 精修长时间卡在处理页面

根因与修复

# 位置 根因 影响 修复
1 db_ai_tasks.rs get_ai_task_trajectory 行存在但 trajectory_json 列值为 NULL(旧任务/失败任务/轨迹未写入)时,row.get::<String> 因 rusqlite 严格类型检查抛 Invalid column type Null(v0.16.0 预存缺陷;测试仅覆盖"无行→None",漏"行存在列 NULL"分支) AI 对话页「AI 任务」查看轨迹(含知识补充任务)即报错,任务视图不可用 改 Option<String> 读取 + 双层 Option 拍平(列 NULL 与无行同语义→诚实 None);补回归测试(行存在列为 NULL → Ok(None))
2 components/NoteAiDialog.tsx 误用本地自建 taskIdRef,从未设置 useAiTaskPolling 内部的 taskIdRef.current(事件通道过滤与派发参数的数据源)→ 轮询/事件均以 taskId=null 派发 → ai_refine_result 反序列化失败被 .catch(() => null) 吞掉 → running 永不翻转;且任务推进到 Running 会不断刷新"30s 卡住检测"时间戳 → 卡住提示永不触发 笔记级精修(手写笔记)完成后无限"精修中/处理中",工作台不可达 改用 hook 返回的 taskIdRef(发起/重生成统一赋值——与 AiRefineCard/EnrichPanel 同模式);防御:结果取回失败不再静默(提示到 AI 对话页查看)

验证

  • Rust:新增回归测试(NULL 列 → None)通过;全量 1880/1882 通过(仅 2 例 note_filter 预存失败 TD-30-B)
  • 前端:vitest 64 文件 496 用例全绿;tsc 零错误

关联

  • 此前交付:v0.17.0(REQ-245~247,精修可到达度)