fix: 优化首页卡片数据加载逻辑

master^2
Lxy 1 week ago
parent d4a06fcbde
commit b15f45f1b8

@ -255,47 +255,67 @@ async function loadFuturesList() {
async function loadAllAIAnalysis() { async function loadAllAIAnalysis() {
console.log('开始加载所有合约的AI分析结果...'); console.log('开始加载所有合约的AI分析结果...');
// 获取今天的日期字符串用于比较
const today = new Date();
const todayStr = today.toISOString().split('T')[0]; // YYYY-MM-DD
// 分批加载,避免并发请求过多 // 分批加载,避免并发请求过多
const batchSize = 5; const batchSize = 5;
for (let i = 0; i < allFuturesData.length; i += batchSize) { for (let i = 0; i < allFuturesData.length; i += batchSize) {
const batch = allFuturesData.slice(i, i + batchSize); const batch = allFuturesData.slice(i, i + batchSize);
const promises = batch.map(async (item) => { const promises = batch.map(async (item) => {
try { 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(); const data = await response.json();
if (data.success && data.data && data.data.result) { if (data.success && data.data && data.data.length > 0) {
const result = data.data.result; const latestRecord = data.data[0]; // 最新的一条记录
const analysisItem = allFuturesData.find(d => d.symbol === item.symbol); const analysisTime = latestRecord.analysis_time;
if (analysisItem) {
analysisItem.hasAIAnalysis = true; // 判断是否是今天的记录
analysisItem.aiResult = result; const recordDate = new Date(analysisTime);
const recordDateStr = recordDate.toISOString().split('T')[0];
// 更新操作建议
if (result.trading_suggestion?.direction) { if (recordDateStr === todayStr) {
analysisItem.suggestion = result.trading_suggestion.direction; // 是今天的记录,加载数据
analysisItem.suggestionType = result.trading_suggestion.direction === '做多' ? 'up' : result.trading_suggestion.direction === '做空' ? 'down' : 'neutral'; const result = latestRecord.analysis_data;
} const analysisItem = allFuturesData.find(d => d.symbol === item.symbol);
if (analysisItem) {
// 更新压力支撑位 analysisItem.hasAIAnalysis = true;
if (result.pivot_points) { analysisItem.aiResult = result;
if (result.pivot_points.r1) analysisItem.resistance = result.pivot_points.r1; analysisItem.analysisTime = analysisTime;
if (result.pivot_points.s1) analysisItem.support = result.pivot_points.s1;
} // 更新操作建议
if (result.trading_suggestion?.direction) {
// 更新多周期趋势 analysisItem.suggestion = result.trading_suggestion.direction;
if (result.four_dimensional) { analysisItem.suggestionType = result.trading_suggestion.direction === '做多' ? 'up' : result.trading_suggestion.direction === '做空' ? 'down' : 'neutral';
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 (result.pivot_points) {
if (periodNum) { if (result.pivot_points.r1) analysisItem.resistance = result.pivot_points.r1;
const trend = pdata.conclusion || pdata.macd?.trend || 'neutral'; if (result.pivot_points.s1) analysisItem.support = result.pivot_points.s1;
analysisItem.periods[periodNum] = trend.includes('多') || trend === 'up' ? 'up' : trend.includes('空') || trend === 'down' ? 'down' : 'neutral'; }
}
}); // 更新多周期趋势
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) { } catch (error) {
console.error(`加载 ${item.symbol} AI分析失败:`, error); console.error(`加载 ${item.symbol} AI分析失败:`, error);

Loading…
Cancel
Save