目录下存放的是项目中使用的 SQLAlchemy 数据库模型定义。这些模型用于描述数据库中的表结构,为 FastAPI 提供 ORM 支持,便于进行数据库操作。

1. auths.py
- 功能:定义用户认证相关的数据库模型。
- 主要类/方法 :
- 用途:用于管理用户的登录、权限验证等。
2. channels.py
- 功能:定义聊天频道(Channel)的数据库模型。
- 主要类/方法 :
- Channel 类:表示聊天频道实体,包含字段如 id, [userid]( webui\models\channels.py#L22-L22), name, description, type, [createdat]( webui\models\channels.py#L32-L32), [updated*at](*webui\models\channels.py#L33-L33)。
- Message 类:表示频道内的消息记录,包含字段如 id, [userid]( webui\models\channels.py#L22-L22), [channelid]( webui\models\messages.py#L43-L43), content, [createdat]( webui\models\channels.py#L32-L32), [updated*at](*webui\models\channels.py#L33-L33)。
- 用途:支持多用户实时通信和消息存储。
3. chats.py
- 功能:定义聊天会话的数据库模型。
- 主要类/方法 :
- 用途:保存用户与 AI 的对话历史,支持聊天数据的持久化和恢复。
4. feedbacks.py
- 功能:定义反馈数据的数据库模型。
- 主要类/方法 :
- 用途:收集用户反馈,用于后续优化产品功能。
5. files.py
- 功能:定义文件上传和管理的数据库模型。
- 主要类/方法 :
- 用途:管理用户上传的文件及其元信息。
6. folders.py
- 功能:定义文件夹结构的数据库模型。
- 主要类/方法 :
- 用途:支持用户组织聊天、文件等内容的目录结构。
7. functions.py
- 功能:定义系统中可调用函数的数据库模型。
- 主要类/方法 :
- Function 类:表示可执行的 AI 函数,包含字段如 id, [userid]( webui\models\channels.py#L22-L22), name, type, content, valves, meta, [isglobal]( webui\models\functions.py#L29-L29), [isactive]( webui\models\functions.py#L28-L28), [updatedat]( webui\models\channels.py#L33-L33), [created*at](*webui\models\channels.py#L32-L32)。
- 用途:用于 AI 工具链管理和插件机制。
8. groups.py
- 功能:定义用户组的数据库模型。
- 主要类/方法 :
- Group 类:表示用户组,包含字段如 id, [userid]( webui\models\channels.py#L22-L22), name, description, permissions, [userids]( webui\models\messages.py#L86-L86), meta, [createdat]( webui\models\channels.py#L32-L32), [updated*at](*webui\models\channels.py#L33-L33)。
- 用途:实现基于组的权限控制和协作功能。
9. knowledge.py
- 功能:定义知识库内容的数据库模型。
- 主要类/方法 :
- 用途:用于存储和管理 AI 模型的知识库内容。
10. memories.py
- 功能:定义用户记忆数据的数据库模型。
- 主要类/方法 :
- 用途:用于个性化推荐、上下文记忆等功能。
11. messages.py
- 功能:定义消息数据的数据库模型。
- 主要类/方法 :
- MessageReaction 类:表示消息的反应(如点赞)。
ChannelMember
类:表示频道成员关系。
- 用途:支持聊天增强功能(如表情、成员管理)。
12. models.py
- 功能:定义 AI 模型配置的数据库模型。
- 主要类/方法 :
- Model 类:表示 AI 模型配置,包含字段如 id, [userid]( webui\models\channels.py#L22-L22), basemodelid, name, params, meta, [accesscontrol]( webui\models\channels.py#L30-L30), [isactive]( webui\models\functions.py#L28-L28), [updatedat]( webui\models\channels.py#L33-L33), [created*at](*webui\models\channels.py#L32-L32)。
- 用途:用于管理不同 AI 模型的参数、状态、访问权限等。
13. notes.py
- 功能:定义笔记数据的数据库模型。
- 主要类/方法 :
- 用途:支持用户创建、编辑和保存文本笔记。
14. prompts.py
- 功能:定义提示词模板的数据库模型。
- 主要类/方法 :
- 用途:提供用户可复用的 AI 提示词模板。
15. tags.py
- 功能:定义标签系统的数据库模型。
- 主要类/方法 :
- 用途:支持用户对聊天、文档等内容打标签分类。
16. tools.py
- 功能:定义工具插件的数据库模型。
- 主要类/方法 :
- 用途:用于集成外部 API 或自定义插件。
17. users.py
- 功能:定义用户账户的数据库模型。
- 主要类/方法 :
- User 类:表示用户信息,包含字段如 id, name, email, role, profileimageurl, lastactiveat, [updatedat]( webui\models\channels.py#L33-L33), [createdat]( webui\models\channels.py#L32-L32), [apikey]( webui\models\auths.py#L46-L46), settings, info, [oauth*sub](*webui\models\users.py#L37-L37)。
- 用途:用于管理用户身份、角色、设置、OAuth 登录等。
18.公共特性
所有模型都继承自 SQLAlchemy 的 Base 基类,并通过 metadata_obj 绑定到统一的元数据对象上。例如:
python
## internal/db.py文件中
# 创建元数据对象
metadata_obj = MetaData(schema=DATABASE_SCHEMA)
# 定义基类
Base = declarative_base(metadata=metadata_obj)
然后每个模型类继承 Base,并定义其对应的表结构,例如:
python
class Chat(Base):
__tablename__ = "chat"
id = Column(String(), primary_key=True, unique=True)
user_id = Column(String())
title = Column(Text())
chat = Column(JSON())
created_at = Column(BigInteger(), nullable=False)
updated_at = Column(BigInteger(), nullable=False)
share_id = Column(String(), unique=True)
archived = Column(Boolean(), default=False)
19.与其他模块的关系
- 依赖 internal/db.py:该模块初始化了数据库连接池、Session 和 SQLAlchemy 引擎。
- 与 migrations/env.py 联动:在 Alembic 迁移中引用 target_metadata = Auth.metadata 来生成迁移脚本。
- 被 routers/ 中的接口调用:用于增删改查数据库中的资源。
- 支持自动迁移:通过 Alembic 可以使用 --autogenerate 功能检测模型变更并生成 SQL 迁移脚本。