{% extends "base.html" %} {% block title %}{{ name }} — News Harvester{% endblock %} {% block extra_head %} {% if auto_refresh %} {% endif %} {% endblock %} {% block content %} {# ── 页头:源名 + 状态 + 排期 ───────────────────────────── #}
Session: {{ log_info.session }} {% if log_info.get('turns') %} · Turns {{ log_info.get('turns') }}{% endif %} {% if json_meta and json_meta.get('duration_api') %} · API {{ json_meta.duration_api }} ms{% endif %}
{% endif %} {# ── 采集结果 ──────────────────────────────────────────── #} {% if business_result %}{{ failure.type }} · {{ failure.message }} {% if failure.url %}({{ failure.url }}){% endif %}
{% endfor %} {% for warning in business_result.warnings %}提示:{{ warning }}
{% endfor %} {% if business_result.source_exhausted %}已无更多新文章:{{ business_result.exhaustion_reason }}
{% endif %}| 文章 | 状态 | 正文长度 | 分类 / 标签 | 失败原因 |
|---|---|---|---|---|
{% if article.url.startswith('https://') or article.url.startswith('http://') %}{{ article.title or article.url }}{% else %}{{ article.title }}{% endif %}
预览归档原文与属性{% if archive.get('loaded') %}{{ archive.get('body', '') }}
查看 Obsidian 属性{{ archive_props | tojson(indent=2) }}{{ article.summary | default('') }} {{ article.body }}
{% else %}未能读取归档原文{% if archive.get('error') %}:{{ archive.error }}{% endif %} {% endif %}归档:{{ article.archive_path or '未归档' }} |
{{ '成功' if article.status == 'SUCCESS' else '失败' }} | {% if archive.get('body_length') is not none %}{{ archive.body_length }} 字符{% elif article.body_length is defined %}{{ article.body_length }} 字符{% else %}—{% endif %} | {{ archive_props.get('category', article.category | default('')) }} {{ archive_props.get('tags', article.tags | default([])) | join(' · ') }} |
{{ article.failure_type or '—' }}{% if article.failure_reason %} {{ article.failure_reason }}{% endif %}{% for evidence in article.quality_evidence %}{% if evidence != article.failure_reason %} {{ evidence }}{% endif %}{% endfor %} |
{{ business_result | tojson(indent=2) }}此记录使用旧版文本格式,未经过新版正文质量核验。
{{ legacy_result }}
{% endif %}
{# ── 历史执行记录(高频,提前) ──────────────────────────── #}
| 运行时间 | 类型 | 状态 | 文章(成功 / 失败 / 目标) | Provider | 耗时 | |
|---|---|---|---|---|---|---|
{{ run.run_at }} |
{{ run.mode }} | {{ '成功' if run.status == 'SUCCESS' else '失败' if run.status == 'FAILED' else '旧版记录' if run.status == 'LEGACY' else run.status }} | {% if run.requested_count is not none %}{{ run.succeeded_count }} / {{ run.failed_count }} / {{ run.requested_count }}{% else %}—{% endif %} | {{ run.provider }} | {{ run.duration }} | 查看 |
暂无历史执行记录
{% endif %} {# ── 次要操作 ──────────────────────────────────────────── #} {# ── 折叠区:日志 / Claude 明细 / 配置 ───────────────────── #} {% if log_info %}{{ log_info.raw }}
| 类型 | Token 数 |
|---|---|
{{ k }} | {{ v }} |
{{ json_meta.permission_denials | tojson(indent=2) }}
{% endif %}
来源: {{ json_info.path }}
{{ k }} | {{ v }} |
无独立配置,继承 default.conf