Skip to content

Commit ddf3cb6

Browse files
committed
feat(ai): 精修片级耗时埋点(REQ-290 先行)
1 parent 49d8619 commit ddf3cb6

1 file changed

Lines changed: 11 additions & 2 deletions

File tree

‎app/src-tauri/src/ai_refine_task.rs‎

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -511,6 +511,10 @@ pub(crate) fn refine_slices_concurrent(ctx: RefineCtx<'_>) -> (Vec<String>, usiz
511511
let req = &reqs[idx];
512512
let mut outcome: Option<String> = None;
513513
for attempt in 0..=SLICE_RETRY {
514+
// REQ-290(v0.19.6)埋点先行:单片耗时归因——任务级 elapsed_ms
515+
// 已有(db_ai_tasks),此处补片级时间(非流式阶段只有总耗时;
516+
// 流式上线后同点补首 delta 时刻,见批次设计 §2.8 ③)。
517+
let started = std::time::Instant::now();
514518
let resp = if mock {
515519
Ok(mock_adapter.refine(req))
516520
} else if ctx.vision_images.is_empty() {
@@ -521,8 +525,13 @@ pub(crate) fn refine_slices_concurrent(ctx: RefineCtx<'_>) -> (Vec<String>, usiz
521525
.refine_vision(req, ctx.vision_images, Some(dims))
522526
.map_err(AiTaskFailure::from)
523527
};
528+
let elapsed_ms = started.elapsed().as_millis();
524529
match resp {
525530
Ok(r) => {
531+
eprintln!(
532+
"[refine-task] task={} 片 {}/{} attempt={} ok elapsed_ms={}",
533+
task_id, idx + 1, total, attempt + 1, elapsed_ms
534+
);
526535
// REQ-230:成功片记录轨迹(提示词/回答全文——任务对话视图)
527536
turns
528537
.lock()
@@ -537,10 +546,10 @@ pub(crate) fn refine_slices_concurrent(ctx: RefineCtx<'_>) -> (Vec<String>, usiz
537546
break;
538547
}
539548
Err(e) if attempt < SLICE_RETRY => {
540-
eprintln!("[refine-task] task={} 片 {} 第{}次失败,重试: {}", task_id, idx + 1, attempt + 1, e.message());
549+
eprintln!("[refine-task] task={} 片 {} 第{}次失败 elapsed_ms={},重试: {}", task_id, idx + 1, attempt + 1, elapsed_ms, e.message());
541550
}
542551
Err(e) => {
543-
eprintln!("[refine-task] task={} 片 {} 重试后仍失败(保留已成功片): {}", task_id, idx + 1, e.message());
552+
eprintln!("[refine-task] task={} 片 {} 重试后仍失败 elapsed_ms={}(保留已成功片): {}", task_id, idx + 1, elapsed_ms, e.message());
544553
break;
545554
}
546555
}

0 commit comments

Comments
 (0)