feat: llm 翻译节点打印分批进度与 token 处理速度日志

翻译节点 translate_lines 分批调用 LLM 时补充可观测日志:
- 任务开始打印总行数与总批数;每完成一批打印总进度(已完成/总行数、
  第几批/共几批、批耗时、累计耗时与行/s),结束打印汇总(总耗时、
  累计 tokens、tok/s 与行/s),便于评估 LLM 处理速度;
- _call_llm 解析响应 usage(total_tokens),每次请求打印单批耗时与
  token/s(接口不返回 usage 时按 0 处理);
- _translate_batch 改为返回(译文, 本批 tokens),供累计汇总;
- 补充空输入直接返回的单测,保持 100% 行覆盖率。
This commit is contained in:
2026-09-06 13:57:44 +08:00
parent 6a265a1bc8
commit fbcb5115d8
2 changed files with 89 additions and 14 deletions
+9
View File
@@ -520,6 +520,15 @@ def test_llm_translate_lines_via_fake_api(monkeypatch) -> None:
thread.join(timeout=5)
def test_llm_translate_lines_empty_input() -> None:
"""验证空行列表直接返回空译文,不发起任何 LLM 请求。
翻译开始前对空输入提前返回:没有字幕行时无需计算批数、也无需调用
接口(避免无谓请求与除零等边界问题),同时保持返回类型为列表。"""
result = translate_lines([], {})
assert result == []
def test_llm_translate_lines_api_error(monkeypatch) -> None:
"""验证 LLM 接口不可用时抛出 URLError。"""
def fail_open(request, timeout):