98 lines
4.4 KiB
HTML
98 lines
4.4 KiB
HTML
{% extends "base.html" %}
|
|
{% set active = 'settings' %}
|
|
{% block title %}设置 - 新闻智能跟踪{% endblock %}
|
|
{% block content %}
|
|
<div class="page-head">
|
|
<h1>⚙️ 设置</h1>
|
|
<button class="btn accent" onclick="saveAll()">💾 保存设置</button>
|
|
</div>
|
|
|
|
<div class="two-col">
|
|
<section class="card">
|
|
<h3>🕐 自动化</h3>
|
|
<div class="setting-row">
|
|
<label>自动定时采集</label>
|
|
<input type="checkbox" id="s_auto_collect" {{ 'checked' if auto.auto.auto_collect }} onchange="setNum('auto_collect', this)">
|
|
</div>
|
|
<div class="setting-row">
|
|
<label>采集间隔(分钟)</label>
|
|
<input type="number" id="s_scan_interval_min" value="{{ auto.auto.scan_interval_min }}">
|
|
</div>
|
|
<div class="setting-row">
|
|
<label>实时重要资讯邮件</label>
|
|
<input type="checkbox" id="s_realtime_enabled" {{ 'checked' if auto.auto.realtime_enabled }} onchange="setNum('realtime_enabled', this)">
|
|
</div>
|
|
<div class="setting-row">
|
|
<label>实时通知阈值(综合分)</label>
|
|
<input type="number" id="s_realtime_threshold" value="{{ auto.auto.realtime_threshold }}">
|
|
</div>
|
|
<div class="setting-row">
|
|
<label>LLM 深度分析阈值(规则分)</label>
|
|
<input type="number" id="s_llm_threshold" value="{{ auto.auto.llm_threshold }}">
|
|
</div>
|
|
<div class="setting-row">
|
|
<label>每日汇总邮件</label>
|
|
<input type="checkbox" id="s_summary_enabled" {{ 'checked' if auto.auto.summary_enabled }} onchange="setNum('summary_enabled', this)">
|
|
</div>
|
|
<div class="setting-row">
|
|
<label>汇总时间</label>
|
|
<input type="time" id="s_summary_time" value="{{ auto.auto.summary_time }}">
|
|
</div>
|
|
<div class="setting-row">
|
|
<label>汇总窗口(小时)</label>
|
|
<input type="number" id="s_summary_window_hours" value="{{ auto.auto.summary_window_hours }}">
|
|
</div>
|
|
<div class="setting-row">
|
|
<label>汇总邮件最多条目</label>
|
|
<input type="number" id="s_max_summary_items" value="{{ auto.auto.max_summary_items }}">
|
|
</div>
|
|
</section>
|
|
|
|
<section class="card">
|
|
<h3>📮 邮件配置</h3>
|
|
<div class="setting-row"><label>SMTP 服务器</label><input id="m_host" value="{{ auto.mail.smtp_host }}"></div>
|
|
<div class="setting-row"><label>端口</label><input id="m_port" value="{{ auto.mail.smtp_port }}"></div>
|
|
<div class="setting-row"><label>账号</label><input id="m_user" value="{{ auto.mail.smtp_user }}"></div>
|
|
<div class="setting-row"><label>口令</label><input id="m_pass" type="password" value="{{ auto.mail.smtp_pass }}"></div>
|
|
<div class="setting-row">
|
|
<label>加密方式</label>
|
|
<select id="m_mode">
|
|
<option value="plain" {{ 'selected' if auto.mail.smtp_mode=='plain' }}>无加密</option>
|
|
<option value="starttls" {{ 'selected' if auto.mail.smtp_mode=='starttls' }}>STARTTLS</option>
|
|
<option value="ssl" {{ 'selected' if auto.mail.smtp_mode=='ssl' }}>SSL</option>
|
|
</select>
|
|
</div>
|
|
<div class="setting-row"><label>收件人</label><input id="m_to" value="{{ auto.mail.email_to }}"></div>
|
|
<div class="setting-row"><label>发件人名称</label><input id="m_name" value="{{ auto.mail.sender_name }}"></div>
|
|
</section>
|
|
</div>
|
|
{% endblock %}
|
|
{% block script %}
|
|
<script>
|
|
function setNum(key, cb){ /* checkbox 即时记录 */
|
|
}
|
|
async function saveAll(){
|
|
const g = id => document.getElementById(id).value;
|
|
const auto = {
|
|
auto_collect: 1, realtime_enabled: 1, summary_enabled: 1,
|
|
scan_interval_min: parseInt(g('s_scan_interval_min'))||30,
|
|
realtime_threshold: parseInt(g('s_realtime_threshold'))||80,
|
|
llm_threshold: parseInt(g('s_llm_threshold'))||60,
|
|
summary_time: g('s_summary_time')||'10:00',
|
|
summary_window_hours: parseInt(g('s_summary_window_hours'))||24,
|
|
max_summary_items: parseInt(g('s_max_summary_items'))||15,
|
|
};
|
|
auto.auto_collect = document.getElementById('s_auto_collect').checked ? 1 : 0;
|
|
auto.realtime_enabled = document.getElementById('s_realtime_enabled').checked ? 1 : 0;
|
|
auto.summary_enabled = document.getElementById('s_summary_enabled').checked ? 1 : 0;
|
|
const mail = {
|
|
smtp_host: g('m_host'), smtp_port: parseInt(g('m_port'))||587,
|
|
smtp_user: g('m_user'), smtp_pass: g('m_pass'), smtp_mode: g('m_mode'),
|
|
email_to: g('m_to'), sender_name: g('m_name'),
|
|
};
|
|
const r = await API.json('/api/settings', { ...auto, mail });
|
|
toast(r.ok ? '✅ 设置已保存' : '❌ 保存失败', r.ok);
|
|
}
|
|
</script>
|
|
{% endblock %}
|