96 lines
2.8 KiB
Python
96 lines
2.8 KiB
Python
|
|
"""
|
||
|
|
词典子图状态定义
|
||
|
|
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)
|