feat: add concurrency safety, caption detection, admin enhancements, and performance improvements

This commit is contained in:
2026-06-14 22:20:02 +08:00
parent 8f13c31991
commit 29fb20828e
23 changed files with 1782 additions and 114 deletions
+16
View File
@@ -109,6 +109,22 @@
<span class="summary-stat summary-stat-failed">失败 <strong>{{ summary_failed or 0 }}</strong></span>
<span class="summary-stat summary-stat-done">已完成 <strong>{{ summary_done or 0 }}</strong></span>
</div>
{% if failure_breakdown %}
<div class="summary-dist" style="margin-top:12px;">
<h3 class="section-subtitle">失败原因分布({{ summary_failed or 0 }} 篇)</h3>
<div class="summary-dist-bars">
{% set fb_total = (failure_breakdown | map(attribute='count') | sum) or 1 %}
{% set error_labels = {"pdf_download_failed":"PDF下载失败","timeout":"超时","process_error":"进程错误","json_not_found":"JSON缺失","json_invalid":"JSON无效","field_missing":"字段缺失","schema_error":"结构错误","unknown":"未分类"} %}
{% for item in failure_breakdown %}
<div class="dist-row">
<span class="dist-label">{{ error_labels.get(item.error_type, item.error_type) }}</span>
<div class="dist-bar-wrap"><div class="dist-bar dist-bar-failed" style="width:{{ (item.count / fb_total * 100)|round(1) }}%"></div></div>
<span class="dist-count">{{ item.count }}</span>
</div>
{% endfor %}
</div>
</div>
{% endif %}
<div id="summary-list"
hx-get="/admin/summary-status"
hx-trigger="load"