"use client" import { useState, useEffect } from "react" import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card" import { Button } from "@/components/ui/button" import { Badge } from "@/components/ui/badge" import { Progress } from "@/components/ui/progress" import Link from "next/link" import { Package, Server, Webhook, ArrowUpRight, TrendingUp, Users, Zap, DollarSign, Loader2, Diamond, Award, Medal, Shield, Target, BarChart3, Globe, ArrowDownToLine, ArrowUpFromLine, } from "lucide-react" export default function DataMarketPage() { const [loading, setLoading] = useState(true) const [pools, setPools] = useState([]) const [stats, setStats] = useState({ totalPackages: 0, totalApis: 8, totalSubscriptions: 45, monthlyRevenue: 125000, apiCalls: 8956234 }) useEffect(() => { loadData() }, []) const loadData = async () => { setLoading(true) try { const res = await fetch('/api/traffic-packages?action=pools') const data = await res.json() if (data.success) { setPools(data.pools) setStats(prev => ({ ...prev, totalPackages: data.pools.length })) } } catch (error) { console.error('加载失败:', error) } finally { setLoading(false) } } const formatNumber = (num: number): string => { if (num >= 1000000) return `${(num / 1000000).toFixed(1)}M` if (num >= 1000) return `${(num / 1000).toFixed(0)}K` return num.toLocaleString() } // 流量池图标映射 const poolIcons: Record = { diamond: Diamond, gold: Award, silver: Medal, bronze: Shield, potential: Target } // 流量池颜色映射 const poolColors: Record = { diamond: 'from-purple-500 to-pink-500', gold: 'from-yellow-500 to-orange-500', silver: 'from-gray-400 to-gray-500', bronze: 'from-orange-400 to-orange-600', potential: 'from-blue-400 to-cyan-500' } const modules = [ { title: "流量包", icon: Package, color: "text-purple-600", bg: "bg-purple-100", href: "/data-market/packages", desc: "用户人群包创建与导出,按流量池分层管理", stats: `${pools.length}个流量池`, }, { title: "API市场", icon: Server, color: "text-blue-600", bg: "bg-blue-100", href: "/data-market/api", desc: "开放API接口服务,支持用户查询、画像等", stats: `${stats.totalApis}个API`, }, { title: "开放接口", icon: Globe, color: "text-orange-600", bg: "bg-orange-100", href: "/data-market/open-api", desc: "第三方系统对接,存客宝/点了码数据流入流出", stats: "3个接入方", }, { title: "数据订阅", icon: Webhook, color: "text-green-600", bg: "bg-green-100", href: "/data-market/subscription", desc: "实时数据推送服务,支持Webhook订阅", stats: `${stats.totalSubscriptions}个订阅`, }, ] if (loading) { return (
加载数据市场...
) } return (
{/* 顶部标题 */}

数据市场

用户数据资产变现与开放服务平台

{/* 统计概览 */}

流量池

{pools.length}

API接口

{stats.totalApis}

API调用

{formatNumber(stats.apiCalls)}

月收入

¥{formatNumber(stats.monthlyRevenue)}

{/* 功能模块 */}
{modules.map((module, index) => (

{module.title}

{module.desc}

{module.stats}
))}
{/* 流量池资产 */} 可变现数据资产 按价值分层
{pools.map((pool) => { const PoolIcon = poolIcons[pool.id] || Package const color = poolColors[pool.id] || 'from-gray-400 to-gray-500' return (

{pool.name}

{formatNumber(pool.count || 0)} 用户
) })}
{/* 数据变现趋势 */}
API调用趋势
{[ { name: '用户画像API', calls: 3500000, growth: 12.5 }, { name: '智能搜索API', calls: 2800000, growth: 8.3 }, { name: '人群圈选API', calls: 1500000, growth: 25.6 }, { name: 'RFM评分API', calls: 1156234, growth: 15.2 }, ].map((api, i) => (
{api.name}
{formatNumber(api.calls)} 次调用
+{api.growth}%
))}
数据订阅分布
{[ { name: '用户行为数据', percentage: 35 }, { name: '交易数据', percentage: 28 }, { name: '标签更新', percentage: 22 }, { name: '用户画像变更', percentage: 15 }, ].map((sub, i) => (
{sub.name} {sub.percentage}%
))}
) }