diff --git a/frontend/src/components/GlobalConfig.jsx b/frontend/src/components/GlobalConfig.jsx
index 3198c84..44b3050 100644
--- a/frontend/src/components/GlobalConfig.jsx
+++ b/frontend/src/components/GlobalConfig.jsx
@@ -1208,9 +1208,32 @@ const GlobalConfig = () => {
},
]
+ // 统计过滤可视化:解析全局 STATS_* 配置
+ const rawStatsSymbolFilters = configs?.STATS_SYMBOL_FILTERS
+ const rawStatsHourFilters = configs?.STATS_HOUR_FILTERS
+ const statsSymbolFiltersValue =
+ rawStatsSymbolFilters && typeof rawStatsSymbolFilters === 'object'
+ ? (rawStatsSymbolFilters.value ?? rawStatsSymbolFilters)
+ : null
-
+ const statsHourFiltersValue =
+ rawStatsHourFilters && typeof rawStatsHourFilters === 'object'
+ ? (rawStatsHourFilters.value ?? rawStatsHourFilters)
+ : null
+
+ const statsBlacklist = Array.isArray(statsSymbolFiltersValue?.blacklist)
+ ? statsSymbolFiltersValue.blacklist
+ : []
+ const statsWhitelist = Array.isArray(statsSymbolFiltersValue?.whitelist)
+ ? statsSymbolFiltersValue.whitelist
+ : []
+ const statsHours = Array.isArray(statsHourFiltersValue?.hours)
+ ? statsHourFiltersValue.hours
+ : []
+
+ const statsGeneratedAt = statsSymbolFiltersValue?.generated_at || statsHourFiltersValue?.generated_at || null
+ const statsDays = statsSymbolFiltersValue?.days || statsHourFiltersValue?.days || null
return (
@@ -1645,15 +1668,16 @@ const GlobalConfig = () => {
)}
- {/* Tabs */}
-
- {[
- { key: 'all', label: '全部' },
- { key: 'risk', label: '风险控制' },
- { key: 'strategy', label: '策略参数' },
- { key: 'scan', label: '市场扫描' },
- { key: 'position', label: '仓位控制' },
- ].map(tab => (
+ {/* Tabs */}
+
+ {[
+ { key: 'all', label: '全部' },
+ { key: 'risk', label: '风险控制' },
+ { key: 'strategy', label: '策略参数' },
+ { key: 'scan', label: '市场扫描' },
+ { key: 'position', label: '仓位控制' },
+ { key: 'stats', label: '统计过滤' },
+ ].map(tab => (
+ {/* 统计过滤可视化(仅在“统计过滤” Tab 展示) */}
+ {activeTab === 'stats' && (
+