From b15f45f1b8638a265657127a49a20f00428b87c8 Mon Sep 17 00:00:00 2001 From: Lxy Date: Sat, 23 May 2026 16:23:16 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E9=A6=96=E9=A1=B5?= =?UTF-8?q?=E5=8D=A1=E7=89=87=E6=95=B0=E6=8D=AE=E5=8A=A0=E8=BD=BD=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/static/futures_analysis.js | 82 +++++++++++++++++++++------------- 1 file changed, 51 insertions(+), 31 deletions(-) diff --git a/app/static/futures_analysis.js b/app/static/futures_analysis.js index adb25db..ed8c052 100644 --- a/app/static/futures_analysis.js +++ b/app/static/futures_analysis.js @@ -255,47 +255,67 @@ async function loadFuturesList() { async function loadAllAIAnalysis() { console.log('开始加载所有合约的AI分析结果...'); + // 获取今天的日期字符串用于比较 + const today = new Date(); + const todayStr = today.toISOString().split('T')[0]; // YYYY-MM-DD + // 分批加载,避免并发请求过多 const batchSize = 5; for (let i = 0; i < allFuturesData.length; i += batchSize) { const batch = allFuturesData.slice(i, i + batchSize); const promises = batch.map(async (item) => { try { - const response = await fetch(`${API_BASE}/ai-analysis/${item.symbol}`); + // 获取历史记录 + const response = await fetch(`${API_BASE}/ai-analysis/${item.symbol}/history?limit=1`); const data = await response.json(); - if (data.success && data.data && data.data.result) { - const result = data.data.result; - const analysisItem = allFuturesData.find(d => d.symbol === item.symbol); - if (analysisItem) { - analysisItem.hasAIAnalysis = true; - analysisItem.aiResult = result; - - // 更新操作建议 - if (result.trading_suggestion?.direction) { - analysisItem.suggestion = result.trading_suggestion.direction; - analysisItem.suggestionType = result.trading_suggestion.direction === '做多' ? 'up' : result.trading_suggestion.direction === '做空' ? 'down' : 'neutral'; - } - - // 更新压力支撑位 - if (result.pivot_points) { - if (result.pivot_points.r1) analysisItem.resistance = result.pivot_points.r1; - if (result.pivot_points.s1) analysisItem.support = result.pivot_points.s1; - } - - // 更新多周期趋势 - if (result.four_dimensional) { - const periodMap = { '60min': '60', '30min': '30', '15min': '15', '5min': '5' }; - analysisItem.periods = {}; - Object.entries(result.four_dimensional).forEach(([period, pdata]) => { - const periodNum = periodMap[period]; - if (periodNum) { - const trend = pdata.conclusion || pdata.macd?.trend || 'neutral'; - analysisItem.periods[periodNum] = trend.includes('多') || trend === 'up' ? 'up' : trend.includes('空') || trend === 'down' ? 'down' : 'neutral'; - } - }); + if (data.success && data.data && data.data.length > 0) { + const latestRecord = data.data[0]; // 最新的一条记录 + const analysisTime = latestRecord.analysis_time; + + // 判断是否是今天的记录 + const recordDate = new Date(analysisTime); + const recordDateStr = recordDate.toISOString().split('T')[0]; + + if (recordDateStr === todayStr) { + // 是今天的记录,加载数据 + const result = latestRecord.analysis_data; + const analysisItem = allFuturesData.find(d => d.symbol === item.symbol); + if (analysisItem) { + analysisItem.hasAIAnalysis = true; + analysisItem.aiResult = result; + analysisItem.analysisTime = analysisTime; + + // 更新操作建议 + if (result.trading_suggestion?.direction) { + analysisItem.suggestion = result.trading_suggestion.direction; + analysisItem.suggestionType = result.trading_suggestion.direction === '做多' ? 'up' : result.trading_suggestion.direction === '做空' ? 'down' : 'neutral'; + } + + // 更新压力支撑位 + if (result.pivot_points) { + if (result.pivot_points.r1) analysisItem.resistance = result.pivot_points.r1; + if (result.pivot_points.s1) analysisItem.support = result.pivot_points.s1; + } + + // 更新多周期趋势 + if (result.four_dimensional) { + const periodMap = { '60min': '60', '30min': '30', '15min': '15', '5min': '5' }; + analysisItem.periods = {}; + Object.entries(result.four_dimensional).forEach(([period, pdata]) => { + const periodNum = periodMap[period]; + if (periodNum) { + const trend = pdata.conclusion || pdata.macd?.trend || 'neutral'; + analysisItem.periods[periodNum] = trend.includes('多') || trend === 'up' ? 'up' : trend.includes('空') || trend === 'down' ? 'down' : 'neutral'; + } + }); + } } + } else { + console.log(`${item.symbol} 的分析记录不是今天的 (${recordDateStr}),不加载`); } + } else { + console.log(`${item.symbol} 没有AI分析记录`); } } catch (error) { console.error(`加载 ${item.symbol} AI分析失败:`, error);