Skip to content

Conversation

@xerrors
Copy link
Owner

@xerrors xerrors commented Jan 22, 2026

变更描述

1. 数据库迁移(SQLite/JSON → PostgreSQL)

  • 重构数据库访问层,将用户/对话/消息统一迁移至 PostgreSQL
  • 新增 src/storage/postgres/models_business.py 业务数据模型(User、Department、AgentConfig、Conversation、Message 等)
  • 新增 src/storage/postgres/models_knowledge.py 知识库相关模型
  • 添加数据库迁移脚本 scripts/migrate_business_from_sqlite.py、scripts/migrate_kb_metadata_to_db.py
  • 移除原有的 SQLite 模型管理器 src/storage/db/manager.py

2. 多部门智能体配置管理

  • 权限中新增部门层级,部门内容的配置共享,外部独立。
  • 新增 AgentConfig 模型,支持按部门配置智能体参数(系统提示词、工具选择等)
  • 新增 AgentConfigRepository 仓储层,统一管理配置 CRUD 操作
  • 智能体侧边栏重构为通用选择组件,支持配置切换、新建、编辑

3. 知识库权限控制

  • 管理员创建知识库的时候,可以选择共享范围,部门级别控制
  • 修复知识库权限过滤逻辑 bug
  • 添加基于权限的知识库展示设计

4. 前端优化

  • AgentView.vue 增加配置下拉选择器,支持管理员新建配置
  • AgentConfigSidebar.vue 重构为通用配置选择组件
  • 优化多选项展示:≤5 项使用卡片列表,>5 项使用弹窗选择
  • 统一使用 lucide-vue-next 图标库

5. 服务层重构

  • 新增 chat_stream_service.py 流式聊天服务
  • 新增 conversation_service.py 对话服务
  • 新增 history_query_service.py 历史查询服务
  • 新增 feedback_service.py 反馈服务
  • 实现统一工具加载逻辑,使用中间件动态配置

6. 其他优化

  • 超级管理员用户切换功能及日志记录
  • 移除 graph 缓存,优化连接和检查点缓存

变更类型

  • 新功能

测试

  • 已在 Docker 环境测试
  • 相关功能正常工作

相关日志或者截图

image image

说明

(可选)有什么需要特别说明的吗?

WARNING:本次重构虽然创建了数据库迁移脚本,也测试通过了,但是不保证数据迁移过程中没有问题,因此慎重测试。

迁移内容

数据类型 目标 存储内容
业务数据 SQLite (saves/database/server.db) PostgreSQL 用户、部门、对话、消息、工具调用、MCP 服务器等
知识库元数据 JSON 文件 (saves/knowledge_base_data/) PostgreSQL 知识库配置、文件信息、评估数据
Tasker 任务记录 JSON 文件 (saves/tasks/tasks.json) PostgreSQL 后台任务状态、进度、结果(独立存储)
  1. 启动服务
docker compose up -d --build
  1. 备份数据

重要: 迁移前必须备份数据!

# 备份 saves 目录(包含 SQLite 数据库和知识库元数据)
cp -r saves saves_backup_$(date +%Y%m%d)

# 如果使用外部数据库,也请备份 PostgreSQL
pg_dump -U postgres -d yuxi_know > pg_backup_$(date +%Y%m%d).sql
  1. 确保 PostgreSQL 已启动
docker compose up -d postgres
# 等待健康检查通过

执行迁移

# 1. 预览迁移(不执行)
docker compose exec api python scripts/migrate_all.py --dry-run

# 2. 执行迁移
docker compose exec api python scripts/migrate_all.py --execute

# 3. 验证迁移结果
docker compose exec api python scripts/migrate_all.py --verify

💡 提示: 提交前可以运行 make lintmake format 检查代码规范

@xerrors xerrors self-assigned this Jan 22, 2026
@supreme0597
Copy link
Contributor

强,期待,坐等合入,我再搞一版mcp配置。

@supreme0597
Copy link
Contributor

用的是什么大模型呢?还是自己写的。我让AI新增支持dify知识库,整了好几天没整明白,无语了

@supreme0597
Copy link
Contributor

在搞dify知识库,团队有人把上万个文件上传到dify上面了,领导让支持对接dify知识库

- 在save_agent_config中实现了基于用户角色的知识库访问控制。
- 添加了新端点以检索当前用户可访问的数据库。
- 在数据库创建和更新过程中引入了share_config以管理共享设置。
- 创建了ShareConfigForm组件用于在UI中管理共享设置。
- 更新了部门和知识API以支持新的访问控制功能。
- 增强了用户管理组件以显示用户角色和部门名称。
- 重构了数据库视图以包含共享配置设置。
- 新增知识库、知识文件、评估基准、评估结果等数据模型
- 实现知识库相关Repository类提供CRUD操作
- 修改知识库实现类使用PostgreSQL存储元数据
- 添加PostgreSQL数据库管理器和初始化逻辑
- 更新相关路由和工具类适配新的存储方式
- 添加数据库迁移脚本和测试工具
- 在docker-compose中配置PostgreSQL服务
将业务数据模型从SQLite迁移至PostgreSQL,统一使用models_business.py
删除旧的SQLite模型和ConversationManager,新增repository和服务层
优化时间处理工具函数,增加utc_now_naive和format_utc_datetime
重构前端组件代码格式,统一多行导入和长字符串的换行风格
将任务服务从server/services移动到src/services
添加TaskRepository实现数据库持久化
更新所有相关导入路径
统一移除文件末尾多余的空行
调整多个文件中的导入语句顺序以保持一致性
将时间处理函数提取到datetime_utils模块中复用
移除所有agent子类中graph的缓存逻辑,改为每次都重新构建
在BaseAgent中添加_async_conn缓存并优化checkpointer缓存逻辑
新增部门级智能体配置管理,支持创建、切换、编辑和删除配置
添加运行时配置中间件,支持动态加载模型、工具和知识库
重构智能体上下文处理,支持部门ID和配置切换
实现前端配置管理界面,支持配置的增删改查和设为默认
添加后端API和数据库模型支持多配置管理
将各agent的工具加载逻辑统一改为通过RuntimeConfigMiddleware动态配置
移除直接的工具参数传递,改为从MCP服务获取工具并合并到中间件
在chat_stream_service中添加知识库权限过滤功能

TODO:目前历史记录的加载导致会话混乱
TODO: 前端还未完成过滤
重构 AgentConfigSidebar 组件,将工具选择逻辑抽象为通用选择组件
- 支持显示选项名称和描述
- 根据选项数量自动切换显示模式(卡片列表或弹窗)
- 统一处理工具、知识库等多选配置项
- 优化样式和交互体验
@xerrors xerrors marked this pull request as ready for review January 24, 2026 02:56
@xerrors xerrors merged commit 8443513 into main Jan 24, 2026
4 checks passed
@xerrors xerrors deleted the department-design branch January 24, 2026 04:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants