diff --git a/app/web/static/index.html b/app/web/static/index.html
index c7e6cf4..ae022d5 100644
--- a/app/web/static/index.html
+++ b/app/web/static/index.html
@@ -406,13 +406,18 @@ pre.json{background:var(--surface-2);border:1px solid var(--hair);border-radius:
决策系统 · 风控卖出 · {{ SIG.sell.length }}
-
+
+
{{ sellOpen[r.ts_code+'_'+i] ? '▾' : '▸' }}
{{ nm(r.ts_code) }}{{ r.ts_code }}
{{ r.dominant_signal==='take_profit'?'止盈':'风控卖出' }}
置信 {{ r.confidence }}
{{ r.time }}
-
{{ r.reason }}
+
{{ r.reason }}
@@ -2054,6 +2059,9 @@ createApp({
const KNOWN_LV = new Set(['DANGER','WARNING','INFO','NORMAL']);
const levelShown = k => levelShow[k] !== false;
function toggleLevel(k){ levelShow[k] = !levelShown(k); try { sessionStorage.setItem(LV_STORE_KEY, JSON.stringify(levelShow)); } catch (e) {} }
+ // 风控卖出: 每只股票的详情(卖出理由)默认折叠, 点该行展开这一只 (key = 代码_序号)。
+ const sellOpen = reactive({});
+ function toggleSell(k){ sellOpen[k] = !sellOpen[k]; }
const passLevel = lv => { const x = normLv(lv); return !KNOWN_LV.has(x) || levelShow[x] !== false; };
const alertItemsF = computed(() => alertItems.value.filter(a => passLevel(a.level)));
const levelCount = k => alertItems.value.reduce((n, a) => n + (normLv(a.level) === k ? 1 : 0), 0);
@@ -2501,7 +2509,7 @@ createApp({
mzSig, mzAdvicePending, mzChipCls, mzChipText, macroChipClick,
showAlerts, alertItems, alertLatest, alertLevelClass, alertGroups, alertStripItems,
alertStripCount, alertTotalCount, catShown, toggleCat, ageText, alertRowClass,
- alertItemsF, levelShown, toggleLevel, levelCount, ALERT_LEVELS, lvLabel, lvClass, alertGridFixed, passLevel, flowText, flowClass,
+ alertItemsF, levelShown, toggleLevel, sellOpen, toggleSell, levelCount, ALERT_LEVELS, lvLabel, lvClass, alertGridFixed, passLevel, flowText, flowClass,
SIG, moneyCn, zBand, zBars, dirUp, eventsQuiet };
}
}).use(ElementPlus).mount('#app');