Explorar el Código

feat(AI): 新增 AI执行器和任务处理器

- 新增 AI 执行器示例,内置多个 Bean 模式 AI任务处理器
- 与 spring-ai、ollama、dify等集成打通,支持快速开发 AI 类任务
- 新增OllamaChat 和 DifyWorkflow任务处理器
- 修复任务操作逻辑、Cron 组件、固定速度调度模式等问题
- 优化 Glue IDE 和 RollingLog 功能
- 升级多个项目依赖至较新稳定版本
xuxueli hace 6 meses
padre
commit
36332fd374

+ 31 - 27
doc/XXL-JOB官方文档.md

@@ -1191,7 +1191,7 @@ public void demoJobHandler() throws Exception {
 - d、commandJobHandler:通用命令行任务Handler;业务方只需要提供命令行即可,命令及参数之间通过空格隔开;如任务参数 "ls la" 或 "pwd" 将会执行命令并输出数据;
 
 #### 原生内置Bean模式任务(AI执行器)
-为方便用户参考与快速使用,提供 “AI执行器” 并内置多个Bean模式任务Handler,与spring-ai集成打通,支持快速开发AI类任务,如下:
+为方便用户参考与快速使用,提供 “AI执行器” 并内置多个Bean模式 AI任务Handler,与spring-ai、ollama、dify等集成打通,支持快速开发AI类任务,如下:
 
 **AI执行器说明:**
 - AppName:xxl-job-executor-sample-ai
@@ -2507,32 +2507,36 @@ public void execute() {
 - a、本次升级数据模型及通讯协议向前兼容,v2.4.*及后续版本可无缝升级;
 - b、版本3.x开始要求Jdk17;版本2.x及以下支持Jdk1.8。如对Jdk版本有诉求,可选择接入不同版本;
 
-### 7.38 版本 v3.0.1 Release Notes[规划中]
-- 1、【新增】新增“AI执行器”示例,并与spring-ai、Ollama、Dify等集成打通;内置一系列AIXxlJob,支持快速开发AI类任务(xxl-job-executor-sample-springboot-ai)。
-```
-// 说明:ollamaJobHandler 内置在“AI执行器(AppName = xxl-job-executor-sample-ai)”中,需要先新建执行器;可参考如下SQL或自行创建:
-INSERT INTO `xxl_job_group`(`app_name`, `title`, `address_type`, `address_list`, `update_time`)
-    VALUES ('xxl-job-executor-sample-ai', 'AI执行器Sample', 0, NULL, now());
-```
-- 2、【新增】新增通用 OllamaChat 任务(ollamaJobHandler),支持自定义prompt、input等输入信息,示例参数如下;
-```
-{
-    "input": "{输入信息,必填信息}",
-    "prompt": "{模型prompt,可选信息}"
-}
-```
-- 3、【新增】新增通用 DifyWorkflow 任务(difyWorkflowJobHandler),支持自定义inputs、user等输入信息,示例参数如下;
-```
-{
-    "inputs":{                      // inputs 为dify工作流任务参数;参数不固定,结合各自 workflow 自行定义。
-        "input":"{用户输入信息}"      // 该参数为示例变量,需要 workflow 的“开始”节点 自定义参数 “input”,可自行调整或删除。
-    },
-    "user": "{用户标识,选填}"
-}
-```
-- 4、【修复】任务操作逻辑优化,修复边界情况下逻辑中断问题(ISSUE-2081)。
-- 5、【修复】调度中心Cron前端组件优化,解决week配置与后端兼容性问题(ISSUE-2220)。
-- 6、【修复】合并PR-3708、PR-3704:修复固定速度模式计算,下次执行时间计算不准问题(间隔秒数超过Int时触发)。
+### 7.38 版本 v3.1.0 Release Notes[规划中]
+- 1、【新增】新增提供 “AI执行器” 并内置多个Bean模式 AI任务Handler,与spring-ai、ollama、dify等集成打通,支持快速开发AI类任务。
+    - AppName:xxl-job-executor-sample-ai
+    - 执行器代码:xxl-job-executor-sample-springboot-ai
+        ```
+        // 备注:ollamaJobHandler 内置在“AI执行器(AppName = xxl-job-executor-sample-ai)”中,需要先新建执行器;可参考如下SQL或自行创建:
+        INSERT INTO `xxl_job_group`(`app_name`, `title`, `address_type`, `address_list`, `update_time`)
+            VALUES ('xxl-job-executor-sample-ai', 'AI执行器Sample', 0, NULL, now());
+        ```
+- 2、【新增】新增多个 Bean模式 AI任务Handler,如 ollamaJobHandler、difyWorkflowJobHandler 等,支持快速集成开发AI任务。
+  - a、ollamaJobHandler: OllamaChat任务,支持自定义prompt、input等输入信息。示例任务入参如下:
+    ```
+    {
+        "input": "{输入信息,必填信息}",
+        "prompt": "{模型prompt,可选信息}"
+    }
+    ```
+  - b、difyWorkflowJobHandler:DifyWorkflow 任务,支持自定义inputs、user等输入信息,示例参数如下;
+    ```
+    {
+        "inputs":{                      // inputs 为dify工作流任务参数;参数不固定,结合各自 workflow 自行定义。
+            "input":"{用户输入信息}"      // 该参数为示例变量,需要 workflow 的“开始”节点 自定义参数 “input”,可自行调整或删除。
+        },
+        "user": "{用户标识,选填}"
+    }
+    ```
+- 3、【修复】合并PR-3708、PR-3704,解决固定速度调度模式下,下次计算执行时间小概率(间隔超长时)不准问题。
+- 4、【修复】任务操作逻辑优化,修复边界情况下逻辑中断问题 (ISSUE-2081)。
+- 5、【修复】调度中心Cron前端组件优化,解决week配置与后端兼容性问题 (ISSUE-2220)。
+- 6、【修复】任务RollingLog权限逻辑调整:修复非管理员账号越权访问问题 (ISSUE-3705)。
 - 7、【优化】Glue IDE调整,版本回溯支持查看修改时间;
 - 8、【优化】任务RollingLog调整,XSS过滤支持白名单排出,提升日志易读性;
 - 9、【升级】多个项目依赖升级至较新稳定版本,涉及 gson、groovy、spring/springboot、mysql 等;

+ 5 - 2
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java

@@ -124,15 +124,18 @@ public class JobLogController {
 	}
 
 	@RequestMapping("/logDetailPage")
-	public String logDetailPage(@RequestParam("id") int id, Model model){
+	public String logDetailPage(HttpServletRequest request, @RequestParam("id") int id, Model model){
 
 		// base check
-		//ReturnT<String> logStatue = ReturnT.SUCCESS;
 		XxlJobLog jobLog = xxlJobLogDao.load(id);
 		if (jobLog == null) {
             throw new RuntimeException(I18nUtil.getString("joblog_logid_unvalid"));
 		}
 
+		// valid permission
+		PermissionInterceptor.validJobGroupPermission(request, jobLog.getJobGroup());
+
+		// data
         model.addAttribute("triggerCode", jobLog.getTriggerCode());
         model.addAttribute("handleCode", jobLog.getHandleCode());
         model.addAttribute("logId", jobLog.getId());

+ 1 - 1
xxl-job-core/src/main/java/com/xxl/job/core/util/NetUtil.java

@@ -29,7 +29,7 @@ public class NetUtil {
                 portTmp++;
             }
         }
-        portTmp = defaultPort--;
+        portTmp = defaultPort - 1;
         while (portTmp > 0) {
             if (!isPortUsed(portTmp)) {
                 return portTmp;