diff --git a/static/index.html b/static/index.html index d10182d1..cda10f42 100644 --- a/static/index.html +++ b/static/index.html @@ -2688,7 +2688,13 @@ function renderStrategyTable(strategies) { if (comp >= 75) return 'good'; return 'ok'; }; - const renderRegimeRow = (s, rg, bkKey) => { + // 2026-08-18 按市场×温区判定激活(兼容 hk: 前缀) + window._isActRegime = function(s, rg) { + const cr = s.current_regimes || []; + const isHk = (s.market === 'hk') || cr.some(x => x.indexOf('hk:') === 0); + return isHk ? cr.includes('hk:' + rg) : cr.includes(rg); + }; +const renderRegimeRow = (s, rg, bkKey) => { // 2026-08-15 行级激活按策略自身(后端已按所属市场温区算好 s.current),不再按表格 isCur const rw = (s.regime_winrates || {})[rg] || {}; const rwPf = rw.portfolio || null; @@ -2730,7 +2736,7 @@ function renderStrategyTable(strategies) { // 评分 = 不合格(≥2叉)/待观察(1叉)/合格/良好/优秀(3勾+综合分区间) const rGrade = gradeOf(qg, comp); let rStateCls, rStateBadge, rRowBg; - const _rgActive = (s.current_regimes || []).includes(rg); // 该策略在当前表温区激活 + const _rgActive = window._isActRegime(s, rg); // 该策略在当前表温区激活 if (!rManual) { rStateCls = 'text-slate-500'; rStateBadge = '手动停用'; rRowBg = 'opacity-50'; } else if (_rgActive) { rStateCls = 'text-emerald-400'; @@ -2743,7 +2749,7 @@ function renderStrategyTable(strategies) { } const rGradeBadge = rGrade && rGrade !== 'ok' && rGrade !== 'good' && rGrade !== 'great' ? '' : ''; // 2026-08-18 按温区判定激活(而非全局 s.current)——该策略在当前表温区 rg 是否激活 - const isActive = (s.current_regimes || []).includes(rg); + const isActive = window._isActRegime(s, rg); const _bkAttr = bkKey ? ' data-bk="' + bkKey + '" class="hidden"' : ''; return '' + '' + s.version + ' ' + rStateBadge + ((s.market && s.market !== 'all') ? ' ' + (s.market === 'hk' ? '港' : 'A') + '' : '') + '' + @@ -2849,7 +2855,7 @@ function renderStrategyTable(strategies) { '操作' + // ── 2026-08-17 分区(老莫):上区=已激活,下区=备选(资格达标未激活),默认折叠 ── (() => { - const _isAct = (s) => (s.current_regimes || []).includes(rg); + const _isAct = (s) => window._isActRegime(s, rg); const active = metas.filter(_isAct); const backup = metas.filter(s => !_isAct(s)); let html = '';