""" 词典子图状态定义 Dictionary Subgraph State Definition """ from enum import Enum, auto from typing import Optional, Dict, List, Any from dataclasses import dataclass, field class DictionaryAction(Enum): """词典操作类型""" NONE = auto() QUERY = auto() # 查询单词 TRANSLATE = auto() # 翻译文本 EXTRACT = auto() # 提取专业术语 DAILY_WORD = auto() # 每日一词 WORD_BOOK_LOOKUP = auto() # 生词本查询 WORD_BOOK_ADD = auto() # 添加到生词本 @dataclass class WordEntry: """单词词条""" word: str = "" phonetic: str = "" # 音标 part_of_speech: str = "" # 词性 definitions: List[str] = field(default_factory=list) # 释义 examples: List[str] = field(default_factory=list) # 例句 synonyms: List[str] = field(default_factory=list) # 同义词 antonyms: List[str] = field(default_factory=list) # 反义词 source_language: str = "en" # 源语言 target_language: str = "zh" # 目标语言 in_word_book: bool = False # 是否在生词本 review_count: int = 0 # 复习次数 next_review_at: Optional[str] = None # 下次复习时间 created_at: Optional[str] = None metadata: Dict[str, Any] = field(default_factory=dict) @dataclass class ExtractedTerm: """提取的术语""" term: str = "" type: str = "" # 技术术语、医学术语等 definition: str = "" context: str = "" confidence: float = 0.0 metadata: Dict[str, Any] = field(default_factory=dict) @dataclass class DictionaryState: """词典子图状态""" # ========== 输入 ========== user_query: str = "" # 用户查询 user_id: str = "" # 用户ID # 操作控制 action: DictionaryAction = DictionaryAction.NONE action_params: Dict[str, Any] = field(default_factory=dict) # 翻译专用 source_text: str = "" source_language: str = "auto" # auto, en, zh, etc. target_language: str = "zh" # 默认翻译成中文 # ========== 执行过程 ========== current_phase: str = "init" # init, querying, extracting, done # 查询结果 word_entry: Optional[WordEntry] = None # 翻译结果 translated_text: str = "" translation_confidence: float = 0.0 # 提取结果 extracted_terms: List[ExtractedTerm] = field(default_factory=list) # 每日一词 daily_word: Optional[WordEntry] = None daily_word_context: str = "" # ========== 结果 ========== success: bool = False error_message: str = "" final_result: str = "" result_data: Dict[str, Any] = field(default_factory=dict) # ========== 元数据 ========== start_time: Optional[str] = None end_time: Optional[str] = None duration: float = 0.0 debug_info: Dict[str, Any] = field(default_factory=dict)