feat(ui): 行业分析/概念分析更名行业板块/概念板块, 财务分析→财务概况

菜单/页面标题/引导文案统一更名; 轮动图默认图表源未设置 (或旧默认值) 时回退
强弱切换而非综合分, 显式选择过的用户不受影响; 文档截图替换为新版概念板块
页面 (旧截图为过期版本)。

Signed-off-by: shy3130 <shy3130@qq.com>
This commit is contained in:
shy3130
2026-10-28 12:46:59 +08:00
parent b6c35a9b64
commit 313be43de4
11 changed files with 20 additions and 20 deletions
@@ -357,7 +357,7 @@ export function RpsRotationDialog({ onClose, kind = 'concept' }: Props) {
</div>
) : rowCount === 0 ? (
<div className="flex items-center justify-center py-16 text-[11px] text-muted">
暂无{dimLabel}数据,请先在「{kind === 'industry' ? '行业分析' : '概念分析'}」页配置并获取{dimLabel}数据源
暂无{dimLabel}数据,请先在「{kind === 'industry' ? '行业板块' : '概念板块'}」页配置并获取{dimLabel}数据源
</div>
) : (
<div
@@ -42,7 +42,7 @@ const SOURCE_LABELS: Record<Exclude<SectorSource, 'custom'>, string> = {
}
function parseSectorSource(raw: string | null): SectorSource {
if (raw === 'custom' || raw === 'score' || raw === 'pct' || raw === 'rank_change' || raw === 'momentum' || raw === 'flow') return raw
return 'score' // 未设置过 / 旧默认值 'auto' → 默认综合分 (显式选择过的值已持久化, 不受影响)
return 'momentum' // 未设置过 / 旧默认值 → 默认强弱切换 (显式选择过的值已持久化, 不受影响)
}
// 扩展表 schema 的类型名可能是配置里的简写 (float/int), 也可能是 Parquet 的
// 真实类型 (DOUBLE/BIGINT/DECIMAL(18,4))。两种口径都要认, 否则会漏掉整数列。
@@ -115,7 +115,7 @@ export function EnrichedRebuildPanel({
}`}>
{canRebuild
? `已检测到 ${historicalShareRows.toLocaleString()} 条历史股本记录。重算会按公告可用日匹配历史流通股本,并覆盖全部 Enriched 分区。`
: '未检测到历史股本数据,请先在财务分析页面同步“股本表”,再执行重算。'}
: '未检测到历史股本数据,请先在财务概况页面同步“股本表”,再执行重算。'}
</div>
)}
<div className="text-[10px] text-muted mb-2">
@@ -25,9 +25,9 @@ const PAGE_LABELS: Record<string, string> = {
'/backtest': '回测',
'/stock-analysis': '个股分析',
'/limit-ladder': '连板梯队',
'/concept-analysis': '概念分析',
'/industry-analysis': '行业分析',
'/financials': '财务分析',
'/concept-analysis': '概念板块',
'/industry-analysis': '行业板块',
'/financials': '财务概况',
'/monitor': '监控中心',
'/regime': '市场环境',
'/abnormal': '异动监控',
@@ -349,7 +349,7 @@ export function ConceptAnalysis() {
<>
<div className="flex h-full flex-col">
<PageHeader
title="概念分析"
title="概念板块"
right={
<button onClick={() => setShowConfig(true)} className="p-1.5 text-muted hover:bg-surface hover:text-accent" title="配置数据源">
<Settings2 className="h-4 w-4" />
@@ -358,7 +358,7 @@ export function ConceptAnalysis() {
/>
<PresetFetchState
title="暂无概念数据"
hint="从同花顺获取概念分类数据后即可使用概念分析"
hint="从同花顺获取概念分类数据后即可使用概念板块"
isLoading={fetchMutation.isPending}
error={fetchMutation.error}
onFetch={() => fetchMutation.mutate()}
@@ -374,7 +374,7 @@ export function ConceptAnalysis() {
return (
<>
<PageHeader
title="概念分析"
title="概念板块"
subtitle={`${marketQuery.data?.as_of ?? rowsQuery.data?.date ?? '最新'} · ${stats.length} 个概念 · ${totalSymbols} 只标的`}
right={
<div className="flex items-center gap-1">
@@ -845,7 +845,7 @@ const extension: FrontendExtension = {
{ id: 'concept-analysis', path: '/concept-analysis', component: ConceptAnalysis },
],
navigation: [
{ id: 'concept-analysis', routeId: 'concept-analysis', label: '概念分析', icon: IconConcept },
{ id: 'concept-analysis', routeId: 'concept-analysis', label: '概念板块', icon: IconConcept },
],
}
+3 -3
View File
@@ -70,7 +70,7 @@ export function Financials() {
if (!hasFinancial) {
return (
<>
<PageHeader title="财务分析" subtitle="利润表 / 资负表 / 现金流 / 关键指标 / 股本 / AI分析" />
<PageHeader title="财务概况" subtitle="利润表 / 资负表 / 现金流 / 关键指标 / 股本 / AI分析" />
<div className="px-8 py-10">
<div className="mx-auto max-w-md rounded-card border border-warning/30 bg-warning/[0.04] p-8 text-center">
<div className="mx-auto flex h-12 w-12 items-center justify-center rounded-full bg-warning/10">
@@ -172,7 +172,7 @@ export function Financials() {
return (
<>
<PageHeader
title="财务分析"
title="财务概况"
subtitle="利润表 / 资负表 / 现金流 / 关键指标 / 股本 / AI分析"
right={
<div className="flex items-center gap-2">
@@ -354,7 +354,7 @@ const extension: FrontendExtension = {
{ id: 'financials', path: '/financials', component: Financials },
],
navigation: [
{ id: 'financials', routeId: 'financials', label: '财务分析', icon: IconFinancials },
{ id: 'financials', routeId: 'financials', label: '财务概况', icon: IconFinancials },
],
}
@@ -400,7 +400,7 @@ export function IndustryAnalysis() {
<>
<div className="flex h-full flex-col">
<PageHeader
title="行业分析"
title="行业板块"
right={
<button onClick={() => setShowConfig(true)} className="p-1.5 text-muted hover:bg-surface hover:text-accent" title="配置数据源">
<Settings2 className="h-4 w-4" />
@@ -409,7 +409,7 @@ export function IndustryAnalysis() {
/>
<PresetFetchState
title="暂无行业数据"
hint="从同花顺获取行业分类数据后即可使用行业分析"
hint="从同花顺获取行业分类数据后即可使用行业板块"
isLoading={fetchMutation.isPending}
error={fetchMutation.error}
onFetch={() => fetchMutation.mutate()}
@@ -427,7 +427,7 @@ export function IndustryAnalysis() {
return (
<>
<PageHeader
title="行业分析"
title="行业板块"
subtitle={`${industryLevelLabel} · ${marketQuery.data?.as_of ?? rowsQuery.data?.date ?? '最新'} · ${stats.length} 个行业 · ${totalSymbols} 只标的`}
right={
<div className="flex items-center gap-1">
@@ -914,7 +914,7 @@ const extension: FrontendExtension = {
{ id: 'industry-analysis', path: '/industry-analysis', component: IndustryAnalysis },
],
navigation: [
{ id: 'industry-analysis', routeId: 'industry-analysis', label: '行业分析', icon: IconIndustry },
{ id: 'industry-analysis', routeId: 'industry-analysis', label: '行业板块', icon: IconIndustry },
],
}
+1 -1
View File
@@ -77,7 +77,7 @@ const MOCK_NAV = [
{ icon: History, label: '回测' },
{ icon: SignalIcon, label: '信号' },
{ icon: Eye, label: '监控' },
{ icon: FileText, label: '财务分析' },
{ icon: FileText, label: '财务概况' },
]
export function Branding() {
+1 -1
View File
@@ -41,7 +41,7 @@ const HIGHLIGHTS = [
{ icon: TrendingUp, title: '个股分析', desc: 'AI 四维分析个股,关键价位、技术形态一目了然', tint: 'text-warning' },
{ icon: Flame, title: '连板梯队', desc: '涨停梯队、封板强度、炸板监控,情绪温度计', tint: 'text-warning' },
{ icon: Landmark, title: '概念行业', desc: '概念板块、行业维度的资金流向与热度排名', tint: 'text-accent' },
{ icon: FileText, title: '财务分析', desc: 'AI 解读财报,利润、资负、现金流、核心指标', tint: 'text-bear' },
{ icon: FileText, title: '财务概况', desc: 'AI 解读财报,利润、资负、现金流、核心指标', tint: 'text-bear' },
{ icon: ShieldCheck, title: '回测验证', desc: '策略历史回测、因子分析,用数据验证逻辑', tint: 'text-accent' },
{ icon: Radar, title: '实时监控', desc: '自定义条件 / 策略监控,盘中触发即推送告警', tint: 'text-bear' },
{ icon: BellRing, title: '本地优先', desc: '数据本地存储,隐私可控,断网仍可查阅', tint: 'text-bull' },
+1 -1
View File
@@ -67,7 +67,7 @@ const ARCH_CLASS: Record<string, { kind: ArchKind; reason: string }> = {
'/limit-ladder': { kind: 'ext', reason: '连板梯队视图 — 消费核心数据, 可由扩展页面替换' },
'/concept-analysis': { kind: 'ext', reason: '概念分析视图 — 消费核心数据, 可由扩展页面替换' },
'/industry-analysis': { kind: 'ext', reason: '行业分析视图 — 消费核心数据, 可由扩展页面替换' },
'/financials': { kind: 'ext', reason: '财务分析视图 — 消费核心数据, 可由扩展页面替换' },
'/financials': { kind: 'ext', reason: '财务概况视图 — 消费核心数据, 可由扩展页面替换' },
'/monitor': { kind: 'ext', reason: '监控消费页 (规则引擎与推送管道属核心), 页面可替换' },
'/abnormal': { kind: 'ext', reason: '异动监控视图 — 消费核心数据, 可由扩展页面替换' },
'/lots': { kind: 'ext', reason: '持仓提醒视图 — 消费核心数据, 可由扩展页面替换' },
Binary file not shown.

Before

Width:  |  Height:  |  Size: 628 KiB

After

Width:  |  Height:  |  Size: 1002 KiB