Files
ailine/backend/app/agent_subgraphs/contact/state.py
root a14744f18b
Some checks failed
构建并部署 AI Agent 服务 / deploy (push) Failing after 6m5s
feat: 完善词典子图,添加API调用和前端格式化工具
- 完善词典子图:添加生词本功能
- 创建API调用工具:dictionary_api
- 添加前端格式化展示工具:result_formatter.py
- 创建通讯录和资讯子图的基本结构
- 更新主图状态结构,添加MainGraphState
- 添加subgraph_builder.py用于子图集成
2026-04-25 18:29:23 +08:00

105 lines
2.9 KiB
Python

"""
通讯录子图状态定义
Contact Subgraph State Definition
"""
from enum import Enum, auto
from typing import Optional, Dict, List, Any
from dataclasses import dataclass, field
class ContactAction(Enum):
"""通讯录操作类型"""
NONE = auto()
CONTACT_LIST = auto() # 联系人列表
CONTACT_ADD = auto() # 添加联系人
CONTACT_UPDATE = auto() # 更新联系人
CONTACT_DELETE = auto() # 删除联系人
EMAIL_LIST = auto() # 邮件列表
EMAIL_READ = auto() # 读取邮件
EMAIL_SEND = auto() # 发送邮件
SNIFF_CONTACTS = auto() # 智能嗅探
@dataclass
class Contact:
"""联系人数据结构"""
id: Optional[str] = None
name: str = ""
phone: str = ""
email: str = ""
company: str = ""
position: str = ""
notes: str = ""
created_at: Optional[str] = None
updated_at: Optional[str] = None
metadata: Dict[str, Any] = field(default_factory=dict)
@dataclass
class Email:
"""邮件数据结构"""
id: Optional[str] = None
subject: str = ""
sender: str = ""
recipients: List[str] = field(default_factory=list)
date: Optional[str] = None
body: str = ""
is_read: bool = False
mailbox: str = ""
metadata: Dict[str, Any] = field(default_factory=dict)
@dataclass
class ContactState:
"""通讯录子图状态"""
# ========== 输入 ==========
user_query: str = "" # 用户查询
user_id: str = "" # 用户ID
# 操作控制
action: ContactAction = ContactAction.NONE
action_params: Dict[str, Any] = field(default_factory=dict)
# ========== 执行过程 ==========
# 当前阶段
current_phase: str = "init" # init, processing, reviewing, done
# 联系人相关
contacts: List[Contact] = field(default_factory=list)
current_contact: Optional[Contact] = None
# 邮件相关
emails: List[Email] = field(default_factory=list)
current_email: Optional[Email] = None
# 邮件草稿(用于审核)
draft_subject: str = ""
draft_recipient: str = ""
draft_body: str = ""
# ========== 人工审核相关 ==========
pending_review: bool = False
review_type: str = "" # email_send, contact_delete
review_prompt: str = ""
review_approved: Optional[bool] = None
review_comment: str = ""
review_modified_content: str = ""
# ========== 智能嗅探 ==========
sniff_result: Optional[Dict[str, Any]] = None
sniffed_contacts: List[Contact] = field(default_factory=list)
sniff_confirmation_pending: bool = False
# ========== 结果 ==========
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)