v1.4.0: 持仓跟踪智能体(产业链上下游深度分析) - 定期跟踪自选股/持仓, RAG采集个股+上游+下游+同业动态, LLM输出产业链深度分析+影响度判定, 重大变化邮件通知, 跟踪页+设置项
This commit is contained in:
@@ -25,6 +25,13 @@ async function loadSettings() {
|
||||
const cats = mono.categories || [];
|
||||
$$('#monitorCats input').forEach(c => c.checked = cats.includes(c.value));
|
||||
renderState(curSettings.state);
|
||||
// 持仓跟踪
|
||||
const tr = curSettings.tracking || {};
|
||||
$('#trackingEnabled').checked = !!tr.enabled;
|
||||
$('#trackingInterval').value = tr.interval_min;
|
||||
$('#trackingImpact').value = tr.impact_threshold;
|
||||
$('#trackingNotify').checked = !!tr.notify;
|
||||
renderTrackingState(tr);
|
||||
loadLog();
|
||||
} catch (e) {
|
||||
toast('设置加载失败');
|
||||
@@ -38,6 +45,13 @@ function renderState(state) {
|
||||
<div class="mini-stat"><div class="ms-label">上次通知</div><div class="ms-value num">${state.last_sent_count || 0} 条</div></div>`;
|
||||
}
|
||||
|
||||
function renderTrackingState(tr) {
|
||||
$('#trackingState').innerHTML = `
|
||||
<div class="mini-stat"><div class="ms-label">上次运行</div><div class="ms-value">${tr.last_run || '—'}</div></div>
|
||||
<div class="mini-stat"><div class="ms-label">最近跟踪</div><div class="ms-value">${tr.last_stock || '—'}</div></div>
|
||||
<div class="mini-stat"><div class="ms-label">最近告警影响度</div><div class="ms-value num">${tr.last_alert ? tr.last_alert + '/100' : '—'}</div></div>`;
|
||||
}
|
||||
|
||||
function collectMail() {
|
||||
return {
|
||||
smtp_host: $('#smtpHost').value.trim(), smtp_port: $('#smtpPort').value,
|
||||
@@ -69,6 +83,12 @@ async function save(which) {
|
||||
llm_model: $('#llmModel').value.trim()
|
||||
};
|
||||
if (which === 'monitor') body.monitor = collectMonitor();
|
||||
if (which === 'tracking') body.tracking = {
|
||||
tracking_enabled: $('#trackingEnabled').checked,
|
||||
tracking_interval: $('#trackingInterval').value,
|
||||
tracking_impact_threshold: $('#trackingImpact').value,
|
||||
tracking_notify: $('#trackingNotify').checked
|
||||
};
|
||||
const r = await api('/api/settings', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(body) });
|
||||
toast(r.msg || '已保存');
|
||||
} catch (e) { toast('保存失败:' + e.message); }
|
||||
|
||||
Reference in New Issue
Block a user