v1.8.0: 🌙 静默期 - 舆情监控/持仓跟踪/定时报告三大自动化任务独立配置静默时段, 命中时段不发送邮件(多段/跨午夜, 日志标quiet, 水位照常推进不补发积压)

This commit is contained in:
2026-08-20 23:43:02 +08:00
parent 4da5e091a5
commit 9340577f7b
10 changed files with 196 additions and 32 deletions
+28 -3
View File
@@ -21,12 +21,20 @@ async function loadAuto() {
const cats = mono.categories || [];
$$('#monitorCats input').forEach(c => c.checked = cats.includes(c.value));
renderMonitorState(autoSettings.state);
// 静默期(舆情)
const mq = (autoSettings.quiet && autoSettings.quiet.monitor) || {};
$('#monitorQuietEnabled').checked = !!mq.enabled;
$('#monitorQuietRanges').value = mq.ranges || '';
// 持仓跟踪
$('#trackingEnabled').checked = !!tr.enabled;
$('#trackingInterval').value = tr.interval_min;
$('#trackingImpact').value = tr.impact_threshold;
$('#trackingNotify').checked = !!tr.notify;
renderTrackingState(tr);
// 静默期(跟踪)
const tq = (autoSettings.quiet && autoSettings.quiet.tracking) || {};
$('#trackingQuietEnabled').checked = !!tq.enabled;
$('#trackingQuietRanges').value = tq.ranges || '';
loadLog();
loadTrackReports();
loadPositions();
@@ -61,10 +69,27 @@ function collectMonitor() {
};
}
function collectMonitorQuiet() {
return {
enabled: $('#monitorQuietEnabled').checked,
ranges: $('#monitorQuietRanges').value.trim()
};
}
function collectTrackingQuiet() {
return {
enabled: $('#trackingQuietEnabled').checked,
ranges: $('#trackingQuietRanges').value.trim()
};
}
/* ===================== 保存 ===================== */
async function saveMonitor() {
try {
const r = await api('/api/settings', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ monitor: collectMonitor() }) });
const r = await api('/api/settings', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({
monitor: collectMonitor(),
quiet: { monitor: collectMonitorQuiet() }
}) });
toast(r.msg || '已保存');
} catch (e) { toast('保存失败:' + e.message); }
}
@@ -76,7 +101,7 @@ async function saveTracking() {
tracking_interval: $('#trackingInterval').value,
tracking_impact_threshold: $('#trackingImpact').value,
tracking_notify: $('#trackingNotify').checked
} }) });
}, quiet: { tracking: collectTrackingQuiet() } }) });
toast(r.msg || '已保存');
} catch (e) { toast('保存失败:' + e.message); }
}
@@ -206,7 +231,7 @@ async function loadLog() {
<td><span class="cat-tag ${n.category}">${n.category}</span></td>
<td class="num ${pctClass(n.sentiment)}">${n.sentiment > 0 ? '利好' : n.sentiment < 0 ? '利空' : '中性'} (${Number(n.sentiment).toFixed(2)})</td>
<td class="num"><b>${n.importance}</b></td>
<td><span class="tag ${n.status === 'sent' ? 'tag-推荐' : n.status === 'skipped' ? 'tag-关注' : 'tag-负'}">${n.status}</span></td>
<td><span class="tag ${n.status === 'sent' ? 'tag-推荐' : n.status === 'skipped' ? 'tag-关注' : n.status === 'quiet' ? 'tag-关注' : 'tag-负'}">${n.status === 'sent' ? '已发送' : n.status === 'skipped' ? '已跳过' : n.status === 'quiet' ? '🌙 静默' : '失败'}</span></td>
</tr>`).join('');
} catch (e) {}
}