feat: color title wait status

This commit is contained in:
2026-07-04 17:04:23 +08:00
parent b5f289fddd
commit 92fa48bb01
4 changed files with 59 additions and 8 deletions
+16 -8
View File
@@ -55,7 +55,12 @@ logger = logging.getLogger(__name__)
_RESOLUTIONS = ["512", "1K", "2K", "4K"]
_QUALITIES = ["小文件", "均衡", "高清"]
_COLS = ["行", "标题", "货号", "衣服图", "状态", "结果 / 原因"]
_TITLE_WAIT_COLORS = {
"waiting": "#0078d4", # 信息蓝:请求已发出,等待模型返回
"writing": "#107c10", # 完成绿:已拿到标题,正在写回 Excel
"success": "#107c10",
"error": "#c42b1c",
}
# ---------------------------------------------------------------------------
# Background worker
@@ -1027,7 +1032,7 @@ class AiOutfitPanel(QWidget):
def _on_title_progress(self, completed, total, result):
if self._title_wait_timer.isActive():
self._title_wait_timer.stop()
self._set_title_wait_text("写入中 {}/{}".format(completed, total))
self._set_title_wait_text("写入中 {}/{}".format(completed, total), "writing")
row = self._row_to_table.get(result.task.row_index)
if row is not None:
@@ -1046,9 +1051,9 @@ class AiOutfitPanel(QWidget):
def _on_title_finished(self, success, fail):
self._set_title_running(False)
if fail:
self._finish_title_wait("完成 {} 条,失败 {}".format(success, fail))
self._finish_title_wait("完成 {} 条,失败 {}".format(success, fail), "error")
else:
self._finish_title_wait("完成 {} 条".format(success))
self._finish_title_wait("完成 {} 条".format(success), "success")
msg = "标题生成结束:成功 {},失败 {}".format(success, fail)
self._append_log(msg)
self._reload_after_titles()
@@ -1061,7 +1066,7 @@ class AiOutfitPanel(QWidget):
def _on_title_failed(self, message):
self._set_title_running(False)
self._finish_title_wait("生成失败")
self._finish_title_wait("生成失败", "error")
self._append_log("标题生成无法开始:" + message)
QMessageBox.warning(self, "无法开始", message)
@@ -1115,13 +1120,15 @@ class AiOutfitPanel(QWidget):
self._format_wait_seconds(elapsed),
self._format_wait_seconds(self._title_wait_limit_seconds)))
def _set_title_wait_text(self, text):
def _set_title_wait_text(self, text, tone="waiting"):
self._title_wait_label.setText(str(text))
color = _TITLE_WAIT_COLORS.get(tone, _TITLE_WAIT_COLORS["waiting"])
self._title_wait_label.setStyleSheet("color:{};".format(color))
self._title_wait_label.setVisible(bool(text))
def _finish_title_wait(self, text):
def _finish_title_wait(self, text, tone="success"):
self._title_wait_timer.stop()
self._set_title_wait_text(text)
self._set_title_wait_text(text, tone)
token = self._title_wait_generation
QTimer.singleShot(4000, lambda: self._reset_title_wait_label(token))
@@ -1130,6 +1137,7 @@ class AiOutfitPanel(QWidget):
return
self._title_wait_timer.stop()
self._title_wait_label.clear()
self._title_wait_label.setStyleSheet("")
self._title_wait_label.setVisible(False)
def _format_wait_seconds(self, seconds):