Build lightweight AI agent admin
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
"""
|
||||
AI 工作流模型
|
||||
"""
|
||||
from sqlalchemy import Column, String, Text, Integer, Boolean, DateTime, JSON, Index
|
||||
|
||||
from app.base_model import BaseModel
|
||||
|
||||
|
||||
class AIWorkflow(BaseModel):
|
||||
"""
|
||||
AI 工作流定义
|
||||
|
||||
独立于 AIApp 的工作流定义,可以被多个应用引用
|
||||
"""
|
||||
__tablename__ = "ai_workflow"
|
||||
|
||||
application_id = Column(String(21), nullable=True, index=True, comment="所属应用ID(逻辑外键关联core_application)")
|
||||
is_global = Column(Boolean, default=False, comment="是否在子应用中可见")
|
||||
name = Column(String(100), nullable=False, comment="工作流名称")
|
||||
code = Column(String(100), unique=True, nullable=False, comment="工作流编码")
|
||||
workflow_type = Column(String(30), default="general", comment="工作流类型: general/application/form/report/data_process/automation")
|
||||
description = Column(Text, default="", comment="描述")
|
||||
status = Column(String(20), default="draft", comment="状态: draft/published/disabled")
|
||||
version = Column(Integer, default=1, comment="当前草稿版本号")
|
||||
published_version = Column(Integer, nullable=True, comment="已发布的版本号")
|
||||
published_at = Column(DateTime, nullable=True, comment="最后发布时间")
|
||||
published_definition = Column(JSON, default=dict, comment="已发布版本的工作流定义")
|
||||
definition = Column(JSON, default=dict, comment="工作流定义(草稿)")
|
||||
input_variables = Column(JSON, default=list, comment="输入变量定义")
|
||||
output_variables = Column(JSON, default=list, comment="输出变量定义")
|
||||
run_count = Column(Integer, default=0, comment="运行次数")
|
||||
success_count = Column(Integer, default=0, comment="成功次数")
|
||||
|
||||
|
||||
class AIWorkflowVersion(BaseModel):
|
||||
"""
|
||||
AI 工作流版本历史
|
||||
|
||||
每次发布时创建一条版本记录
|
||||
"""
|
||||
__tablename__ = "ai_workflow_version"
|
||||
|
||||
workflow_id = Column(String(21), nullable=False, index=True, comment="工作流ID(逻辑外键关联ai_workflow)")
|
||||
version = Column(Integer, nullable=False, comment="版本号")
|
||||
definition = Column(JSON, default=dict, comment="该版本的工作流定义")
|
||||
description = Column(Text, default="", comment="版本说明")
|
||||
published_by_id = Column(String(21), nullable=True, comment="发布人ID(逻辑外键关联core_user)")
|
||||
published_at = Column(DateTime, nullable=True, comment="发布时间")
|
||||
run_count = Column(Integer, default=0, comment="运行次数")
|
||||
success_count = Column(Integer, default=0, comment="成功次数")
|
||||
|
||||
|
||||
class AIWorkflowRun(BaseModel):
|
||||
"""
|
||||
AI 工作流运行记录
|
||||
"""
|
||||
__tablename__ = "ai_workflow_run"
|
||||
|
||||
workflow_id = Column(String(21), nullable=False, index=True, comment="工作流ID(逻辑外键关联ai_workflow)")
|
||||
app_id = Column(String(21), nullable=True, index=True, comment="关联应用ID(逻辑外键关联ai_app)")
|
||||
conversation_id = Column(String(21), nullable=True, comment="关联对话ID(逻辑外键关联ai_conversation)")
|
||||
user_id = Column(String(21), nullable=True, index=True, comment="执行用户ID(逻辑外键关联core_user)")
|
||||
status = Column(String(20), default="pending", comment="状态: pending/running/waiting/completed/failed/stopped")
|
||||
trigger_type = Column(String(30), default="api", comment="触发来源: editor_draft/editor_published/agent/api/form_button")
|
||||
use_draft = Column(Boolean, default=False, comment="是否使用草稿定义执行")
|
||||
workflow_version = Column(Integer, nullable=True, comment="执行时发布版本号,草稿运行为空")
|
||||
definition_snapshot = Column(JSON, default=dict, comment="运行开始时的工作流定义快照")
|
||||
inputs = Column(JSON, default=dict, comment="输入数据")
|
||||
outputs = Column(JSON, default=dict, comment="输出数据")
|
||||
execution_log = Column(JSON, default=list, comment="执行日志")
|
||||
current_node_id = Column(String(100), default="", comment="当前节点 ID")
|
||||
waiting_config = Column(JSON, default=dict, comment="等待用户输入的配置")
|
||||
error_message = Column(Text, default="", comment="错误信息")
|
||||
total_tokens = Column(Integer, default=0, comment="总 Token 数")
|
||||
total_steps = Column(Integer, default=0, comment="总步骤数")
|
||||
elapsed_time = Column(Integer, default=0, comment="总耗时(毫秒)")
|
||||
started_at = Column(DateTime, nullable=True, comment="开始时间")
|
||||
completed_at = Column(DateTime, nullable=True, comment="完成时间")
|
||||
|
||||
__table_args__ = (
|
||||
Index("ix_ai_workflow_run_workflow_status", "workflow_id", "status"),
|
||||
Index("ix_ai_workflow_run_user_status", "user_id", "status"),
|
||||
)
|
||||
Reference in New Issue
Block a user