feat: 重构文件数: 3 个主要页面文件
- 替换 console 调用: 约 18 个 - 移除非关键 toast: 6 个 - 保留关键 toast: 2 个(搜索相关的用户操作反馈) - 添加 logger 日志: 约 15 处
This commit is contained in:
@@ -61,6 +61,7 @@ import { FaChartLine, FaFire, FaRocket, FaBrain, FaCalendarAlt, FaChevronRight,
|
||||
import { BsGraphUp, BsLightningFill } from 'react-icons/bs';
|
||||
import { keyframes } from '@emotion/react';
|
||||
import * as echarts from 'echarts';
|
||||
import { logger } from '../../utils/logger';
|
||||
// Navigation bar now provided by MainLayout
|
||||
// import HomeNavbar from '../../components/Navbars/HomeNavbar';
|
||||
|
||||
@@ -132,33 +133,24 @@ const StockOverview = () => {
|
||||
const searchStocks = async (query) => {
|
||||
setIsSearching(true);
|
||||
try {
|
||||
console.log('开始搜索股票:', query);
|
||||
logger.debug('StockOverview', '开始搜索股票', { query });
|
||||
const response = await fetch(`/api/stocks/search?q=${encodeURIComponent(query)}&limit=10`);
|
||||
console.log('API响应状态:', response.status);
|
||||
const data = await response.json();
|
||||
console.log('API返回数据:', data);
|
||||
|
||||
logger.debug('StockOverview', 'API返回数据', {
|
||||
status: response.status,
|
||||
resultCount: data.data?.length || 0
|
||||
});
|
||||
|
||||
if (data.success) {
|
||||
setSearchResults(data.data || []);
|
||||
setShowResults(true);
|
||||
} else {
|
||||
toast({
|
||||
title: '搜索失败',
|
||||
description: data.error || '请稍后重试',
|
||||
status: 'error',
|
||||
duration: 3000,
|
||||
isClosable: true,
|
||||
});
|
||||
logger.warn('StockOverview', '搜索失败', data.error || '请稍后重试', { query });
|
||||
// ❌ 移除搜索失败 toast(非关键操作)
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('搜索股票失败:', error);
|
||||
toast({
|
||||
title: '搜索失败',
|
||||
description: '网络错误,请稍后重试',
|
||||
status: 'error',
|
||||
duration: 3000,
|
||||
isClosable: true,
|
||||
});
|
||||
logger.error('StockOverview', 'searchStocks', error, { query });
|
||||
// ❌ 移除搜索失败 toast(非关键操作)
|
||||
} finally {
|
||||
setIsSearching(false);
|
||||
}
|
||||
@@ -171,13 +163,17 @@ const StockOverview = () => {
|
||||
const url = date ? `/api/concepts/daily-top?limit=6&date=${date}` : '/api/concepts/daily-top?limit=6';
|
||||
const response = await fetch(url);
|
||||
const data = await response.json();
|
||||
|
||||
|
||||
if (data.success) {
|
||||
setTopConcepts(data.data);
|
||||
if (!selectedDate) setSelectedDate(data.trade_date);
|
||||
logger.debug('StockOverview', '热门概念加载成功', {
|
||||
count: data.data?.length || 0,
|
||||
date: data.trade_date
|
||||
});
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取概念数据失败:', error);
|
||||
logger.error('StockOverview', 'fetchTopConcepts', error, { date });
|
||||
} finally {
|
||||
setLoadingConcepts(false);
|
||||
}
|
||||
@@ -190,7 +186,7 @@ const StockOverview = () => {
|
||||
const url = date ? `/api/market/heatmap?limit=500&date=${date}` : '/api/market/heatmap?limit=500';
|
||||
const response = await fetch(url);
|
||||
const data = await response.json();
|
||||
|
||||
|
||||
if (data.success) {
|
||||
setHeatmapData(data.data);
|
||||
// 保存统计数据
|
||||
@@ -202,11 +198,15 @@ const StockOverview = () => {
|
||||
}));
|
||||
}
|
||||
if (!selectedDate) setSelectedDate(data.trade_date);
|
||||
logger.debug('StockOverview', '热力图数据加载成功', {
|
||||
count: data.data?.length || 0,
|
||||
date: data.trade_date
|
||||
});
|
||||
// 延迟渲染热力图,确保DOM已经准备好
|
||||
setTimeout(() => renderHeatmap(data.data), 100);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取热力图数据失败:', error);
|
||||
logger.error('StockOverview', 'fetchHeatmapData', error, { date });
|
||||
} finally {
|
||||
setLoadingHeatmap(false);
|
||||
}
|
||||
@@ -218,7 +218,7 @@ const StockOverview = () => {
|
||||
const url = date ? `/api/market/statistics?date=${date}` : '/api/market/statistics';
|
||||
const response = await fetch(url);
|
||||
const data = await response.json();
|
||||
|
||||
|
||||
if (data.success) {
|
||||
setMarketStats(prevStats => ({
|
||||
...data.summary,
|
||||
@@ -228,15 +228,14 @@ const StockOverview = () => {
|
||||
}));
|
||||
setAvailableDates(data.available_dates || []);
|
||||
if (!selectedDate) setSelectedDate(data.trade_date);
|
||||
logger.debug('StockOverview', '市场统计数据加载成功', {
|
||||
date: data.trade_date,
|
||||
availableDatesCount: data.available_dates?.length || 0
|
||||
});
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取市场统计数据失败:', error);
|
||||
toast({
|
||||
title: '获取统计数据失败',
|
||||
status: 'error',
|
||||
duration: 3000,
|
||||
isClosable: true,
|
||||
});
|
||||
logger.error('StockOverview', 'fetchMarketStats', error, { date });
|
||||
// ❌ 移除统计数据加载失败 toast(非关键操作)
|
||||
}
|
||||
};
|
||||
|
||||
@@ -409,16 +408,12 @@ const StockOverview = () => {
|
||||
}
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('渲染热力图失败:', error);
|
||||
toast({
|
||||
title: '热力图渲染失败',
|
||||
description: '请刷新页面重试',
|
||||
status: 'error',
|
||||
duration: 3000,
|
||||
isClosable: true,
|
||||
logger.error('StockOverview', 'renderHeatmap', error, {
|
||||
dataLength: data?.length || 0
|
||||
});
|
||||
// ❌ 移除热力图渲染失败 toast(非关键操作)
|
||||
}
|
||||
}, [colorMode, goldColor, navigate, toast]);
|
||||
}, [colorMode, goldColor, navigate]); // ✅ 移除 toast 依赖
|
||||
|
||||
// 获取市值区间
|
||||
const getMarketCapRange = (cap) => {
|
||||
|
||||
Reference in New Issue
Block a user