/** * 健康状态Dashboard类型定义 */ import type { ActionPriority as ActionPriorityBase, ActionItem, } from "./suggestion"; // 健康等级 export type HealthLevel = "excellent" | "good" | "pass" | "danger"; // 健康等级配置 export interface HealthLevelConfig { level: HealthLevel; label: string; icon: string; color: { bg: string; text: string; border: string; }; minScore: number; maxScore: number; } // 健康等级配置映射 export const HEALTH_LEVEL_CONFIG: Record = { excellent: { level: "excellent", label: "优秀", icon: "✓", color: { bg: "bg-emerald-50", text: "text-emerald-600", border: "border-emerald-200", }, minScore: 80, maxScore: 100, }, good: { level: "good", label: "良好", icon: "~", color: { bg: "bg-yellow-50", text: "text-yellow-600", border: "border-yellow-200", }, minScore: 60, maxScore: 79, }, pass: { level: "pass", label: "及格", icon: "!", color: { bg: "bg-orange-50", text: "text-orange-600", border: "border-orange-200", }, minScore: 40, maxScore: 59, }, danger: { level: "danger", label: "危险", icon: "⚠", color: { bg: "bg-red-50", text: "text-red-600", border: "border-red-200", }, minScore: 0, maxScore: 39, }, }; // 平台评分(带竞品对比) export interface PlatformScoreWithCompetitor { platform: string; score: number; competitor_score?: number; competitor_name?: string; // 兼容旧字段名 competitorScore?: number; competitorName?: string; } // 维度评分项 export interface DimensionScore { name: string; score: number; max_score: number; percentage: number; } // Dashboard统计数据 export interface DashboardStats { overall_score: number; health_level?: HealthLevel; score_change: number; platform_scores: PlatformScoreWithCompetitor[]; recent_queries: RecentQuery[]; // V2新增字段 dimensions?: DimensionScore[]; brand_name?: string; competitors_ahead?: number; // 领先的竞品数 competitors_behind?: number; // 落后的竞品数 monitored_platforms?: number; total_platforms?: number; } // 最近查询记录 export interface RecentQuery { id: string; keyword: string; target_brand: string; citation_count: number; queried_at: string; } // 行动建议(扩展自统一 ActionItem 类型) export type ActionPriority = ActionPriorityBase; export interface ActionSuggestion extends Omit { type: ActionPriority; priority: number; // 排序优先级(数字越小越优先) } // 维度名称映射 export const DIMENSION_LABELS: Record = { 提及率: "提及率", 推荐排名: "推荐排名", 情感倾向: "情感倾向", 引用质量: "引用质量", 竞品对比: "竞品对比", }; // 维度颜色映射 export const DIMENSION_COLORS: Record = { 提及率: "bg-blue-500", 推荐排名: "bg-purple-500", 情感倾向: "bg-emerald-500", 引用质量: "bg-amber-500", 竞品对比: "bg-rose-500", };