feat(dashboard): 看板无本地数据时显示提示条 + 跳转数据页同步按钮

- enriched/daily 两表均无数据时,顶部显示蓝色提示条
- 「前往同步」按钮 Link 跳转 /data 页面
- 与 none 档(无 key)黄色横幅区分显示

版本: 0.1.38
This commit is contained in:
shy3130
2026-06-24 18:07:43 +08:00
parent 5c492c1825
commit b28355aacf
3 changed files with 21 additions and 3 deletions
+1 -1
View File
@@ -1,3 +1,3 @@
"""TickFlow Stock Panel backend."""
__version__ = "0.1.37"
__version__ = "0.1.38"
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "tickflow-stock-panel-frontend",
"private": true,
"version": "0.1.37",
"version": "0.1.38",
"type": "module",
"scripts": {
"dev": "vite",
+19 -1
View File
@@ -2,7 +2,7 @@ import { useState, type ReactNode } from 'react'
import { Link } from 'react-router-dom'
import { useQuery } from '@tanstack/react-query'
import { motion } from 'framer-motion'
import { Activity, ArrowDownRight, ArrowUpRight, BarChart3, BellRing, Flame, Gauge, LineChart, Loader2, RefreshCw, Sparkles, Target, Timer, ExternalLink, Gift } from 'lucide-react'
import { Activity, ArrowDownRight, ArrowUpRight, BarChart3, BellRing, Database, Flame, Gauge, LineChart, Loader2, RefreshCw, Sparkles, Target, Timer, ExternalLink, Gift } from 'lucide-react'
import { DatePicker } from '@/components/DatePicker'
import { api, type MarketSnapshotRow, type OverviewDimensionRankItem, type OverviewMarket, type AlertEvent } from '@/lib/api'
import { QK } from '@/lib/queryKeys'
@@ -486,6 +486,9 @@ export function Dashboard() {
const isSealedDegrade = !hasDepth || !sealedReady
// none 档(无 key / 无效 key)→ 显示升级提示横幅
const isNoKey = settings.data?.mode === 'none'
// 无本地数据(enriched/daily 都没有)→ 提示去数据页同步
const ds = dataStatus.data
const hasNoData = !!ds && (ds.enriched?.rows ?? 0) === 0 && (ds.daily?.rows ?? 0) === 0
// 手动刷新: 显示旋转动画; SSE 自动刷新: 静默, 无体感
const handleRefresh = () => {
@@ -544,6 +547,21 @@ export function Dashboard() {
</span>
</div>
)}
{/* 无本地数据提示 —— 引导用户去数据页同步 */}
{hasNoData && (
<div className="mb-3 flex items-center gap-2 rounded-card border border-accent/40 bg-accent/10 px-3 py-2 text-xs">
<Database className="h-4 w-4 shrink-0 text-accent" />
<span className="text-secondary leading-relaxed">
,
</span>
<Link
to="/data"
className="ml-auto shrink-0 inline-flex items-center gap-1 rounded-btn bg-accent px-2.5 py-1 text-[11px] font-medium text-white hover:bg-accent/90 transition-colors"
>
</Link>
</div>
)}
<div className="mb-3 flex flex-wrap items-center justify-between gap-2 rounded-card border border-border bg-surface/85 px-3 py-2">
<div className="flex items-center gap-2">
<Gauge className="h-4 w-4 text-accent" />