"use client"
import { useState, useEffect } from "react"
import { Search, Users, TrendingUp, Database, RefreshCw, BarChart3, Activity, Globe, Smartphone, Brain } from 'lucide-react'
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"
import { Button } from "@/components/ui/button"
import { Input } from "@/components/ui/input"
import { Badge } from "@/components/ui/badge"
import { useRouter } from "next/navigation"
import { Toaster } from "@/components/ui/toaster"
import UserSearch from '@/components/home/user-search'
import UserList from '@/components/home/user-list'
import Link from "next/link"
interface SystemStats {
userCount: number
keywordCount: number
versionCount: number
avgResponseTime: number
cacheSize: number
connected: boolean
}
interface GrowthData {
period: string
userGrowth: number
dataGrowth: number
activeUsers: number
}
function StatCard({ icon, label, value }: { icon: React.ReactNode; label: string; value: string }) {
return (
)
}
export const dynamic = "force-static"
export default function OverviewPage() {
const router = useRouter()
const [searchQuery, setSearchQuery] = useState("")
const [systemStats, setSystemStats] = useState({
userCount: 4000000000,
keywordCount: 150000,
versionCount: 25,
avgResponseTime: 120,
cacheSize: 0,
connected: true,
})
const [growthData, setGrowthData] = useState([
{ period: "今日", userGrowth: 2.3, dataGrowth: 1.8, activeUsers: 85600000 },
{ period: "本周", userGrowth: 12.5, dataGrowth: 8.9, activeUsers: 520000000 },
{ period: "本月", userGrowth: 45.2, dataGrowth: 32.1, activeUsers: 1200000000 },
])
const [isRefreshing, setIsRefreshing] = useState(false)
const [lastUpdate, setLastUpdate] = useState(new Date())
// 自动刷新数据
useEffect(() => {
const interval = setInterval(() => {
refreshData()
}, 30000) // 30秒刷新一次
return () => clearInterval(interval)
}, [])
// 刷新数据
const refreshData = async () => {
setIsRefreshing(true)
try {
// 模拟数据更新
setSystemStats((prev) => ({
...prev,
userCount: prev.userCount + Math.floor(Math.random() * 1000),
avgResponseTime: Math.floor(Math.random() * 50) + 100,
}))
setGrowthData((prev) =>
prev.map((item) => ({
...item,
userGrowth: item.userGrowth + (Math.random() - 0.5) * 0.5,
dataGrowth: item.dataGrowth + (Math.random() - 0.5) * 0.3,
activeUsers: Math.floor(item.activeUsers * (1 + (Math.random() - 0.5) * 0.01)),
})),
)
setLastUpdate(new Date())
} catch (error) {
console.error("刷新数据失败:", error)
} finally {
setIsRefreshing(false)
}
}
// 处理搜索
const handleSearch = () => {
if (searchQuery.trim()) {
router.push(`/intelligent-search?q=${encodeURIComponent(searchQuery)}`)
}
}
// 格式化数字显示
const formatNumber = (num: number): string => {
if (num >= 1000000000) {
return `${(num / 1000000000).toFixed(1)}B`
}
if (num >= 1000000) {
return `${(num / 1000000).toFixed(1)}M`
}
if (num >= 1000) {
return `${(num / 1000).toFixed(1)}K`
}
return num.toString()
}
const tiles = [
{
href: "/user-portrait",
title: "用户画像",
desc: "管理与分群、标签与画像洞察",
icon: ,
},
{
href: "/devices",
title: "设备管理",
desc: "查看设备状态与执行任务",
icon: ,
},
{
href: "/data-platform",
title: "数据中台",
desc: "数据接入、质量监控与查询",
icon: ,
},
{
href: "/ai-assistant",
title: "AI 助手",
desc: "智能问答与自动化报表",
icon: ,
},
]
return (
{/* 页面标题和搜索 */}
{/* 核心数据展示 - 40亿用户为中心 */}
{/* 用户总数 - 主要指标 */}
用户资产总量
{formatNumber(systemStats.userCount)}
总用户数
{growthData.map((data, index) => (
+{data.userGrowth.toFixed(1)}%
{data.period}增长
活跃: {formatNumber(data.activeUsers)}
))}
{/* 系统状态 */}
实时状态
响应时间
{systemStats.avgResponseTime}ms
数据源
{systemStats.versionCount}个
缓存大小
{systemStats.cacheSize}MB
最后更新: {lastUpdate.toLocaleTimeString()}
{/* 数据增长趋势 */}
用户资产增长
{growthData.map((data, index) => (
{data.period}
活跃用户: {formatNumber(data.activeUsers)}
+{data.userGrowth.toFixed(1)}%
增长率
))}
数据增长情况
流量关键词
总计 {formatNumber(systemStats.keywordCount)} 个
+{growthData[0].dataGrowth.toFixed(1)}%
今日增长
{formatNumber(Math.floor(systemStats.userCount * 0.001))}
条/秒
{Math.floor(systemStats.userCount / 1000000)}TB
已使用
{/* 快速访问入口 */}
{tiles.map((t) => (
{t.title}
{t.icon}
{t.desc}
))}
{/* 快速指标示例(可后续接入真实数据) */}
} label="用户总量" value="~120+" />
} label="近7日活跃" value="动态计算" />
} label="平均RFM" value="50-80" />
} label="新客占比" value="≈25%" />
{/* 搜索 + 条件过滤 + 列表 */}
)
}