"use client" import { useState } from "react" import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card" import { Badge } from "@/components/ui/badge" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs" import { Users, Search, Tag, TrendingUp, Filter, UserCircle, Mail, Phone, MapPin, Calendar, Activity, Target } from 'lucide-react' import { Avatar, AvatarFallback } from "@/components/ui/avatar" export default function UserPortrait() { const [searchQuery, setSearchQuery] = useState("") // 用户群体分布 const userSegments = [ { name: "高价值用户", count: 128456700, percentage: 3.0, avgValue: 580, color: "purple" }, { name: "活跃用户", count: 1285670000, percentage: 30.0, avgValue: 280, color: "blue" }, { name: "沉默用户", count: 1714283500, percentage: 40.0, avgValue: 85, color: "yellow" }, { name: "流失预警", count: 857134000, percentage: 20.0, avgValue: 45, color: "orange" }, { name: "新增用户", count: 300125800, percentage: 7.0, avgValue: 120, color: "green" }, ] // 标签分类统计 const tagCategories = [ { name: "基础属性", count: 485, usage: 4285670000, coverage: 100 }, { name: "行为标签", count: 328, usage: 3256780000, coverage: 76 }, { name: "兴趣偏好", count: 256, usage: 2570000000, coverage: 60 }, { name: "消费能力", count: 89, usage: 1714283500, coverage: 40 }, { name: "自定义标签", count: 100, usage: 857134000, coverage: 20 }, ] // 最近用户示例 const recentUsers = [ { id: "U001285", name: "张**", phone: "138****5678", level: "S", tags: ["高净值", "美妆爱好者", "VIP客户"], value: 5800, lastActive: "2小时前", }, { id: "U002456", name: "李**", phone: "186****1234", level: "A", tags: ["活跃用户", "教育培训", "复购客户"], value: 3200, lastActive: "5小时前", }, { id: "U003789", name: "王**", phone: "159****9876", level: "B", tags: ["潜力用户", "电商购物", "新客户"], value: 1800, lastActive: "1天前", }, { id: "U004123", name: "赵**", phone: "177****5432", level: "C", tags: ["普通用户", "低频互动"], value: 850, lastActive: "3天前", }, ] 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 getLevelColor = (level: string) => { const colors = { S: "border-purple-500/50 text-purple-400 bg-purple-500/10", A: "border-blue-500/50 text-blue-400 bg-blue-500/10", B: "border-green-500/50 text-green-400 bg-green-500/10", C: "border-yellow-500/50 text-yellow-400 bg-yellow-500/10", D: "border-gray-500/50 text-gray-400 bg-gray-500/10", } return colors[level as keyof typeof colors] || colors.D } const getSegmentColor = (color: string) => { const colors = { purple: "from-purple-500/20 to-purple-900/20 border-purple-500/30", blue: "from-blue-500/20 to-blue-900/20 border-blue-500/30", green: "from-green-500/20 to-green-900/20 border-green-500/30", yellow: "from-yellow-500/20 to-yellow-900/20 border-yellow-500/30", orange: "from-orange-500/20 to-orange-900/20 border-orange-500/30", } return colors[color as keyof typeof colors] } return (
用户管理、标签体系与群体分析
{category.count} 个标签