/** * 闭环健康度条组件 * * 展示"信号→决策→任务→验收→知识"5 阶段转化率。 * 数据来源:/tasks/loop-health API。 */ import { ChevronRight } from 'lucide-react' import { cn } from '@/lib/utils' interface LoopHealthBarProps { /** 闭环健康度数据 */ data: { task_generation_rate?: number store_execution_rate?: number weekly_check_rate?: number monthly_review_rate?: number practice_promotion_rate?: number } | null /** 各阶段数量(可选) */ counts?: { signals?: number decisions?: number tasks?: number checks?: number reviews?: number practices?: number } } /** 5 阶段定义 */ const STAGES = [ { key: 'task_generation_rate', label: '经营信号', countKey: 'signals', placeholder: '1,284' }, { key: 'store_execution_rate', label: '有效决策', countKey: 'decisions', placeholder: '46' }, { key: 'store_execution_rate', label: '执行任务', countKey: 'tasks', placeholder: '38' }, { key: 'weekly_check_rate', label: '完成验收', countKey: 'reviews', placeholder: '28' }, { key: 'practice_promotion_rate', label: '沉淀案例', countKey: 'practices', placeholder: '14' }, ] export function LoopHealthBar({ data, counts }: LoopHealthBarProps) { const stages = STAGES.map((s) => { const rate = data ? (data as any)[s.key] : null const count = counts ? (counts as any)[s.countKey] : null return { ...s, rate: rate != null ? Math.round(Number(rate) * 100) / 100 : null, count: count != null ? String(count) : s.placeholder, } }) return (