Files
ailine/backend/app/agent_subgraphs/dictionary/state.py

96 lines
2.8 KiB
Python
Raw Normal View History

"""
词典子图状态定义
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)