diff --git a/static/index.html b/static/index.html index db4ff580..248cd2e6 100644 --- a/static/index.html +++ b/static/index.html @@ -2541,9 +2541,20 @@ function renderStrategyTable(strategies) { const ddV = rwPf ? rwPf.portfolio_max_dd_pct : null; const univ = rw.universality ? rw.universality.score : null; const univM = rw.universality ? (rw.universality.months + '/' + (rw.universality.regime_total_months || '?')) : null; - const isActive = s.current === true; - return '' + - '' + s.version + (isActive ? ' 激活' : '') + ((s.market && s.market !== 'all') ? ' ' + (s.market === 'hk' ? '港' : 'A') + '' : '') + '' + + // ── 2026-08-16 行状态按【该表温区 rg】独立判定(老莫反复强调:每温区表显示该温区下的资格状态)── + const qg = (s.qualification || {})[rg]; + const rLong = qg && qg.long_ok, rMid = qg && qg.mid_ok, rShort = qg && qg.short_ok; + const r3 = rLong && rMid && rShort; // 三项全过 + const r2 = rLong && rMid; // 长期+近期 + const rManual = s.manual_available !== false; + let rState, rStateCls, rStateBadge, rRowBg; + if (!rManual) { rState = 'manual_off'; rStateCls = 'text-slate-500'; rStateBadge = '手动停用'; rRowBg = 'opacity-50'; } + else if (r3) { rState = 'ok3'; rStateCls = 'text-emerald-400'; rStateBadge = '可激活'; rRowBg = 'bg-emerald-900/10'; } + else if (r2) { rState = 'ok2'; rStateCls = 'text-blue-400'; rStateBadge = '可用'; rRowBg = ''; } + else { rState = 'bad'; rStateCls = 'text-red-400/80'; rStateBadge = '不合格'; rRowBg = 'opacity-60'; } + const isActive = rState === 'ok3'; + return '' + + '' + s.version + ' ' + rStateBadge + ((s.market && s.market !== 'all') ? ' ' + (s.market === 'hk' ? '港' : 'A') + '' : '') + '' + '' + (s.name || '') + (smallSample ? ' ⚠️' : '') + '' + // 2026-08-16 资格列:长期/近期/当下 三项达标徽章 '' + (s.qualification && s.qualification[rg] ? (