geo/frontend/types/suggestion.ts

143 lines
3.4 KiB
TypeScript

/**
* 优化建议相关类型定义
*/
// 建议类型
export type SuggestionType =
| "content_optimization"
| "platform_targeting"
| "competitor_gap"
| "query_expansion"
| "citation_improvement";
// 建议优先级
export type SuggestionPriority = "high" | "medium" | "low";
// 建议难度
export type SuggestionDifficulty = "easy" | "medium" | "hard";
// 建议状态
export type SuggestionStatus = "pending" | "in_progress" | "completed" | "dismissed";
// 优化建议
export interface Suggestion {
id: string;
brand_id: string;
type: SuggestionType;
priority: SuggestionPriority;
title: string;
description: string;
action: string | null;
expected_impact: string | null;
difficulty: SuggestionDifficulty;
status: SuggestionStatus;
generated_at: string;
updated_at: string;
batch_id: string;
source: "rule" | "llm";
}
// 建议列表响应
export interface SuggestionListResponse {
suggestions: Suggestion[];
total: number;
}
// 建议历史条目
export interface SuggestionHistoryItem {
batch_id: string;
generated_at: string;
source: "rule" | "llm";
suggestion_count: number;
suggestions: Suggestion[];
}
// 建议历史响应
export interface SuggestionHistoryResponse {
history: SuggestionHistoryItem[];
total: number;
}
// 建议类型配置
export const SUGGESTION_TYPE_CONFIG: Record<
SuggestionType,
{ label: string; icon: string; color: string; bgColor: string }
> = {
content_optimization: {
label: "内容优化",
icon: "FileText",
color: "text-blue-600",
bgColor: "bg-blue-50",
},
platform_targeting: {
label: "平台定向",
icon: "Monitor",
color: "text-purple-600",
bgColor: "bg-purple-50",
},
competitor_gap: {
label: "竞品差距",
icon: "GitCompare",
color: "text-red-600",
bgColor: "bg-red-50",
},
query_expansion: {
label: "查询词扩展",
icon: "Search",
color: "text-emerald-600",
bgColor: "bg-emerald-50",
},
citation_improvement: {
label: "引用改善",
icon: "Quote",
color: "text-amber-600",
bgColor: "bg-amber-50",
},
};
// 优先级配置
export const PRIORITY_CONFIG: Record<
SuggestionPriority,
{ label: string; color: string; bgColor: string; borderColor: string }
> = {
high: {
label: "高优先级",
color: "text-red-700",
bgColor: "bg-red-100",
borderColor: "border-l-red-500",
},
medium: {
label: "中优先级",
color: "text-amber-700",
bgColor: "bg-amber-100",
borderColor: "border-l-amber-500",
},
low: {
label: "低优先级",
color: "text-gray-600",
bgColor: "bg-gray-100",
borderColor: "border-l-gray-400",
},
};
// 难度配置
export const DIFFICULTY_CONFIG: Record<
SuggestionDifficulty,
{ label: string; color: string }
> = {
easy: { label: "简单", color: "text-emerald-600" },
medium: { label: "中等", color: "text-amber-600" },
hard: { label: "困难", color: "text-red-600" },
};
// 状态配置
export const STATUS_CONFIG: Record<
SuggestionStatus,
{ label: string; color: string; bgColor: string }
> = {
pending: { label: "待处理", color: "text-gray-600", bgColor: "bg-gray-100" },
in_progress: { label: "进行中", color: "text-blue-600", bgColor: "bg-blue-100" },
completed: { label: "已完成", color: "text-emerald-600", bgColor: "bg-emerald-100" },
dismissed: { label: "已忽略", color: "text-gray-400", bgColor: "bg-gray-50" },
};