@@ -28,6 +28,10 @@ pub struct AiTaskRecord {
2828 pub ref_id : i64 ,
2929 /// 状态(pending|running|succeeded|failed|partial_failed)
3030 pub state : String ,
31+ /// 目标类别(v0.17.0 审查修复:session=会话级精修 | note=笔记级精修/补充;
32+ /// NULL=旧数据(展示层按 session 语义兜底——后端不猜,防双入口错跳)
33+ #[ serde( default ) ]
34+ pub target_kind : Option < String > ,
3135 /// 成功结果 JSON(AiRefineResult/AiEnrichResult;失败/进行中 NULL)
3236 pub result_json : Option < String > ,
3337 /// 成本(元;采纳落库后回填)
@@ -61,6 +65,7 @@ impl Db {
6165 error TEXT,
6266 slices INTEGER,
6367 trajectory_json TEXT,
68+ target_kind TEXT,
6469 created_at INTEGER NOT NULL,
6570 finished_at INTEGER,
6671 adopted INTEGER NOT NULL DEFAULT 0
@@ -77,6 +82,14 @@ impl Db {
7782 "trajectory_json" ,
7883 "ALTER TABLE ai_tasks ADD COLUMN trajectory_json TEXT" ,
7984 ) ?;
85+ // v0.17.0 审查修复:目标类别列(session|note——双入口错跳修复)。
86+ // 幂等迁移;旧数据 NULL(展示层按 session 语义兜底——不猜)。
87+ crate :: db_migrations:: ensure_column (
88+ & conn,
89+ "ai_tasks" ,
90+ "target_kind" ,
91+ "ALTER TABLE ai_tasks ADD COLUMN target_kind TEXT" ,
92+ ) ?;
8093 Ok ( ( ) )
8194 }
8295
@@ -86,8 +99,8 @@ impl Db {
8699 conn. execute (
87100 "INSERT OR REPLACE INTO ai_tasks
88101 (task_id, op_type, ref_id, state, result_json, cost_yuan, elapsed_ms,
89- model, error, slices, created_at, finished_at, adopted)
90- VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13)" ,
102+ model, error, slices, target_kind, created_at, finished_at, adopted)
103+ VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14 )" ,
91104 params ! [
92105 rec. task_id as i64 ,
93106 rec. op_type,
@@ -99,6 +112,7 @@ impl Db {
99112 rec. model,
100113 rec. error,
101114 rec. slices. map( |s| s as i64 ) ,
115+ rec. target_kind. as_deref( ) ,
102116 rec. created_at,
103117 rec. finished_at,
104118 rec. adopted as i64 ,
@@ -188,7 +202,7 @@ impl Db {
188202 let conn = self . conn . lock ( ) . unwrap_or_else ( |e| e. into_inner ( ) ) ;
189203 let mut stmt = conn. prepare (
190204 "SELECT task_id, op_type, ref_id, state, result_json, cost_yuan, elapsed_ms,
191- model, error, slices, created_at, finished_at, adopted
205+ model, error, slices, target_kind, created_at, finished_at, adopted
192206 FROM ai_tasks
193207 WHERE state='succeeded' AND adopted=0 AND result_json IS NOT NULL
194208 ORDER BY created_at DESC LIMIT ?1" ,
@@ -207,7 +221,7 @@ impl Db {
207221 let conn = self . conn . lock ( ) . unwrap_or_else ( |e| e. into_inner ( ) ) ;
208222 let mut stmt = conn. prepare (
209223 "SELECT task_id, op_type, ref_id, state, result_json, cost_yuan, elapsed_ms,
210- model, error, slices, created_at, finished_at, adopted
224+ model, error, slices, target_kind, created_at, finished_at, adopted
211225 FROM ai_tasks
212226 WHERE op_type='refine' AND ref_id=?1 AND state='succeeded'
213227 AND adopted=0 AND result_json IS NOT NULL
@@ -225,7 +239,7 @@ impl Db {
225239 let conn = self . conn . lock ( ) . unwrap_or_else ( |e| e. into_inner ( ) ) ;
226240 let mut stmt = conn. prepare (
227241 "SELECT task_id, op_type, ref_id, state, result_json, cost_yuan, elapsed_ms,
228- model, error, slices, created_at, finished_at, adopted
242+ model, error, slices, target_kind, created_at, finished_at, adopted
229243 FROM ai_tasks
230244 WHERE op_type=?1
231245 ORDER BY created_at DESC LIMIT ?2" ,
@@ -239,7 +253,7 @@ impl Db {
239253 let conn = self . conn . lock ( ) . unwrap_or_else ( |e| e. into_inner ( ) ) ;
240254 let mut stmt = conn. prepare (
241255 "SELECT task_id, op_type, ref_id, state, result_json, cost_yuan, elapsed_ms,
242- model, error, slices, created_at, finished_at, adopted
256+ model, error, slices, target_kind, created_at, finished_at, adopted
243257 FROM ai_tasks WHERE task_id=?1" ,
244258 ) ?;
245259 let mut rows = stmt. query_map ( params ! [ task_id as i64 ] , map_record) ?;
@@ -280,9 +294,10 @@ fn map_record(row: &rusqlite::Row<'_>) -> rusqlite::Result<AiTaskRecord> {
280294 model : row. get ( 7 ) ?,
281295 error : row. get ( 8 ) ?,
282296 slices : row. get :: < _ , Option < i64 > > ( 9 ) ?. map ( |v| v as usize ) ,
283- created_at : row. get ( 10 ) ?,
284- finished_at : row. get ( 11 ) ?,
285- adopted : row. get :: < _ , i64 > ( 12 ) ? != 0 ,
297+ target_kind : row. get ( 10 ) ?,
298+ created_at : row. get ( 11 ) ?,
299+ finished_at : row. get ( 12 ) ?,
300+ adopted : row. get :: < _ , i64 > ( 13 ) ? != 0 ,
286301 } )
287302}
288303
0 commit comments