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

View File

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

View File

@@ -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);
}
@@ -175,9 +167,13 @@ const StockOverview = () => {
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);
}
@@ -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);
}
@@ -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) => {