""" 工具定义模型 """ from sqlalchemy import Column, String, Text, JSON, DateTime, Boolean, ForeignKey, Integer, Index, func from sqlalchemy.dialects.mysql import CHAR from sqlalchemy.orm import relationship from app.core.database import Base import uuid class Tool(Base): """工具定义表""" __tablename__ = "tools" id = Column(CHAR(36), primary_key=True, default=lambda: str(uuid.uuid4()), comment="工具ID") name = Column(String(100), nullable=False, unique=True, comment="工具名称") description = Column(Text, nullable=False, comment="工具描述") category = Column(String(50), comment="工具分类") # 工具定义(OpenAI Function格式) function_schema = Column(JSON, nullable=False, comment="函数定义(JSON Schema)") # 工具实现类型 implementation_type = Column(String(50), nullable=False, comment="实现类型: builtin/http/workflow/code") implementation_config = Column(JSON, comment="实现配置") # 元数据 is_public = Column(Boolean, default=False, comment="是否公开") status = Column(String(20), default="active", comment="状态: active/draft/deprecated") tags = Column(JSON, comment="标签列表") user_id = Column(CHAR(36), ForeignKey("users.id"), nullable=True, comment="创建者ID") workspace_id = Column(CHAR(36), ForeignKey("workspaces.id"), nullable=True, comment="所属工作区ID") use_count = Column(Integer, default=0, comment="使用次数") created_at = Column(DateTime, default=func.now(), comment="创建时间") updated_at = Column(DateTime, default=func.now(), onupdate=func.now(), comment="更新时间") # 关系 user = relationship("User", backref="tools") __table_args__ = ( Index("ix_tools_workspace", "workspace_id"), ) def __repr__(self): return f""