fix: evo-box移到策略评估子tab,统一函数名为loadEvoLog

This commit is contained in:
xxm
2026-08-21 04:10:26 +08:00
parent fdb3757895
commit bf75aba72a
+7 -8
View File
@@ -2175,7 +2175,7 @@ function renderResearch() {
// 2026-08-18 局部刷新(老莫):已渲染过骨架则不再整页重建(保留滚动/展开),只刷新数据
if (window._researchRendered) {
loadStrategyList();
loadEvolutionBox();
loadEvoLog();
return;
}
window._researchRendered = true;
@@ -2191,7 +2191,6 @@ function renderResearch() {
'<span class="text-xs text-slate-500">策略效果评估(到期策略自动评估)</span>' +
'</div>' +
'<div id="rsub-strategy">' +
'<div id="evo-box" class="mb-3 bg-slate-800/60 border border-slate-700 rounded-lg p-3"><div class="text-xs text-slate-500">📊 评估模块加载中...</div></div>' +
'<div class="flex gap-2 items-center mb-3 flex-wrap">' +
'<h2 class="text-lg font-bold">📋 策略研究 — 版本迭代对比</h2>' +
'<select id="btPeriod" onchange="saveBtPeriod()" class="bg-slate-800 text-sm rounded-lg px-2 py-1 border border-slate-700">' +
@@ -2211,7 +2210,7 @@ function renderResearch() {
// 首次渲染即加载策略列表(无子Tab切换)。
// 2026-08-15 修复:不能在此直接 loadStrategyList()——此时 btPeriod.value 还是初始默认 '1m'
// 与下方恢复 savedPt='2y' 后的调用并发竞态,1m 响应后到会覆盖 2y 渲染(周期错乱+综合分被小样本置信打崩)。
loadEvolutionBox();
loadEvoLog();
// 2026-08-18 子Tab切换 + 进化日志
window.switchRsub = function(name) {
const isStr = name === 'strategy';
@@ -2316,13 +2315,13 @@ async function loadStrategyList() {
}
const ASC_DEFAULT = new Set(['max_dd']); // 回撤类:小=好,默认升序
async function loadEvolutionBox() {
const box = document.getElementById('evo-box');
async function loadEvoLog() {
const box = document.getElementById('effectiveness-list');
if (!box) return;
try {
const r = await fetch('/api/research/effectiveness/summary');
const d = await r.json();
let h = '<div class="flex items-center justify-between mb-2"><span class="text-base font-semibold text-emerald-400">🧬 策略评估</span><button onclick="loadEvolutionBox()" class="text-sm text-blue-400 hover:text-blue-300">刷新</button></div>';
let h = '<div class="flex items-center justify-between mb-2"><span class="text-base font-semibold text-emerald-400">🧬 策略评估</span><button onclick="loadEvoLog()" class="text-sm text-blue-400 hover:text-blue-300">刷新</button></div>';
// ── 基线对比 ──
if (d.baseline) {
@@ -2410,7 +2409,7 @@ async function loadEvolutionBox() {
} catch (e) { box.innerHTML = '<div class="text-sm text-red-400">加载失败: '+e.message+'</div>'; }
}
// 研究Tab活跃时加载进化模块
new MutationObserver(()=>{if(!document.getElementById('tab-research')?.classList?.contains('hidden'))loadEvolutionBox();}).observe(document.body,{attributes:true,subtree:true});
new MutationObserver(()=>{if(!document.getElementById('tab-research')?.classList?.contains('hidden'))loadEvoLog();}).observe(document.body,{attributes:true,subtree:true});
function sortBy(key) {
@@ -2471,7 +2470,7 @@ async function mergeBGroup() {
const r = await fetch('/api/evolution/merge_b_group', {method: 'POST', headers: {'Content-Type': 'application/json'}, body: '{}'});
const d = await r.json();
alert('融合结果: ' + JSON.stringify(d.merged || d.error || d));
loadEvolutionBox();
loadEvoLog();
loadStrategyList();
} catch(e) { alert('融合失败: ' + e.message); }
}