feat(collect): show skipped reason summaries

This commit is contained in:
chengma
2026-07-13 14:31:58 +08:00
parent a7ac8522bf
commit 0a3a6b99a1
7 changed files with 239 additions and 15 deletions
+10 -1
View File
@@ -8,6 +8,7 @@ import threading
import time
from .. import image_studio, image_studio_export, image_studio_generation, image_studio_images
from ..collect_skip import ALIAS_UNMATCHED, LOGIN_REQUIRED, empty_skip_reason_counts
from .widgets import *
@@ -1623,6 +1624,7 @@ class CollectWorker(BaseWorker):
login_skip_reasons = {}
login_required_accounts = {}
preflight_info = {}
skip_reason_counts = empty_skip_reason_counts()
self._run_id = self._create_run_log(eligible, batch_ids)
self._log_run_event(
@@ -1642,7 +1644,10 @@ class CollectWorker(BaseWorker):
failed=failed,
batch_ids=batch_ids,
blocked=True,
extra=blocked,
extra={
**blocked,
"skip_reason_counts": dict(skip_reason_counts),
},
)
self._finish_run_log("blocked", summary)
return summary
@@ -1665,6 +1670,7 @@ class CollectWorker(BaseWorker):
account = account_by_alias.get(str(task.alias).strip())
if account is None:
skipped += 1
skip_reason_counts[ALIAS_UNMATCHED] += 1
done += 1
reason = "别名未匹配账号"
db.mark_skipped(task.id, reason, path=self.db_path)
@@ -1684,6 +1690,7 @@ class CollectWorker(BaseWorker):
alias = str(task.alias).strip()
if alias in login_skip_reasons:
skipped += 1
skip_reason_counts[LOGIN_REQUIRED] += 1
done += 1
reason = login_skip_reasons[alias]
db.mark_skipped(task.id, reason, path=self.db_path)
@@ -1704,6 +1711,7 @@ class CollectWorker(BaseWorker):
if self._is_definitive_logged_out(status):
alias = str(task.alias).strip()
skipped += 1
skip_reason_counts[LOGIN_REQUIRED] += 1
done += 1
reason = self._midrun_login_skip_reason(status)
login_skip_reasons[alias] = reason
@@ -1840,6 +1848,7 @@ class CollectWorker(BaseWorker):
extra={
**preflight_info,
"login_required_accounts": list(login_required_accounts.values()),
"skip_reason_counts": dict(skip_reason_counts),
},
)
self._finish_run_log("cancelled" if self.should_cancel() else "done", summary)