子仓库提交
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
/**
|
||||
* filekorolheader: 统计卡片组件 - AI决策统计数据展示
|
||||
* 功能:总决策数、状态分布、优先级统计、置信度展示
|
||||
* 路径:/ai-crop-model/support/dashboard/components/StatisticsCards
|
||||
* 规范:遵循crop-x/docs/开发项目规范.md,使用shadcn语义化样式
|
||||
*/
|
||||
import { Card } from '@/components/ui/card';
|
||||
import { Badge } from '@/components/ui/badge';
|
||||
import {
|
||||
LayoutDashboard,
|
||||
Sparkles,
|
||||
Activity,
|
||||
CheckCircle,
|
||||
AlertCircle,
|
||||
Zap,
|
||||
} from 'lucide-react';
|
||||
import { DecisionStats } from './aiDecisionDashboardReducer';
|
||||
|
||||
interface StatisticsCardsProps {
|
||||
stats: DecisionStats;
|
||||
}
|
||||
|
||||
export function StatisticsCards({ stats }: StatisticsCardsProps) {
|
||||
return (
|
||||
<div className="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-4">
|
||||
{/* 总决策数 */}
|
||||
<Card className="p-4 bg-card hover:bg-muted transition-colors">
|
||||
<div className="flex items-center justify-between mb-2">
|
||||
<div className="text-sm text-muted-foreground">总决策数</div>
|
||||
<LayoutDashboard className="w-4 h-4 text-muted-foreground" />
|
||||
</div>
|
||||
<div className="text-2xl font-bold">{stats.total}</div>
|
||||
<div className="text-xs text-muted-foreground mt-1">
|
||||
全部决策
|
||||
</div>
|
||||
</Card>
|
||||
|
||||
{/* 已生成 */}
|
||||
<Card className="p-4 bg-card hover:bg-muted transition-colors">
|
||||
<div className="flex items-center justify-between mb-2">
|
||||
<div className="text-sm text-muted-foreground">已生成</div>
|
||||
<Sparkles className="w-4 h-4 text-blue-500 dark:text-blue-400" />
|
||||
</div>
|
||||
<div className="text-2xl font-bold text-blue-600 dark:text-blue-400">{stats.generated}</div>
|
||||
<div className="text-xs text-muted-foreground mt-1">
|
||||
待执行
|
||||
</div>
|
||||
</Card>
|
||||
|
||||
{/* 执行中 */}
|
||||
<Card className="p-4 bg-card hover:bg-muted transition-colors">
|
||||
<div className="flex items-center justify-between mb-2">
|
||||
<div className="text-sm text-muted-foreground">执行中</div>
|
||||
<Activity className="w-4 h-4 text-purple-500 dark:text-purple-400" />
|
||||
</div>
|
||||
<div className="text-2xl font-bold text-purple-600 dark:text-purple-400">{stats.executing}</div>
|
||||
<div className="text-xs text-muted-foreground mt-1">
|
||||
正在执行
|
||||
</div>
|
||||
</Card>
|
||||
|
||||
{/* 已完成 */}
|
||||
<Card className="p-4 bg-card hover:bg-muted transition-colors">
|
||||
<div className="flex items-center justify-between mb-2">
|
||||
<div className="text-sm text-muted-foreground">已完成</div>
|
||||
<CheckCircle className="w-4 h-4 text-green-500 dark:text-green-400" />
|
||||
</div>
|
||||
<div className="text-2xl font-bold text-green-600 dark:text-green-400">{stats.completed}</div>
|
||||
<div className="text-xs text-muted-foreground mt-1">
|
||||
执行完成
|
||||
</div>
|
||||
</Card>
|
||||
|
||||
{/* 紧急决策 */}
|
||||
<Card className="p-4 bg-card hover:bg-muted transition-colors">
|
||||
<div className="flex items-center justify-between mb-2">
|
||||
<div className="text-sm text-muted-foreground">紧急决策</div>
|
||||
<AlertCircle className="w-4 h-4 text-red-500 dark:text-red-400" />
|
||||
</div>
|
||||
<div className="text-2xl font-bold text-red-600 dark:text-red-400">{stats.urgent}</div>
|
||||
<div className="text-xs text-muted-foreground mt-1">
|
||||
需优先处理
|
||||
</div>
|
||||
</Card>
|
||||
|
||||
{/* 平均置信度 */}
|
||||
<Card className="p-4 bg-card hover:bg-muted transition-colors">
|
||||
<div className="flex items-center justify-between mb-2">
|
||||
<div className="text-sm text-muted-foreground">平均置信度</div>
|
||||
<Zap className="w-4 h-4 text-yellow-500 dark:text-yellow-400" />
|
||||
</div>
|
||||
<div className="text-2xl font-bold text-yellow-600 dark:text-yellow-400">
|
||||
{(stats.avgConfidence * 100).toFixed(0)}%
|
||||
</div>
|
||||
<div className="text-xs text-muted-foreground mt-1">
|
||||
决策准确性
|
||||
</div>
|
||||
</Card>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user