"use client" import { useState } from "react" import { Card, CardContent, CardHeader, CardTitle, CardDescription } from "@/components/ui/card" import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs" import { Button } from "@/components/ui/button" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select" import { Badge } from "@/components/ui/badge" import { ArrowUp, ArrowDown, Download, RefreshCw, Calendar } from "lucide-react" import { getGrowthClass } from "@/lib/utils" // 模拟图表组件 const LineChart = ({ data, title }: { data: any; title: string }) => (

{title}

图表组件将在这里显示

) const BarChart = ({ data, title }: { data: any; title: string }) => (

{title}

图表组件将在这里显示

) const PieChart = ({ data, title }: { data: any; title: string }) => (

{title}

图表组件将在这里显示

) export function DataDashboard() { const [timeRange, setTimeRange] = useState("7d") const [activeTab, setActiveTab] = useState("overview") // 模拟数据 const overviewData = { totalUsers: 1245678, userGrowth: 12.5, totalDataSources: 8, dataSourceGrowth: 33.3, totalRecords: 45678921, recordsGrowth: 8.7, dataQuality: 92, dataQualityGrowth: 3.2, } const dataSourceStats = [ { name: "CRM系统", records: 12500000, growth: 5.2, quality: 95 }, { name: "交易系统", records: 8750000, growth: 12.3, quality: 90 }, { name: "行为分析平台", records: 15800000, growth: 8.7, quality: 88 }, { name: "社交媒体", records: 4500000, growth: 15.2, quality: 85 }, { name: "设备管理系统", records: 3200000, growth: -2.1, quality: 93 }, ] const dataQualityIssues = [ { type: "缺失值", count: 12500, percentage: 0.027, severity: "medium" }, { type: "格式错误", count: 8750, percentage: 0.019, severity: "high" }, { type: "重复数据", count: 23800, percentage: 0.052, severity: "low" }, { type: "异常值", count: 4500, percentage: 0.01, severity: "high" }, { type: "不一致数据", count: 9200, percentage: 0.02, severity: "medium" }, ] const formatNumber = (num: number) => { if (num >= 1000000) { return (num / 1000000).toFixed(1) + "M" } else if (num >= 1000) { return (num / 1000).toFixed(1) + "K" } return num.toString() } const getSeverityBadge = (severity: string) => { switch (severity) { case "high": return case "medium": return case "low": return default: return 未知 } } return (

数据仪表盘

总用户数

{formatNumber(overviewData.totalUsers)}

{overviewData.userGrowth > 0 ? ( ) : ( )} {Math.abs(overviewData.userGrowth)}%

相比上一时段

数据源数量

{overviewData.totalDataSources}

{overviewData.dataSourceGrowth > 0 ? ( ) : ( )} {Math.abs(overviewData.dataSourceGrowth)}%

相比上一时段

总记录数

{formatNumber(overviewData.totalRecords)}

{overviewData.recordsGrowth > 0 ? ( ) : ( )} {Math.abs(overviewData.recordsGrowth)}%

相比上一时段

数据质量评分

{overviewData.dataQuality}/100

{overviewData.dataQualityGrowth > 0 ? ( ) : ( )} {Math.abs(overviewData.dataQualityGrowth)}%

相比上一时段

数据概览 数据源分析 数据质量 数据整合
用户数据增长趋势 近期用户数据增长情况 数据源分布 各数据源数据量占比 数据质量趋势 数据质量评分变化趋势 数据整合进度 各标识符数据整合进度
数据源统计 各数据源数据量和质量统计
{dataSourceStats.map((source, index) => ( ))}
数据源 记录数 增长率 质量评分
{source.name} {formatNumber(source.records)}
{source.growth > 0 ? ( ) : ( )} {Math.abs(source.growth)}%
{source.quality}/100
数据源记录数对比 各数据源记录数量对比 数据源质量对比 各数据源质量评分对比
数据质量问题 主要数据质量问题统计
{dataQualityIssues.map((issue, index) => ( ))}
问题类型 问题数量 占比 严重程度
{issue.type} {formatNumber(issue.count)} {(issue.percentage * 100).toFixed(2)}% {getSeverityBadge(issue.severity)}
数据质量问题分布 各类数据质量问题分布 数据质量趋势 数据质量随时间变化趋势
数据整合状态 基于不同标识符的数据整合状态
用户ID整合率 95%
手机号整合率 87%
身份证号整合率 72%
IMEI设备号整合率 68%
整体数据整合率 82%
数据整合趋势 数据整合率随时间变化趋势 标识符覆盖率 各标识符在用户数据中的覆盖率
) }