refactor(flow): 优化流程控制异步处理和安全配置
- 将任务停止操作改为异步执行以提高性能 - 替换系统输出为日志记录以改进调试追踪 - 为安全工具类添加异常处理和匿名用户支持 - 更新安全配置允许流程执行接口匿名访问 - 为流程控制器添加匿名注解支持外部调用
This commit is contained in:
parent
0dbed4006c
commit
3868194932
@ -1,5 +1,6 @@
|
||||
package com.cmvr.web.controller.test;
|
||||
|
||||
import com.cmvr.common.annotation.Anonymous;
|
||||
import com.cmvr.common.core.controller.BaseController;
|
||||
import com.cmvr.common.core.domain.AjaxResult;
|
||||
import com.cmvr.test.flow.context.TaskContextManager;
|
||||
@ -49,6 +50,7 @@ public class TeFlowController extends BaseController {
|
||||
|
||||
@ApiOperation("任务执行入口")
|
||||
@PostMapping("/execute")
|
||||
@Anonymous
|
||||
public AjaxResult execute(@Valid @RequestBody TeTaskExecuteNormalVO taskExecuteNormalVO) {
|
||||
return AjaxResult.success(flowTaskRuntimeService.executeTask(taskExecuteNormalVO));
|
||||
}
|
||||
|
||||
@ -3,6 +3,7 @@ package com.cmvr.llm.util;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.cmvr.llm.service.LLMAiTtsService;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import okhttp3.*;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
@ -20,6 +21,7 @@ import java.util.concurrent.atomic.AtomicReference;
|
||||
/**
|
||||
* LLM聊天服务 - 严格保持原接口参数
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class LlmChatService {
|
||||
@Autowired
|
||||
@ -251,9 +253,9 @@ public class LlmChatService {
|
||||
processBufferIfNeed();
|
||||
}
|
||||
} else if ("message_start".equals(event)) {
|
||||
System.out.println("消息开始,ID: " + finalMessageId);
|
||||
log.info("消息开始,ID: " + finalMessageId);
|
||||
} else if ("message_output_start".equals(event)) {
|
||||
System.out.println("输出开始");
|
||||
log.info("输出开始");
|
||||
} else if ("message_end".equals(event) || "end".equals(event)) {
|
||||
fullContent.append(localContent);
|
||||
finalMessageIdRef.set(finalMessageId);
|
||||
@ -359,7 +361,7 @@ public class LlmChatService {
|
||||
|
||||
private void yourAsyncMethod(String sentence, JSONObject ttsConfig) {
|
||||
try {
|
||||
System.out.println("正在处理句子: " + sentence);
|
||||
log.info("正在处理句子: " + sentence);
|
||||
llmAiTtsService.play(ttsConfig.getString("url"), sentence, ttsConfig.getString("voice"), ttsConfig.getString("speed"), ttsConfig.getString("volume"));
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
|
||||
@ -115,7 +115,7 @@ public class SecurityConfig
|
||||
// 静态资源,可匿名访问
|
||||
.antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
|
||||
.antMatchers("/system/file/upload","/evaluation/callback","/flow/**","/flowise/**","/kws/**","/ws/**","/api/grpc/**","/show/**",
|
||||
"/node-red/**","/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**", "/ti/**").permitAll()
|
||||
"/node-red/**","/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**", "/ti/**", "/flow/execute").permitAll()
|
||||
// 除上面外的所有请求全部需要鉴权认证
|
||||
.anyRequest().authenticated();
|
||||
})
|
||||
|
||||
@ -24,10 +24,17 @@ public class MyMetaObjectHandler implements MetaObjectHandler {
|
||||
*/
|
||||
@Override
|
||||
public void insertFill(MetaObject metaObject) {
|
||||
// 获取用户名(异常时给默认值 anonymous)
|
||||
String username;
|
||||
try {
|
||||
username = SecurityUtils.getUsername();
|
||||
} catch (Exception e) {
|
||||
username = "anonymous"; // 匿名接口默认值
|
||||
}
|
||||
// 起始版本 3.3.0(推荐使用)
|
||||
this.setFieldValByName(CREATE_BY, SecurityUtils.getUsername(), metaObject);
|
||||
this.setFieldValByName(CREATE_BY, username, metaObject);
|
||||
this.setFieldValByName(CREATE_TIME, formatDate(metaObject.getSetterType(CREATE_TIME)), metaObject);
|
||||
this.setFieldValByName(UPDATE_BY, SecurityUtils.getUsername(), metaObject);
|
||||
this.setFieldValByName(UPDATE_BY, username, metaObject);
|
||||
this.setFieldValByName(UPDATE_TIME, formatDate(metaObject.getSetterType(CREATE_TIME)), metaObject);
|
||||
this.setFieldValByName(DELETED, "0", metaObject);
|
||||
// this.setFieldValByName(STATUS, "1", metaObject);
|
||||
@ -41,7 +48,14 @@ public class MyMetaObjectHandler implements MetaObjectHandler {
|
||||
*/
|
||||
@Override
|
||||
public void updateFill(MetaObject metaObject) {
|
||||
this.setFieldValByName(UPDATE_BY, SecurityUtils.getUsername(), metaObject);
|
||||
// 获取用户名(异常时给默认值 anonymous)
|
||||
String username;
|
||||
try {
|
||||
username = SecurityUtils.getUsername();
|
||||
} catch (Exception e) {
|
||||
username = "anonymous"; // 匿名接口默认值
|
||||
}
|
||||
this.setFieldValByName(UPDATE_BY, username, metaObject);
|
||||
this.setFieldValByName(UPDATE_TIME, formatDate(metaObject.getSetterType(CREATE_TIME)), metaObject);
|
||||
}
|
||||
|
||||
|
||||
@ -54,7 +54,10 @@ public class FlowControlService {
|
||||
if (ctx.isStopped()) {
|
||||
throw new GlobalException("任务已终止,无需重复操作");
|
||||
}
|
||||
// 异步终止
|
||||
executor.execute(() -> {
|
||||
edgeSystemService.stopAll(ctx.getTerminalId());
|
||||
});
|
||||
|
||||
// 统一记录日志 + 设置上下文状态 + 数据库状态
|
||||
taskInstHolder.syncStatus(instId, TaskStatusEnum.STOPPED);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user