feat: show title generation wait timer

This commit is contained in:
2026-07-04 16:47:12 +08:00
parent 58343ce4d6
commit b5f289fddd
3 changed files with 135 additions and 12 deletions
+50
View File
@@ -3,6 +3,7 @@ import os
import shutil
import sys
import tempfile
import time
import unittest
from pathlib import Path
@@ -114,6 +115,55 @@ class TestAiOutfitPanelDefaults(unittest.TestCase):
self.assertEqual(panel._title_prompt_edit.toPlainText(), DEFAULT_TITLE_PROMPT)
def test_title_wait_label_defaults_hidden(self):
panel = self._panel()
self.assertTrue(hasattr(panel, "_title_wait_label"))
self.assertTrue(panel._title_wait_label.isHidden())
self.assertEqual(panel._title_wait_label.text(), "")
def test_title_wait_timer_formats_elapsed_and_limit(self):
panel = self._panel()
panel._start_title_wait_timer(600)
panel._title_wait_started_at = time.monotonic() - 95
panel._refresh_title_wait_label()
self.assertFalse(panel._title_wait_label.isHidden())
self.assertEqual(panel._title_wait_label.text(), "等待中 01:35 / 10:00")
self.assertTrue(panel._title_wait_timer.isActive())
panel._reset_title_wait_label()
def test_title_wait_limit_uses_model_timeout_override(self):
from services.ai_image_service import AiModelConfig
panel = self._panel()
default_cfg = AiModelConfig(
url="https://r/v1/chat/completions", model="m", api_key="sk",
api_type="chat", timeout_seconds=0, connect_timeout_seconds=30)
override_cfg = AiModelConfig(
url="https://r/v1/chat/completions", model="m", api_key="sk",
api_type="chat", timeout_seconds=120, connect_timeout_seconds=30)
self.assertEqual(panel._title_wait_limit_for_model(default_cfg), 600)
self.assertEqual(panel._title_wait_limit_for_model(override_cfg), 120)
def test_title_progress_switches_wait_label_to_writing(self):
from core.models import OutfitTask, TitleResult
panel = self._panel()
task = OutfitTask(row_index=2, title="", product_id="SKU", garment_path="a.png")
panel._populate_table([task])
panel._start_title_wait_timer(600)
panel._on_title_progress(
1, 3, TitleResult(task=task, success=True, generated_title="新标题"))
self.assertFalse(panel._title_wait_timer.isActive())
self.assertFalse(panel._title_wait_label.isHidden())
self.assertEqual(panel._title_wait_label.text(), "写入中 1/3")
panel._reset_title_wait_label()
def test_prompt_buttons_save_row_insert_title_and_preview(self):
"""§19.20: 按钮行含「保存」;编辑框下方保留「插入标题」+「预览最终提示词」。"""
from PySide6.QtWidgets import QPushButton