import React, { useState, useMemo } from 'react'; import { Phone, CheckCircle, Clock, UserCheck, Activity, Filter, ChevronDown, BarChart3, HelpCircle, Mail, Sparkles, Terminal, Box, Zap, ShieldCheck } from 'lucide-react'; import { Card, Button } from '../components/UI'; import { mockAssistants, getDashboardStats } from '../services/mockData'; export const DashboardPage: React.FC = () => { const [timeRange, setTimeRange] = useState<'week' | 'month' | 'year'>('week'); const [selectedAssistantId, setSelectedAssistantId] = useState('all'); const stats = useMemo(() => { return getDashboardStats(timeRange, selectedAssistantId); }, [timeRange, selectedAssistantId]); return (
{/* 1. Utility Row (Top Navigation Actions) */}
{/* 2. Welcome Header */}

欢迎, Admin User

系统当前运行环境: HEALTHY

{/* 3. Section Header: Title + Filters */}

用量标准

Metrics Overview
{(['week', 'month', 'year'] as const).map((r) => ( ))}
{/* 4. Metrics Grid (Cards) */}
} trend="+12.5% UP" /> } trend="+2.1% UP" /> } trend="-0.5% LOW" /> } trend="+5% STABLE" />
{/* 5. Charts Section */}

通话趋势 (Performance Insight)

REAL-TIME DATA PROCESSING PIPELINE ENABLED

Streaming
{/* 6. Platform Feature Intro - Updated Background */}

关于平台

AI视频助手是一个领先的多模态智能体管理平台,致力于通过先进的 AI 技术为企业和个人提供高效、低延迟、拟人化的音视频通话解决方案。🚀

🤖

多模态智能体

支持构建具备文本对话、高保真语音输出以及双向实时视频通话能力的智能助手,覆盖 7x24h 智能客服场景。

📚

动态知识检索

深度集成 RAG 技术,允许上传私有 PDF/DOCX 文档,让智能体在通话中基于企业私域知识库提供精准、权威的回复。

🎙️

音色库与克隆

集成多家主流 TTS 引擎,支持极致的声音克隆与微调,为您的品牌定制专属的、富有情感表现力的真人音色。

🛡️

端到端测试

内置自动化测试助手,可通过固定流程或 AI 智能模拟用户进行压力测试与逻辑验证,确保发布前的服务稳定性。

); }; // --- Sub Components --- const StatCard: React.FC<{ title: string; value: string; icon: React.ReactNode; trend?: string }> = ({ title, value, icon, trend }) => (

{title}

{icon}
{value}
{trend && (

{trend}

)}
); const SimpleAreaChart: React.FC<{ data: { label: string, value: number }[] }> = ({ data }) => { if (!data || data.length === 0) return null; const height = 300; const width = 1400; const padding = 30; const maxValue = Math.max(...data.map(d => d.value)) * 1.2; const points = data.map((d, i) => { const x = (i / (data.length - 1)) * (width - padding * 2) + padding; const y = height - (d.value / maxValue) * (height - padding * 2) - padding; return `${x},${y}`; }).join(' '); const firstPoint = points.split(' ')[0]; const lastPoint = points.split(' ')[points.split(' ').length - 1]; const fillPath = `${points} ${lastPoint.split(',')[0]},${height} ${firstPoint.split(',')[0]},${height}`; return (
{/* Grid Lines */} {[0.25, 0.5, 0.75].map(v => ( ))} {/* Area Fill Gradient */} {data.length < 32 && data.map((d, i) => { const x = (i / (data.length - 1)) * (width - padding * 2) + padding; const y = height - (d.value / maxValue) * (height - padding * 2) - padding; return ( ); })} {/* X-Axis Labels */}
{data.filter((_, i) => i % Math.ceil(data.length / 7) === 0).map((d, i) => ( {d.label} ))}
); };