You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
367 lines
22 KiB
367 lines
22 KiB
"""
|
|
数据库 ORM 模型模块
|
|
|
|
本模块定义了所有数据库表对应的 SQLAlchemy ORM 模型。
|
|
每个类映射到一张数据库表,类属性映射到表字段。
|
|
"""
|
|
import uuid
|
|
from datetime import datetime
|
|
from sqlalchemy import Column, String, DateTime, ForeignKey, Integer, Boolean, JSON, Text, Float
|
|
from sqlalchemy.dialects.postgresql import UUID
|
|
from sqlalchemy.orm import relationship
|
|
from database import Base
|
|
|
|
|
|
class Department(Base):
|
|
"""部门表 (departments),存储企业部门层级结构,支持多级树形组织架构。"""
|
|
__tablename__ = "departments"
|
|
|
|
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) # 部门唯一标识 UUID
|
|
name = Column(String(100), nullable=False) # 部门名称
|
|
parent_id = Column(UUID(as_uuid=True), ForeignKey("departments.id"), nullable=True) # 上级部门 ID,用于构建树形结构
|
|
path = Column(String(500), default="/") # 部门路径,从根节点到当前节点的路径字符串
|
|
level = Column(Integer, default=0) # 部门层级深度(根部门为 0)
|
|
sort_order = Column(Integer, default=0) # 排序序号,同级部门按此字段排列顺序
|
|
created_at = Column(DateTime, default=datetime.utcnow) # 记录创建时间
|
|
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) # 记录更新时间
|
|
|
|
children = relationship("Department", backref="parent", remote_side=[id]) # 子部门列表(一对多自引用)
|
|
users = relationship("User", back_populates="department") # 部门下的用户列表
|
|
|
|
|
|
class User(Base):
|
|
"""用户表 (users),存储系统用户信息,包括账号、身份、组织归属。"""
|
|
__tablename__ = "users"
|
|
|
|
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) # 用户唯一标识 UUID
|
|
username = Column(String(50), unique=True, nullable=False) # 登录用户名(唯一)
|
|
password_hash = Column(String(255), nullable=False) # 密码哈希值(bcrypt 加密)
|
|
display_name = Column(String(100), nullable=False) # 用户显示名称
|
|
email = Column(String(100)) # 电子邮箱
|
|
phone = Column(String(20)) # 手机号码
|
|
wecom_user_id = Column(String(100), unique=True) # 企业微信用户 ID(唯一)
|
|
department_id = Column(UUID(as_uuid=True), ForeignKey("departments.id")) # 所属部门 ID
|
|
position = Column(String(100)) # 职位/岗位名称
|
|
manager_id = Column(UUID(as_uuid=True), ForeignKey("users.id")) # 直接上级用户 ID
|
|
status = Column(String(20), default="active") # 用户状态:active/inactive/disabled
|
|
created_at = Column(DateTime, default=datetime.utcnow) # 记录创建时间
|
|
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) # 记录更新时间
|
|
|
|
department = relationship("Department", back_populates="users") # 所属部门(多对一)
|
|
roles = relationship("UserRole", back_populates="user") # 用户角色列表(通过中间表关联)
|
|
manager = relationship("User", remote_side=[id], backref="subordinates") # 直接上级(自引用)
|
|
|
|
|
|
class Role(Base):
|
|
"""角色表 (roles),存储系统角色定义,用于 RBAC 权限管理。"""
|
|
__tablename__ = "roles"
|
|
|
|
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) # 角色唯一标识 UUID
|
|
name = Column(String(50), unique=True, nullable=False) # 角色名称(唯一)
|
|
code = Column(String(50), unique=True, nullable=False, default="") # 角色编码(唯一,如 admin/user)
|
|
description = Column(String(200)) # 角色描述
|
|
is_system = Column(Boolean, default=False) # 是否为系统内置角色(不可删除)
|
|
data_scope = Column(String(50), default="self_only") # 数据权限范围:self_only/department/all
|
|
created_at = Column(DateTime, default=datetime.utcnow) # 记录创建时间
|
|
|
|
permissions = relationship("RolePermission", back_populates="role") # 角色权限关联列表
|
|
|
|
|
|
class Permission(Base):
|
|
"""权限表 (permissions),存储系统中每个可操作的权限点。"""
|
|
__tablename__ = "permissions"
|
|
|
|
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) # 权限唯一标识 UUID
|
|
code = Column(String(100), unique=True, nullable=False) # 权限编码(唯一)
|
|
name = Column(String(100), nullable=False) # 权限名称
|
|
resource = Column(String(100), nullable=False) # 所属资源名称(如 user/role)
|
|
action = Column(String(50), nullable=False) # 操作类型(create/read/update/delete)
|
|
description = Column(String(200)) # 权限描述
|
|
|
|
|
|
class RolePermission(Base):
|
|
"""角色-权限关联表 (role_permissions),多对多关联中间表。"""
|
|
__tablename__ = "role_permissions"
|
|
|
|
role_id = Column(UUID(as_uuid=True), ForeignKey("roles.id", ondelete="CASCADE"), primary_key=True) # 角色 ID(级联删除)
|
|
permission_id = Column(UUID(as_uuid=True), ForeignKey("permissions.id", ondelete="CASCADE"), primary_key=True) # 权限 ID(级联删除)
|
|
|
|
role = relationship("Role", back_populates="permissions")
|
|
permission = relationship("Permission")
|
|
|
|
|
|
class UserRole(Base):
|
|
"""用户-角色关联表 (user_roles),多对多关联中间表。"""
|
|
__tablename__ = "user_roles"
|
|
|
|
user_id = Column(UUID(as_uuid=True), ForeignKey("users.id", ondelete="CASCADE"), primary_key=True) # 用户 ID(级联删除)
|
|
role_id = Column(UUID(as_uuid=True), ForeignKey("roles.id", ondelete="CASCADE"), primary_key=True) # 角色 ID(级联删除)
|
|
|
|
user = relationship("User", back_populates="roles")
|
|
role = relationship("Role")
|
|
|
|
|
|
class ChatSession(Base):
|
|
"""聊天会话表 (chat_sessions),存储用户与 AI 智能体的对话会话记录。"""
|
|
__tablename__ = "chat_sessions"
|
|
|
|
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) # 会话唯一标识 UUID
|
|
user_id = Column(UUID(as_uuid=True), ForeignKey("users.id", ondelete="CASCADE")) # 所属用户 ID
|
|
agent_type = Column(String(50), nullable=False) # 智能体类型(chat/flow/rag)
|
|
session_id = Column(String(100), unique=True, nullable=False) # 外部会话 ID(对客户端暴露)
|
|
status = Column(String(20), default="active") # 会话状态:active/closed
|
|
created_at = Column(DateTime, default=datetime.utcnow) # 记录创建时间
|
|
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) # 记录更新时间
|
|
|
|
|
|
class ChatMessage(Base):
|
|
"""聊天消息表 (chat_messages),存储聊天会话中的每条消息内容。"""
|
|
__tablename__ = "chat_messages"
|
|
|
|
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) # 消息唯一标识 UUID
|
|
session_id = Column(UUID(as_uuid=True), ForeignKey("chat_sessions.id", ondelete="CASCADE")) # 所属会话 ID
|
|
user_id = Column(UUID(as_uuid=True), ForeignKey("users.id", ondelete="CASCADE")) # 发送者用户 ID
|
|
role = Column(String(20), nullable=False) # 消息角色:user/assistant/system
|
|
content = Column(Text, nullable=False) # 消息内容文本
|
|
metadata_ = Column("metadata", JSON, default=dict) # 元数据(额外信息 JSON)
|
|
created_at = Column(DateTime, default=datetime.utcnow) # 记录创建时间
|
|
|
|
|
|
class Task(Base):
|
|
"""任务表 (tasks),存储分配给用户的待办任务信息。"""
|
|
__tablename__ = "tasks"
|
|
|
|
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) # 任务唯一标识 UUID
|
|
title = Column(String(200), nullable=False) # 任务标题
|
|
content = Column(Text) # 任务内容描述
|
|
assigner_id = Column(UUID(as_uuid=True), ForeignKey("users.id")) # 任务分配者(发起人)ID
|
|
assignee_id = Column(UUID(as_uuid=True), ForeignKey("users.id"), nullable=False) # 任务执行人 ID
|
|
status = Column(String(20), default="pending") # 任务状态:pending/in_progress/completed/cancelled
|
|
priority = Column(String(20), default="normal") # 优先级:low/normal/high/urgent
|
|
deadline = Column(DateTime) # 截止日期时间
|
|
wecom_message_id = Column(String(100)) # 企业微信消息 ID
|
|
created_at = Column(DateTime, default=datetime.utcnow) # 记录创建时间
|
|
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) # 记录更新时间
|
|
|
|
|
|
class FlowDefinition(Base):
|
|
"""流程定义表 (flow_definitions),存储可执行 AI 工作流的节点和连线配置。"""
|
|
__tablename__ = "flow_definitions"
|
|
|
|
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) # 流程唯一标识 UUID
|
|
name = Column(String(200), nullable=False) # 流程名称
|
|
description = Column(Text) # 流程描述
|
|
version = Column(Integer, default=1) # 当前版本号
|
|
status = Column(String(20), default="draft") # 流程状态:draft/published/archived
|
|
definition_json = Column(JSON, nullable=False, default=dict) # 已发布的节点和连线配置 JSON
|
|
published_version_id = Column(UUID(as_uuid=True), ForeignKey("flow_versions.id"), nullable=True) # 已发布版本 ID
|
|
draft_definition_json = Column(JSON, nullable=True, default=None) # 草稿编辑中的配置 JSON
|
|
creator_id = Column(UUID(as_uuid=True), ForeignKey("users.id")) # 创建者用户 ID
|
|
flow_mode = Column(String(20), default="chatflow") # 流程模式:chatflow/workflow
|
|
published_to_wecom = Column(Boolean, default=False) # 是否已发布到企业微信
|
|
published_to_web = Column(Boolean, default=False) # 是否已发布到 Web 端
|
|
created_at = Column(DateTime, default=datetime.utcnow) # 记录创建时间
|
|
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) # 记录更新时间
|
|
|
|
published_version = relationship("FlowVersion", foreign_keys=[published_version_id], post_update=True)
|
|
|
|
|
|
class FlowVersion(Base):
|
|
"""流程版本表 (flow_versions),存储流程定义的历史版本快照。"""
|
|
__tablename__ = "flow_versions"
|
|
|
|
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) # 版本唯一标识 UUID
|
|
flow_id = Column(UUID(as_uuid=True), ForeignKey("flow_definitions.id", ondelete="CASCADE"), nullable=False) # 所属流程定义 ID
|
|
version = Column(Integer, nullable=False) # 版本号(同一流程内递增)
|
|
definition_json = Column(JSON, nullable=False, default=dict) # 该版本的流程定义 JSON 快照
|
|
changelog = Column(Text, default="") # 版本变更日志
|
|
published_by = Column(UUID(as_uuid=True), ForeignKey("users.id")) # 发布者用户 ID
|
|
published_to_wecom = Column(Boolean, default=False) # 是否发布到企业微信
|
|
published_to_web = Column(Boolean, default=False) # 是否发布到 Web 端
|
|
created_at = Column(DateTime, default=datetime.utcnow) # 记录创建时间
|
|
|
|
|
|
class FlowApiKey(Base):
|
|
"""流程 API 密钥表 (flow_api_keys),存储用于外部调用流程的 API 密钥。"""
|
|
__tablename__ = "flow_api_keys"
|
|
|
|
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) # 密钥唯一标识 UUID
|
|
flow_id = Column(UUID(as_uuid=True), ForeignKey("flow_definitions.id", ondelete="CASCADE"), nullable=False) # 所属流程 ID
|
|
name = Column(String(100), nullable=False) # 密钥名称
|
|
key_hash = Column(String(64), nullable=False) # 密钥哈希值(SHA-256 加密存储)
|
|
key_prefix = Column(String(10), nullable=False) # 密钥前缀(用于显示识别)
|
|
created_by = Column(UUID(as_uuid=True), ForeignKey("users.id")) # 创建者用户 ID
|
|
last_used_at = Column(DateTime, nullable=True) # 最后使用时间
|
|
created_at = Column(DateTime, default=datetime.utcnow) # 记录创建时间
|
|
|
|
|
|
class FlowTemplate(Base):
|
|
"""流程模板表 (flow_templates),存储预定义的流程模板,可供用户快速创建流程。"""
|
|
__tablename__ = "flow_templates"
|
|
|
|
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) # 模板唯一标识 UUID
|
|
name = Column(String(200), nullable=False) # 模板名称
|
|
description = Column(Text, default="") # 模板描述
|
|
category = Column(String(50), default="") # 模板分类
|
|
definition_json = Column(JSON, nullable=False, default=dict) # 模板的流程定义 JSON
|
|
icon = Column(String(50), default="") # 模板图标名称
|
|
sort_order = Column(Integer, default=0) # 排序序号
|
|
is_builtin = Column(Boolean, default=False) # 是否为系统内置模板
|
|
usage_count = Column(Integer, default=0) # 使用次数统计
|
|
created_by = Column(UUID(as_uuid=True), ForeignKey("users.id")) # 创建者用户 ID
|
|
created_at = Column(DateTime, default=datetime.utcnow) # 记录创建时间
|
|
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) # 记录更新时间
|
|
|
|
|
|
class AgentConfig(Base):
|
|
"""智能体配置表 (agent_configs),存储 AI 智能体的配置参数。"""
|
|
__tablename__ = "agent_configs"
|
|
|
|
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) # 配置唯一标识 UUID
|
|
name = Column(String(200), nullable=False) # 智能体名称
|
|
description = Column(Text) # 智能体描述
|
|
system_prompt = Column(Text) # 系统提示词
|
|
model = Column(String(100), default="") # 默认模型名称
|
|
model_instance_id = Column(UUID(as_uuid=True), nullable=True) # 关联的模型实例 ID
|
|
embedding_model_id = Column(UUID(as_uuid=True), nullable=True) # 关联的嵌入模型 ID
|
|
temperature = Column(Float, default=0.7) # 温度参数
|
|
tools = Column(JSON, default=list) # 可用工具列表
|
|
status = Column(String(20), default="active") # 状态:active/inactive
|
|
creator_id = Column(UUID(as_uuid=True), ForeignKey("users.id")) # 创建者用户 ID
|
|
created_at = Column(DateTime, default=datetime.utcnow) # 记录创建时间
|
|
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) # 记录更新时间
|
|
|
|
|
|
class ModelProvider(Base):
|
|
"""模型供应商表 (model_providers),存储 LLM/Embedding/Rerank 模型供应商的接入配置。"""
|
|
__tablename__ = "model_providers"
|
|
|
|
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) # 供应商唯一标识 UUID
|
|
name = Column(String(100), nullable=False) # 供应商名称(如 OpenAI、智谱AI)
|
|
provider_type = Column(String(50), nullable=False) # 供应商类型:openai_compatible/openai/zhipu/ollama/deepseek
|
|
base_url = Column(String(500)) # API 基础地址
|
|
api_key = Column(String(500)) # API 密钥(加密存储)
|
|
extra_config = Column(JSON, default=dict) # 额外配置(如 region、project 等)
|
|
is_active = Column(Boolean, default=True) # 是否启用
|
|
created_at = Column(DateTime, default=datetime.utcnow) # 记录创建时间
|
|
|
|
|
|
class ModelInstance(Base):
|
|
"""模型实例表 (model_instances),存储供应商下的具体模型实例。支持 LLM/Embedding/Rerank 三种类型。"""
|
|
__tablename__ = "model_instances"
|
|
|
|
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) # 实例唯一标识 UUID
|
|
provider_id = Column(UUID(as_uuid=True), ForeignKey("model_providers.id", ondelete="CASCADE"), nullable=False) # 所属供应商 ID
|
|
model_name = Column(String(200), nullable=False) # 模型标识名(如 gpt-4o、text-embedding-3-small、bge-reranker-v2-m3)
|
|
model_type = Column(String(20), nullable=False) # 模型类型:llm/embedding/rerank
|
|
display_name = Column(String(200)) # 显示名称(如 GPT-4o、Embedding-3-Small、BGE Reranker)
|
|
capabilities = Column(JSON, default=dict) # 能力配置(LLM: vision/function_calling; Embedding/Rerank: dimension/max_tokens)
|
|
default_params = Column(JSON, default=dict) # 默认参数(如 temperature、max_tokens、dimension)
|
|
is_default = Column(Boolean, default=False) # 是否为该类型下的默认模型
|
|
is_active = Column(Boolean, default=True) # 是否启用
|
|
created_at = Column(DateTime, default=datetime.utcnow) # 记录创建时间
|
|
|
|
|
|
class CustomTool(Base):
|
|
"""自定义工具表 (custom_tools),存储用户自定义的 HTTP 工具定义。"""
|
|
__tablename__ = "custom_tools"
|
|
|
|
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) # 工具唯一标识 UUID
|
|
name = Column(String(100), unique=True, nullable=False) # 工具名称(唯一)
|
|
description = Column(Text) # 工具描述
|
|
schema_json = Column(JSON, nullable=False, default=dict) # 参数 Schema 定义 JSON
|
|
endpoint_url = Column(String(500), default="") # API 端点 URL
|
|
method = Column(String(10), default="GET") # HTTP 方法
|
|
path = Column(String(500), default="") # API 路径
|
|
headers_json = Column(JSON, default=dict) # 自定义请求头
|
|
auth_type = Column(String(20), default="none") # 认证类型:none/api_key/bearer
|
|
auth_config = Column(JSON, default=dict) # 认证配置信息
|
|
is_active = Column(Boolean, default=True) # 是否启用(软删除标记)
|
|
created_by = Column(UUID(as_uuid=True), ForeignKey("users.id")) # 创建者用户 ID
|
|
created_at = Column(DateTime, default=datetime.utcnow) # 记录创建时间
|
|
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) # 记录更新时间
|
|
|
|
|
|
class MCPService(Base):
|
|
"""MCP 服务注册表 (mcp_services),存储 Model Context Protocol 服务的注册信息。"""
|
|
__tablename__ = "mcp_services"
|
|
|
|
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) # 服务唯一标识 UUID
|
|
name = Column(String(100), nullable=False) # 服务名称
|
|
endpoint_url = Column(String(500), nullable=False) # MCP 服务端点 URL
|
|
status = Column(String(20), default="active") # 服务状态:active/inactive/error
|
|
config = Column(JSON, default=dict) # 服务配置信息
|
|
last_heartbeat = Column(DateTime) # 最后心跳时间
|
|
created_at = Column(DateTime, default=datetime.utcnow) # 记录创建时间
|
|
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) # 记录更新时间
|
|
|
|
|
|
class AuditLog(Base):
|
|
"""审计日志表 (audit_logs),记录系统关键操作的审计追踪日志。"""
|
|
__tablename__ = "audit_logs"
|
|
|
|
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) # 日志唯一标识 UUID
|
|
user_id = Column(UUID(as_uuid=True), ForeignKey("users.id"), nullable=True) # 操作用户 ID
|
|
action = Column(String(50), nullable=False) # 操作类型(create/update/delete/login/export)
|
|
resource_type = Column(String(50), nullable=False) # 资源类型(user/agent/flow/document/task)
|
|
resource_id = Column(String(100)) # 资源 ID
|
|
detail = Column(JSON, default=dict) # 操作详情 JSON
|
|
ip_address = Column(String(50)) # 操作来源 IP
|
|
user_agent = Column(String(500)) # 客户端 User-Agent
|
|
created_at = Column(DateTime, default=datetime.utcnow) # 日志记录时间
|
|
|
|
|
|
class NotificationTemplate(Base):
|
|
"""通知模板表 (notification_templates),存储企业微信等渠道的消息通知模板。"""
|
|
__tablename__ = "notification_templates"
|
|
|
|
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) # 模板唯一标识 UUID
|
|
name = Column(String(100), unique=True, nullable=False) # 模板名称(唯一)
|
|
channel = Column(String(20), nullable=False) # 通知渠道:wecom/email/webhook
|
|
event_type = Column(String(50), nullable=False) # 触发事件类型
|
|
subject_template = Column(String(500)) # 消息标题模板
|
|
body_template = Column(Text) # 消息正文模板
|
|
is_active = Column(Boolean, default=True) # 是否启用
|
|
created_at = Column(DateTime, default=datetime.utcnow) # 记录创建时间
|
|
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) # 记录更新时间
|
|
|
|
|
|
class SystemMetric(Base):
|
|
"""系统指标表 (system_metrics),存储系统运行时性能指标数据。"""
|
|
__tablename__ = "system_metrics"
|
|
|
|
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) # 指标唯一标识 UUID
|
|
metric_name = Column(String(50), nullable=False) # 指标名称(cpu/memory/request_latency/active_users)
|
|
metric_value = Column(Float) # 指标数值
|
|
tags = Column(JSON, default=dict) # 标签维度(如 instance、region)
|
|
recorded_at = Column(DateTime, default=datetime.utcnow, index=True) # 记录时间(索引)
|
|
|
|
|
|
class FlowExecution(Base):
|
|
"""流程执行记录表 (flow_executions),存储工作流每次执行的详细记录。"""
|
|
__tablename__ = "flow_executions"
|
|
|
|
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) # 执行记录唯一标识 UUID
|
|
flow_id = Column(UUID(as_uuid=True), ForeignKey("flow_definitions.id"), nullable=False) # 关联的流程定义 ID
|
|
session_id = Column(String(100)) # 关联的会话 ID
|
|
status = Column(String(20), default="running") # 执行状态:running/completed/failed/cancelled
|
|
input_data = Column(JSON, default=dict) # 输入数据
|
|
output_data = Column(JSON, default=dict) # 输出数据
|
|
error_message = Column(Text) # 错误信息(失败时记录)
|
|
started_by = Column(UUID(as_uuid=True), ForeignKey("users.id")) # 触发执行的用户 ID
|
|
started_at = Column(DateTime, default=datetime.utcnow) # 开始时间
|
|
finished_at = Column(DateTime) # 结束时间
|
|
duration_ms = Column(Integer) # 执行耗时(毫秒)
|
|
|
|
|
|
class MemoryMessage(Base):
|
|
"""记忆消息表 (memory_messages),存储流程引擎中节点的中间记忆数据。"""
|
|
__tablename__ = "memory_messages"
|
|
|
|
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) # 消息唯一标识 UUID
|
|
flow_execution_id = Column(UUID(as_uuid=True), ForeignKey("flow_executions.id", ondelete="CASCADE"), nullable=False) # 关联的流程执行 ID
|
|
node_id = Column(String(100), nullable=False) # 节点标识
|
|
role = Column(String(20), nullable=False) # 消息角色:user/assistant/system/tool
|
|
content = Column(Text, nullable=False) # 消息内容
|
|
metadata_ = Column("metadata", JSON, default=dict) # 元数据
|
|
created_at = Column(DateTime, default=datetime.utcnow) # 记录创建时间
|
|
|