Commit 57d3275e authored by 郭阔's avatar 郭阔

ui: 移除数据看板'失败原因Top'模块;修复 latest 翻页条重复注入

- dashboard 按用户要求整体移除失败原因模块(模板+聚合代码)
- latest 上一轮分页插入误替换了模板中全部 endblock,翻页条被注入
  标题块/头部块,页面顶部出现多余工具条;只保留内容区末尾一份
  (单页时不显示)
parent eab30c25
......@@ -1325,7 +1325,6 @@ def dashboard():
if skills.get(n, {}).get("enabled", False) or pl.schedule_state(n) == "active")
days = [(now - timedelta(days=i)).strftime("%Y-%m-%d") for i in range(6, -1, -1)]
per_day = {d: {} for d in days}
fail_top = {}
tot = {"arts": 0, "runs": 0, "ok": 0, "warn": 0, "fail": 0, "cost": 0.0,
"today_arts": 0, "today_runs": 0, "today_ok": 0, "today_warn": 0, "today_fail": 0}
rows = []
......@@ -1357,11 +1356,6 @@ def dashboard():
tot["today_arts"] += succ; tot["today_runs"] += 1
tot["today_ok" if status == "SUCCESS" else "today_warn" if status == "WARNING" else "today_fail"] += 1
per_day[day][site] = per_day[day].get(site, 0) + succ
result = data.get("result")
if isinstance(result, dict):
for f in result.get("failures", []):
key = f.get("type", "UNKNOWN")
fail_top[key] = fail_top.get(key, 0) + 1
rows.append(row)
# 图表:按站点堆叠的每日产出
sites = sorted({r["site"] for r in rows if r["d7"] > 0},
......@@ -1396,8 +1390,7 @@ def dashboard():
return render_template("dashboard.html", rows=rows, bars=bars, days=days, grid=grid, chart_axis_max=chart_axis_max,
sites=[(s, SITE_COLORS.get(s, "#8a8f98"),
sum(per_day[d].get(s, 0) for d in days)) for s in sites],
tot=tot, today=today, active=active,
fail_top=sorted(fail_top.items(), key=lambda kv: -kv[1])[:6])
tot=tot, today=today, active=active)
def _articles_from_data(data):
......
......@@ -84,22 +84,6 @@
</div>
</div>
<div style="margin-top:22px">
<h2 style="margin-top:0">失败原因 Top(7 天)</h2>
{% if fail_top %}
<div class="table-wrap">
<table>
<thead><tr><th>类型</th><th>次数</th><th style="width:45%">占比</th></tr></thead>
<tbody>
{% for k, v in fail_top %}
<tr><td><code>{{ k }}</code></td><td>{{ v }}</td>
<td><div style="background:#e05555;border-radius:2px;height:10px;width:{{ (v * 100 / fail_top[0][1])|round }}%"></div></td></tr>
{% endfor %}
</tbody>
</table>
</div>
{% else %}<p style="color:#666">近 7 天无失败记录 🎉</p>{% endif %}
</div>
</div>
{% endblock %}
{% extends "base.html" %}
{% block title %}最近抓取 — News Harvester{% if pages > 1 %}
<div style="display:flex;gap:6px;justify-content:center;align-items:center;margin:16px 0;flex-wrap:wrap">
{% if page > 1 %}<a class="btn btn-sm" href="?page={{ page - 1 }}">← 上一页</a>{% endif %}
{% for p in range(1, pages + 1) %}
{% if p == page %}<span class="btn btn-sm" style="background:#2a3a5a;cursor:default">{{ p }}</span>
{% else %}<a class="btn btn-sm" href="?page={{ p }}">{{ p }}</a>{% endif %}
{% endfor %}
{% if page < pages %}<a class="btn btn-sm" href="?page={{ page + 1 }}">下一页 →</a>{% endif %}
</div>
{% endif %}
{% block title %}最近抓取 — News Harvester
{% endblock %}
{% block extra_head %}
<style>
......@@ -23,16 +13,6 @@
ul.arts li { padding:4px 0; display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
ul.arts li .t { flex:1 1 auto; min-width:200px; }
</style>
{% if pages > 1 %}
<div style="display:flex;gap:6px;justify-content:center;align-items:center;margin:16px 0;flex-wrap:wrap">
{% if page > 1 %}<a class="btn btn-sm" href="?page={{ page - 1 }}">← 上一页</a>{% endif %}
{% for p in range(1, pages + 1) %}
{% if p == page %}<span class="btn btn-sm" style="background:#2a3a5a;cursor:default">{{ p }}</span>
{% else %}<a class="btn btn-sm" href="?page={{ p }}">{{ p }}</a>{% endif %}
{% endfor %}
{% if page < pages %}<a class="btn btn-sm" href="?page={{ page + 1 }}">下一页 →</a>{% endif %}
</div>
{% endif %}
{% endblock %}
{% block content %}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment