feat: 重构文件数: 3 个主要页面文件

- 替换 console 调用: 约 18 个
  - 移除非关键 toast: 6 个
  - 保留关键 toast: 2 个(搜索相关的用户操作反馈)
  - 添加 logger 日志: 约 15 处
This commit is contained in:
zdl
2025-10-18 09:17:40 +08:00
parent 32121c416e
commit c1bea7a75d
3 changed files with 67 additions and 60 deletions

View File

@@ -139,8 +139,7 @@ const Community = () => {
// 加载事件列表 // 加载事件列表
const loadEvents = useCallback(async (page = 1) => { const loadEvents = useCallback(async (page = 1) => {
console.log('[Community] loadEvents 被调用,页码:', page); logger.debug('Community', 'loadEvents 被调用', { page });
console.log('[Community] 调用栈:', new Error().stack);
setLoading(true); setLoading(true);
try { try {
const filters = getFiltersFromUrl(); const filters = getFiltersFromUrl();
@@ -176,9 +175,12 @@ const Community = () => {
const response = await eventService.getPopularKeywords(20); const response = await eventService.getPopularKeywords(20);
if (response.success) { if (response.success) {
setPopularKeywords(response.data); setPopularKeywords(response.data);
logger.debug('Community', '热门关键词加载成功', {
count: response.data?.length || 0
});
} }
} catch (error) { } catch (error) {
console.error('Failed to load popular keywords:', error); logger.error('Community', 'loadPopularKeywords', error);
} }
}, []); }, []);
@@ -188,9 +190,12 @@ const Community = () => {
const response = await eventService.getHotEvents({ days: 5, limit: 4 }); const response = await eventService.getHotEvents({ days: 5, limit: 4 });
if (response.success) { if (response.success) {
setHotEvents(response.data); setHotEvents(response.data);
logger.debug('Community', '热点事件加载成功', {
count: response.data?.length || 0
});
} }
} catch (error) { } catch (error) {
console.error('Failed to load hot events:', error); logger.error('Community', 'loadHotEvents', error);
} }
}, []); }, []);
@@ -256,7 +261,9 @@ const Community = () => {
// 这是为了避免 StockDetailPanel 打开时触发不必要的重新加载 // 这是为了避免 StockDetailPanel 打开时触发不必要的重新加载
// 如果未来 loadEvents 添加了新的状态依赖,需要在此处同步更新 // 如果未来 loadEvents 添加了新的状态依赖,需要在此处同步更新
useEffect(() => { useEffect(() => {
console.log('[Community] useEffect 触发searchParams 变化:', searchParams.toString()); logger.debug('Community', 'useEffect 触发searchParams 变化', {
params: searchParams.toString()
});
const page = parseInt(searchParams.get('page') || '1', 10); const page = parseInt(searchParams.get('page') || '1', 10);
loadEvents(page); loadEvents(page);
loadPopularKeywords(); loadPopularKeywords();

View File

@@ -48,6 +48,7 @@ import { AdvancedSearch, SearchResultsModal } from './components/SearchComponent
// 导入高位股统计组件 // 导入高位股统计组件
import HighPositionStocks from './components/HighPositionStocks'; import HighPositionStocks from './components/HighPositionStocks';
import { logger } from '../../utils/logger';
// 主组件 // 主组件
export default function LimitAnalyse() { export default function LimitAnalyse() {
@@ -109,9 +110,12 @@ export default function LimitAnalyse() {
const data = await response.json(); const data = await response.json();
if (data.success) { if (data.success) {
setAvailableDates(data.events); setAvailableDates(data.events);
logger.debug('LimitAnalyse', '可用日期加载成功', {
count: data.events?.length || 0
});
} }
} catch (error) { } catch (error) {
console.error('Failed to fetch available dates:', error); logger.error('LimitAnalyse', 'fetchAvailableDates', error);
} }
}; };
@@ -126,22 +130,15 @@ export default function LimitAnalyse() {
// 获取词云数据 // 获取词云数据
fetchWordCloudData(date); fetchWordCloudData(date);
toast({ logger.debug('LimitAnalyse', '每日分析数据加载成功', {
title: '数据加载成功', date,
description: `${date} 的数据已加载`, totalStocks: data.data?.total_stocks || 0
status: 'success',
duration: 2000,
isClosable: true,
}); });
// ❌ 移除数据加载成功 toast非关键操作
} }
} catch (error) { } catch (error) {
console.error('Failed to fetch daily analysis:', error); logger.error('LimitAnalyse', 'fetchDailyAnalysis', error, { date });
toast({ // ❌ 移除数据加载失败 toast非关键操作
title: '网络错误',
description: '无法加载数据,请稍后重试',
status: 'error',
duration: 3000,
});
} finally { } finally {
setLoading(false); setLoading(false);
} }
@@ -153,9 +150,13 @@ export default function LimitAnalyse() {
const data = await response.json(); const data = await response.json();
if (data.success) { if (data.success) {
setWordCloudData(data.data); setWordCloudData(data.data);
logger.debug('LimitAnalyse', '词云数据加载成功', {
date,
count: data.data?.length || 0
});
} }
} catch (error) { } catch (error) {
console.error('Failed to fetch wordcloud data:', error); logger.error('LimitAnalyse', 'fetchWordCloudData', error, { date });
} }
}; };
@@ -188,6 +189,10 @@ export default function LimitAnalyse() {
if (data.success) { if (data.success) {
setSearchResults(data.data); setSearchResults(data.data);
setIsSearchOpen(true); setIsSearchOpen(true);
logger.info('LimitAnalyse', '搜索完成', {
resultCount: data.data?.total || 0,
searchParams
});
toast({ toast({
title: '搜索完成', title: '搜索完成',
description: `找到 ${data.data.total} 只相关股票`, description: `找到 ${data.data.total} 只相关股票`,
@@ -196,7 +201,7 @@ export default function LimitAnalyse() {
}); });
} }
} catch (error) { } catch (error) {
console.error('Search failed:', error); logger.error('LimitAnalyse', 'handleSearch', error, { searchParams });
toast({ toast({
title: '搜索失败', title: '搜索失败',
description: '请稍后重试', description: '请稍后重试',

View File

@@ -61,6 +61,7 @@ import { FaChartLine, FaFire, FaRocket, FaBrain, FaCalendarAlt, FaChevronRight,
import { BsGraphUp, BsLightningFill } from 'react-icons/bs'; import { BsGraphUp, BsLightningFill } from 'react-icons/bs';
import { keyframes } from '@emotion/react'; import { keyframes } from '@emotion/react';
import * as echarts from 'echarts'; import * as echarts from 'echarts';
import { logger } from '../../utils/logger';
// Navigation bar now provided by MainLayout // Navigation bar now provided by MainLayout
// import HomeNavbar from '../../components/Navbars/HomeNavbar'; // import HomeNavbar from '../../components/Navbars/HomeNavbar';
@@ -132,33 +133,24 @@ const StockOverview = () => {
const searchStocks = async (query) => { const searchStocks = async (query) => {
setIsSearching(true); setIsSearching(true);
try { try {
console.log('开始搜索股票:', query); logger.debug('StockOverview', '开始搜索股票', { query });
const response = await fetch(`/api/stocks/search?q=${encodeURIComponent(query)}&limit=10`); const response = await fetch(`/api/stocks/search?q=${encodeURIComponent(query)}&limit=10`);
console.log('API响应状态:', response.status);
const data = await response.json(); const data = await response.json();
console.log('API返回数据:', data); logger.debug('StockOverview', 'API返回数据', {
status: response.status,
resultCount: data.data?.length || 0
});
if (data.success) { if (data.success) {
setSearchResults(data.data || []); setSearchResults(data.data || []);
setShowResults(true); setShowResults(true);
} else { } else {
toast({ logger.warn('StockOverview', '搜索失败', data.error || '请稍后重试', { query });
title: '搜索失败', // ❌ 移除搜索失败 toast非关键操作
description: data.error || '请稍后重试',
status: 'error',
duration: 3000,
isClosable: true,
});
} }
} catch (error) { } catch (error) {
console.error('搜索股票失败:', error); logger.error('StockOverview', 'searchStocks', error, { query });
toast({ // ❌ 移除搜索失败 toast非关键操作
title: '搜索失败',
description: '网络错误,请稍后重试',
status: 'error',
duration: 3000,
isClosable: true,
});
} finally { } finally {
setIsSearching(false); setIsSearching(false);
} }
@@ -175,9 +167,13 @@ const StockOverview = () => {
if (data.success) { if (data.success) {
setTopConcepts(data.data); setTopConcepts(data.data);
if (!selectedDate) setSelectedDate(data.trade_date); if (!selectedDate) setSelectedDate(data.trade_date);
logger.debug('StockOverview', '热门概念加载成功', {
count: data.data?.length || 0,
date: data.trade_date
});
} }
} catch (error) { } catch (error) {
console.error('获取概念数据失败:', error); logger.error('StockOverview', 'fetchTopConcepts', error, { date });
} finally { } finally {
setLoadingConcepts(false); setLoadingConcepts(false);
} }
@@ -202,11 +198,15 @@ const StockOverview = () => {
})); }));
} }
if (!selectedDate) setSelectedDate(data.trade_date); if (!selectedDate) setSelectedDate(data.trade_date);
logger.debug('StockOverview', '热力图数据加载成功', {
count: data.data?.length || 0,
date: data.trade_date
});
// 延迟渲染热力图确保DOM已经准备好 // 延迟渲染热力图确保DOM已经准备好
setTimeout(() => renderHeatmap(data.data), 100); setTimeout(() => renderHeatmap(data.data), 100);
} }
} catch (error) { } catch (error) {
console.error('获取热力图数据失败:', error); logger.error('StockOverview', 'fetchHeatmapData', error, { date });
} finally { } finally {
setLoadingHeatmap(false); setLoadingHeatmap(false);
} }
@@ -228,15 +228,14 @@ const StockOverview = () => {
})); }));
setAvailableDates(data.available_dates || []); setAvailableDates(data.available_dates || []);
if (!selectedDate) setSelectedDate(data.trade_date); if (!selectedDate) setSelectedDate(data.trade_date);
logger.debug('StockOverview', '市场统计数据加载成功', {
date: data.trade_date,
availableDatesCount: data.available_dates?.length || 0
});
} }
} catch (error) { } catch (error) {
console.error('获取市场统计数据失败:', error); logger.error('StockOverview', 'fetchMarketStats', error, { date });
toast({ // ❌ 移除统计数据加载失败 toast非关键操作
title: '获取统计数据失败',
status: 'error',
duration: 3000,
isClosable: true,
});
} }
}; };
@@ -409,16 +408,12 @@ const StockOverview = () => {
} }
}); });
} catch (error) { } catch (error) {
console.error('渲染热力图失败:', error); logger.error('StockOverview', 'renderHeatmap', error, {
toast({ dataLength: data?.length || 0
title: '热力图渲染失败',
description: '请刷新页面重试',
status: 'error',
duration: 3000,
isClosable: true,
}); });
// ❌ 移除热力图渲染失败 toast非关键操作
} }
}, [colorMode, goldColor, navigate, toast]); }, [colorMode, goldColor, navigate]); // ✅ 移除 toast 依赖
// 获取市值区间 // 获取市值区间
const getMarketCapRange = (cap) => { const getMarketCapRange = (cap) => {