export interface Assistant { id: string; name: string; callCount: number; opener: string; prompt: string; knowledgeBaseId: string; language: 'zh' | 'en'; voice: string; speed: number; hotwords: string[]; tools?: string[]; // IDs of enabled tools } export interface Voice { id: string; name: string; vendor: string; gender: string; language: string; description: string; } export interface KnowledgeBase { id: string; name: string; creator: string; createdAt: string; documents: KnowledgeDocument[]; } export interface KnowledgeDocument { id: string; name: string; size: string; uploadDate: string; } export interface CallLog { id: string; source: 'debug' | 'external'; status: 'connected' | 'missed'; startTime: string; duration: string; agentName: string; } export interface Workflow { id: string; name: string; nodeCount: number; createdAt: string; updatedAt: string; nodes: WorkflowNode[]; edges: WorkflowEdge[]; globalPrompt?: string; } export interface WorkflowNode { name: string; type: 'conversation' | 'tool' | 'human' | 'end'; isStart?: boolean; metadata: { position: { x: number; y: number }; }; prompt?: string; messagePlan?: { firstMessage?: string; }; variableExtractionPlan?: { output: Array<{ type: string; title: string; description: string; }>; }; tool?: { type: string; function: { name: string; parameters: any; }; destinations?: any[]; messages?: any[]; }; globalNodePlan?: { enabled: boolean; enterCondition: string; }; } export interface WorkflowEdge { from: string; to: string; label?: string; } export enum TabValue { GLOBAL = 'global', VOICE = 'voice', TOOLS = 'tools' } export enum TestType { FIXED = 'fixed', INTELLIGENT = 'intelligent' } export enum TestMethod { TEXT = 'text', AUDIO = 'audio' } export interface AutoTestAssistant { id: string; name: string; type: TestType; method: TestMethod; targetAssistantId: string; fixedWorkflowSteps: string[]; intelligentPrompt: string; createdAt: string; }