feat: show title generation wait timer
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user