geo/frontend/types/next-action.ts

63 lines
1.6 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 下一步行动相关类型定义
*/
import type {
ActionPriority as ActionPriorityBase,
ActionItem,
} from "./suggestion";
// 从统一类型重新导出
export type ActionPriority = ActionPriorityBase;
export type { ActionItem };
// 行动项(扩展自统一 ActionItem保留 actionText 和 actionUrl 兼容字段)
export interface NextAction extends ActionItem {
actionText: string; // 行动按钮文字
actionUrl: string; // 兼容旧字段,与 href 值相同
}
// 用户状态上下文
export interface ActionContext {
// 用户数据状态
hasData: boolean;
hasBrands: boolean;
brandCount: number;
overallScore: number;
scoreChange: number;
competitorCount: number;
hasQueryHistory: boolean;
// 当前页面上下文
currentPage: "dashboard" | "brand" | "compare";
brandId?: string;
}
// 行动建议生成参数
export interface ActionGenerationParams {
context: ActionContext;
cachedActions?: NextAction[];
}
// 行动建议规则action 定义中不需要 href由 createAction 自动从 actionUrl 生成)
type ActionDefinition = Omit<NextAction, "id" | "priority" | "href">;
export interface ActionRule {
condition: (context: ActionContext) => boolean;
primaryAction: ActionDefinition;
secondaryAction: ActionDefinition | null;
optionalAction: ActionDefinition | null;
}
// 行动建议卡片Props
export interface NextActionCardProps {
context: ActionContext;
className?: string;
onActionClick?: (action: NextAction) => void;
}
// 行动建议项渲染Props
export interface ActionItemProps {
action: NextAction;
onClick?: () => void;
}