Files
news-tracker/templates/logs.html
T

77 lines
3.3 KiB
HTML

{% extends "base.html" %}
{% set active = 'logs' %}
{% block title %}通知日志 - 新闻智能跟踪{% endblock %}
{% block content %}
<div class="page-head">
<h1>✉️ 通知日志 <span class="muted">共 {{ total }} 条</span></h1>
<div class="actions">
<button class="btn" onclick="testMail()">📮 发送测试邮件</button>
<button class="btn" onclick="testErrorMail()">⚠️ 测试错误通知</button>
</div>
</div>
<form class="filters" method="get" action="/logs">
<select name="type">
<option value="">全部类型</option>
<option value="realtime" {{ 'selected' if f_type=='realtime' }}>🔥 实时重要资讯</option>
<option value="summary" {{ 'selected' if f_type=='summary' }}>📰 新闻汇总</option>
<option value="custom_summary" {{ 'selected' if f_type=='custom_summary' }}>🎯 定制监控汇总</option>
<option value="error" {{ 'selected' if f_type=='error' }}>⚠️ 系统错误</option>
</select>
<select name="status">
<option value="">全部状态</option>
<option value="ok" {{ 'selected' if f_status=='ok' }}>✅ 成功</option>
<option value="error" {{ 'selected' if f_status=='error' }}>❌ 失败</option>
</select>
<input type="text" name="q" value="{{ q }}" placeholder="搜索主题 / 详情...">
<button class="btn" type="submit">筛选</button>
<a class="btn" href="/logs">重置</a>
</form>
<div class="card">
<table>
<thead><tr><th>ID</th><th>类型</th><th>主题</th><th>条数</th><th>状态</th><th>发送时间</th></tr></thead>
<tbody>
{% for l in logs %}
<tr>
<td>{{ l.id }}</td>
<td>
{% if l.type=='realtime' %}<span class="tag hot">🔥 实时</span>
{% elif l.type=='summary' %}<span class="tag ok">📰 新闻汇总</span>
{% elif l.type=='custom_summary' %}<span class="tag">🎯 定制汇总</span>
{% elif l.type=='error' %}<span class="tag err">⚠️ 系统错误</span>
{% else %}<span class="tag">{{ l.type }}</span>{% endif %}
</td>
<td>{{ l.subject }}
{% if l.detail %}<div class="muted small">{{ l.detail }}</div>{% endif %}
</td>
<td>{{ l.count }}</td>
<td>{% if l.status=='ok' %}<span class="tag ok">成功</span>{% else %}<span class="tag err">失败</span>{% endif %}</td>
<td class="small">{{ l.sent_at }}</td>
</tr>
{% else %}
<tr><td colspan="6" class="empty">暂无匹配的通知记录</td></tr>
{% endfor %}
</tbody>
</table>
</div>
<div class="pager">
{% if page > 1 %}<a class="btn" href="/logs?page={{ page-1 }}&type={{ f_type }}&status={{ f_status }}&q={{ q }}">上一页</a>{% endif %}
<span class="muted">第 {{ page }} / {{ pages }} 页</span>
{% if page < pages %}<a class="btn" href="/logs?page={{ page+1 }}&type={{ f_type }}&status={{ f_status }}&q={{ q }}">下一页</a>{% endif %}
</div>
{% endblock %}
{% block script %}
<script>
async function testMail(){
const r = await API.json('/api/actions', {action:'test_mail'});
toast(r.ok ? '✅ 测试邮件已发送' : ('❌ ' + r.error), r.ok);
}
async function testErrorMail(){
const r = await API.json('/api/actions', {action:'test_error_mail'});
toast(r.ok ? '✅ 测试错误通知邮件已发送' : ('❌ ' + r.error), r.ok);
}
</script>
{% endblock %}