ageerle
9d439d1dcf
refactor: move RAG trace classes to argtrace package and update SQL schema
...
- Rename org.ruoyi.trace package to org.ruoyi.argtrace for RagTraceNodeTypes
and RagTracePayloadBuilder; fix package declarations and update imports in
ChatServiceFacade and KnowledgeRetrievalServiceImpl
- Remove obsolete RagTracePayloadBuilderTest
- Switch supervisor response strategy from SUMMARY to LAST in ChatServiceFacade
- Refresh docs/script/sql/ruoyi-ai.sql with the latest full schema dump
- Add live demo links (admin panel, user frontend, commercial edition) to
README.md and README_ZH.md
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-04 17:44:39 +08:00
ageerle
0a08c489be
docs: remove redundant registry commands
2026-08-04 15:57:32 +08:00
ageerle
038e7725f9
docs: add prebuilt image deployment guide
2026-08-04 15:55:17 +08:00
ageerle
4ccf249663
docs: remove obsolete WeChat image
2026-08-04 15:50:51 +08:00
ageerle
1d5b01f77f
docs: remove obsolete Douyin image
2026-08-04 15:50:36 +08:00
ageerle
538dac3a46
docs: add Douyin tutorial QR code
2026-08-04 15:49:40 +08:00
ageerle
6c383dd9f5
fix: 修复智能体编辑时关联工具加载失败 ( #320 )
2026-08-04 15:38:25 +08:00
ageerle
9ae49f8797
fix: allow frontend dependency builds in image workflow
2026-08-04 15:30:34 +08:00
ageerle
3c175ba28d
chore: sync pending project changes
v3.1.0
2026-08-04 15:23:19 +08:00
ageerle
e34592c3d4
release: prepare v3.1.0
2026-08-04 15:18:57 +08:00
ageerle
fd044a4752
docs: align README badges in one row
2026-07-30 00:22:22 +08:00
ageerle
6e264ad500
feat: streamline workflow orchestration and chat routing
...
Add Zhipu web search integration, remove obsolete workflow nodes and resume handling, and separate model, agent, and workflow chat execution.
2026-07-30 00:15:44 +08:00
ageerle
83fd1ee983
fix: 移除FastJson 1.2.83严重安全漏洞,替换为Jackson
...
- 移除FastJson 1.2.83依赖(存在严重RCE漏洞CVE-2022-25845等)
- 替换为Spring Boot内置的Jackson 2.18.2
- 修改6个Java文件的JSON处理逻辑
- 所有模块编译验证通过
修改文件:
1. pom.xml - 移除fastjson依赖定义
2. ruoyi-common-chat/pom.xml - 替换为jackson-databind
3. QwenFileUploadUtils.java - 千问文件上传JSON解析
4. ChatRequest.java - 移除FastJson注解
5. MailSendNode.java - 邮件节点JSON处理
6. SwitcherNode.java - 条件分支JSON处理
7. AbstractAuthWeChatEnterpriseRequest.java - 企业微信登录
8. AuthDingTalkV2Request.java - 钉钉登录
安全提升:消除FastJson反序列化RCE漏洞攻击面
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-07-29 14:59:20 +08:00
ageerle
7640de34e5
Merge pull request #318 from ageerle/feat/register-default-role-and-misc
...
feat: 注册默认角色绑定 + 短剧流式超时兜底 + trace 测试适配
2026-07-28 11:25:37 +08:00
ageerle
77846601ee
test(retrieval): 适配 KnowledgeRetrievalServiceImpl 新增 trace 依赖
...
构造测试实例时补上 TraceRecordService 与 TraceProperties 两个新参数,
修复编译/构造失败。
Co-Authored-By: Claude <noreply@anthropic.com >
2026-07-28 11:22:26 +08:00
ageerle
b80dc6e23f
fix(shortdrama): 流式生成增加首 token 90 秒超时兜底
...
部分聚合站对 stream=true 既不返回内容也不报错,外层 30 分钟总超时
才会失败,前端会长时间卡死。90 秒内未收到任何 token 时快速失败,
提示更换模型或使用同步生成。收到首 token 后取消兜底计时。
Co-Authored-By: Claude <noreply@anthropic.com >
2026-07-28 11:22:19 +08:00
ageerle
176cc67a5c
feat(register): 新用户注册成功后绑定默认角色并补齐缺失菜单权限
...
- SysRegisterService: 注册成功后读取 sys.register.defaultRoleId 配置,
为新用户绑定默认角色;未配置则静默跳过,不影响注册流程
- SysUserServiceImpl.registerUser: insert 后回写 userId 主键,
供调用方绑定默认角色或登录使用
- SQL: 修正 知识管理 父菜单 perms(knowledge:info:list -> system:info:list),
新增 system:session:* / system:attach:* / system:fragment:* 菜单,
新建 普通用户 角色(租户 000000,data_scope=5 仅本人)及角色-菜单关联,
写入 sys.register.defaultRoleId 配置项
解决注册用户无默认角色导致无权限访问 AI 对话界面、以及菜单权限标识
与控制器不一致无法授权的问题。
Co-Authored-By: Claude <noreply@anthropic.com >
2026-07-28 11:22:12 +08:00
ageerle
afaa86ef6e
Merge branch 'fix/sse-session-trace-cleanup'
2026-07-23 15:38:50 +08:00
ageerle
d1a820728f
fix(sse): SSE 改为按会话隔离 + 修 trace 租户 bug + 清理冗余
...
SSE 串台修复:
- SseEmitterManager 新增按 sessionId 维度的 connect/sendEvent/disconnect,
每个会话一个 SSE 连接,替代原 userId+token 维度(同用户多会话串台)
- SseMessageDto 增加 sessionId + eventDto 字段,跨实例按会话路由
- SseTopicListener 优先按 sessionId 路由,回退原 userId/群发逻辑
- SseMessageUtils 增加 sessionId 重载,对话链路全部切换
- ChatServiceFacade / MyMcpClientListener / WorkflowStarter 切到 sessionId
- 通知/全局 /sse 端点保留 userId 模式(通知按用户)
trace 租户 bug 修复:
- trace_run / trace_node 加入 tenant.excludes,监控表跨租户全局可见,
绕过异步线程租户上下文不传播导致 node 查不到的问题
冗余清理:
- 删除零使用的 @TraceNode 注解 + TraceNodeAspect 切面 + 对应单测
- TraceProperties 删除 recordDetail/maxInputLength/maxOutputLength
(仅对已删切面生效,编程式埋点用 RagTracePayloadBuilder 不受影响)
- TracePayloadUtils 删除 input/output/asString 方法
- TraceConstants 删除无引用的 NODE_METHOD/HTTP/DB/CACHE/TASK/STREAM
- TraceContext 删除预留的 copyNodeStack
- TraceNodeVo 删除未用的 children 字段
- TraceRecordServiceImpl.getDetail 删除重复 enrich
- application.yml 删除 trace.payload 无效配置项
- RagTraceNodeTypes 删除无引用的 NODE_STREAM
Co-Authored-By: Claude <noreply@anthropic.com >
2026-07-23 15:35:10 +08:00
ageerle
11bb1dba0f
Merge PR #308 : 通用链路追踪模块与 RAG 对话全链路埋点
2026-07-23 15:10:40 +08:00
Obltv
345d2819d8
fix: 修复链路追踪输出记录及关闭追踪时的额外开销
2026-07-23 14:52:19 +08:00
Obltv
36e3cf8c52
fix: 修复链路追踪输出记录及关闭追踪时的额外开销
2026-07-23 14:45:43 +08:00
Obltv
06ff95cdc3
Merge upstream/main into feature/common-trace-rag-chat
2026-07-23 14:30:38 +08:00
ageerle
9adeee6c83
fix(short-drama): 修复角色形象跨分镜不一致
...
1. findRefImageIndex 补上 appearance 参数,与 findStoryboardReferenceImages
的调用对齐。之前多形象角色(换装/青年老年)的 @imageN 绑定查的是
默认形象 URL,和实际参考图列表对不上,导致 prompt 里没有 @imageN 标记
2. buildEnrichedVideoPrompt 角色段追加 visualDescription,
文字 prompt 也承载外貌信息(发型/服装/体态),不能全靠参考图
Co-Authored-By: Claude <noreply@anthropic.com >
2026-07-21 16:06:06 +08:00
ageerle
e42d35f3bf
fix: 工作流实体保留字转义 + 千问向量模型厂商映射
...
1. WorkflowRuntimeNode/WorkflowRuntime: input/output/status 字段加反引号,
修复 MySQL 8.0 保留字导致 MyBatis-Plus SQL 解析异常 (#307 )
2. EmbeddingModelFactory: 新增 providerCode→BeanName 映射,
qianwen→alibailian,修复千问向量模型找不到 Bean 的问题 (#301 )
Closes #307 #301
Co-Authored-By: Claude <noreply@anthropic.com >
2026-07-21 15:43:36 +08:00
ageerle
a69d1f51b9
feat: 打通 thinking 流式链路 + SqlAgent 表白名单校验
...
1. OllamaServiceImpl 补 .think() + .returnThinking(),对齐其他 provider (#306 )
2. ChatServiceFacade.createCombinedHandler 新增 onPartialThinking,
reasoning 内容经 SseMessageUtils.sendReasoning 流式推到前端 (#303 )
3. SqlAgent 系统提示词追加无表时禁止执行 SQL 的规则 (#279 )
4. ExecuteSqlQueryTool 代码层硬拦截:空白名单直接拒绝,
有白名单则校验 SQL 中 FROM/JOIN 引用的表名 (#279 )
Closes #303 #306 #279
Co-Authored-By: Claude <noreply@anthropic.com >
2026-07-21 15:31:32 +08:00
ageerle
911ae6cb1f
fix: 修复 issue IJX5VV/IJPYWL/IHPUDA
...
- IJX5VV: 补全工作流 9 个节点消息模板 sys_config 配置(SQL 脚本合并重命名时遗失),
附幂等增量脚本;此前节点执行会抛「请先配置该节点的响应模板」
- IJPYWL: 向量模型未配置维度时,Milvus/Qdrant 回退默认 1024,避免 Integer 拆箱 NPE
- IHPUDA: chat_provider.provider_icon 由 varchar(255) 加宽至 varchar(1000),
容纳 minio 私有桶签名 URL,附增量脚本
Co-Authored-By: Claude <noreply@anthropic.com >
2026-07-21 15:28:28 +08:00
ageerle
9a2f326e42
fix(rag): 合并后修正-升级脚本兼容 MySQL 8、重解析按 docId 清理旧向量
...
1. 升级脚本 2026-07-20-knowledge-fragment-fid.sql 使用了 MySQL 8 不支持的
ADD COLUMN IF NOT EXISTS(MariaDB 语法),在存量库执行会直接语法报错。
改为与脚本内索引守卫一致的 information_schema 判断 + PREPARE 方式,保持幂等。
2. parse() 重新解析时按 fragment.fid 删除旧向量:存量数据的 fid 为迁移脚本
回填的 MD5 值,与向量库中实际存储的随机 fid 不一致,首次重解析无法命中
旧向量,导致新旧向量重复累积。改为写入新向量前先按 docId 清理(三种
向量库策略均支持),写入失败时仍补偿删除新 fid。
Co-Authored-By: Claude <noreply@anthropic.com >
2026-07-21 14:33:28 +08:00
ageerle@163.com
46a8d6b552
Merge pull request #315 from MuSan-Li/update/2026-07-19-fixes
...
修复RAG相关逻辑优化:统一文档切割配置、向量数据生命周期、
统一检索服务(阈值/重排/缓存)、按知识库路由向量库、重新解析支持
2026-07-21 14:33:11 +08:00
evo
cf5423f69f
fix(rag): 统一文档切割配置并支持重新解析
2026-07-21 12:18:19 +08:00
evo
177375a7b7
docs(rag): 更新完整修复与验收报告
2026-07-21 09:35:56 +08:00
evo
016bdbdd94
test(rag): 增加三向量库 Docker 生命周期测试
2026-07-21 09:35:56 +08:00
evo
41e0dcb528
chore(rag): 对齐默认向量配置并启用测试
2026-07-21 09:35:56 +08:00
evo
787e447d09
fix(aiflow): 接入统一知识库检索服务
2026-07-21 09:35:33 +08:00
evo
9c092ae3bb
fix(chat): 统一单轮检索并完善多库上下文
2026-07-21 09:35:26 +08:00
evo
42bc8fea95
fix(rag): 完善向量路由批量写入与数据生命周期
2026-07-21 09:35:18 +08:00
evo
c4fc1e6fcf
fix(rag): 隔离模型实例并修正缓存刷新
2026-07-21 09:35:07 +08:00
evo
6f6d0893ec
fix(rag): 统一检索阈值重排降级与缓存语义
2026-07-21 09:34:56 +08:00
evo
a6a55202a3
fix(rag): 修复文本分片边界与字面量分隔符
2026-07-21 09:34:47 +08:00
ageerle@163.com
24bee53f9e
feat: 新增 ChitChatAgent 闲聊兜底子 Agent 并接入 supervisor
...
简单任务无专业子 Agent 可用时由闲聊 Agent 兜底,避免 supervisor 空转返回空内容;通过 supervisorContext 约束仅在问候/闲聊场景路由到该 Agent。
Co-Authored-By: Claude <noreply@anthropic.com >
2026-07-20 16:08:48 +08:00
evo
afc9d3d17d
fix: 修复本地启动、数据库初始化与构建问题 ( #314 )
...
* fix: 修复本地启动、数据库初始化与构建问题
* fix: 修复pr的一些问题提交
2026-07-19 13:42:43 +08:00
evo
97ce15d116
fix: 修复pr的一些问题提交
2026-07-19 13:30:09 +08:00
evo
879fe48945
fix: 修复本地启动、数据库初始化与构建问题
2026-07-19 12:20:22 +08:00
ageerle@163.com
5d834d924a
feat: 编程助手按聊天模型过滤并补充 MCP 工具 thinking 事件,README 补充 copilot/uniapp 仓库
...
- CodingController.models 按 category=chat 过滤,编程对话只展示聊天模型
- 各 MCP 文件/命令工具在执行前推送 thinking 提示事件
- README/README_EN 项目源码表新增 ruoyi-copilot、ruoyi-uniapp 三端链接
Co-Authored-By: Claude <noreply@anthropic.com >
2026-07-17 14:47:18 +08:00
ageerle@163.com
fece90b307
feat: 新增短剧音频/编码模块、MCP 文件工具与 WebSocket 支持
...
- 短剧: 新增 ShortDramaAudio 实体/Mapper/BO/VO,扩展 ShortDramaServiceImpl
合成逻辑与 FfmpegFilterGraphBuilder 滤镜图
- MCP: 新增 WriteFileTool/DeleteFileTool/ExecuteCommandTool,重构
EditFileTool/ReadFileTool/ListDirectoryTool
- 编码: 新增 coding 模块(CodingAgent/WorkspaceService/SSE 事件通道)
- Atlas: 新增音频生成实现,扩展音视频/媒体实体与预测服务
- WebSocket: 新增公众号聊天 WebSocket 处理器与握手拦截
- 忽略 logs/ 目录,避免合成产物入库
Co-Authored-By: Claude <noreply@anthropic.com >
2026-07-17 11:52:53 +08:00
ageerle@163.com
06d110ed16
@docs: 修正 snailjob 注释里失效的 ry_job.sql 引用
...
实际建表脚本在 docs/script/sql/ruoyi-ai-v3_mysql8.sql(sj_ 前缀表),仓库中并无 ry_job.sql。
关联 issue #311。
Co-Authored-By: Claude <noreply@anthropic.com >
2026-07-15 18:25:55 +08:00
ageerle@163.com
dfcadda2bb
@style: 修正 QdrantVectorStoreStrategy 缩进为空格
...
createSchema 调用与文件其余代码保持 4 空格缩进统一,避免 checkstyle/spotless 报错。
Co-Authored-By: Claude <noreply@anthropic.com >
2026-07-15 18:00:07 +08:00
Jack Jiang
3c9546ded9
fix: 修复 Qdrant 初始化创建集合问题 ( #298 )
2026-07-15 17:58:12 +08:00
Octopus
a3d82e092e
Refresh MiniMax models and protocol support ( #313 )
...
Co-authored-by: octo-patch <266937838+octo-patch@users.noreply.github.com >
2026-07-15 17:43:51 +08:00
ageerle@163.com
96a1b741df
fix: 兼容 Atlas 预测结果查询 404,避免前端轮询刷屏
...
Atlas /model/prediction/{id} 对已过期或不存在的任务返回 404
(常见于更换 API Key 后残留的旧任务)。原实现直接抛异常,前端
轮询反复触发错误提示。改为 404 时返回 status=failed 的响应,
让上层走正常失败分支落库,前端识别后终止轮询。
Co-Authored-By: Claude <noreply@anthropic.com >
2026-07-15 11:17:20 +08:00