feat: 获取当前页面名称节点

This commit is contained in:
stream 2026-03-18 17:22:14 +08:00
parent 890b4c2875
commit ea01b3826b
4 changed files with 92 additions and 0 deletions

View File

@ -124,6 +124,7 @@ api:
app-id: d1ebtabnjkflk4gmhikg
app-key: d5thge2cktmipk78h82g
evaluation: http://192.168.0.8:8000/analyze
current-page: http://192.168.0.222:5000/search_similar
flowise:
tts: 192.168.0.222:8080/tts/

View File

@ -43,6 +43,8 @@ public class APIProperties {
private String evaluation;
private String currentPage;
/**
* 根据 ActionEnum 名称获取 app 配置
*/

View File

@ -70,6 +70,7 @@ public enum ActionEnum {
GENERATE_ADVANCED_AUDIO("LLM", "GENERATE_ADVANCED_AUDIO", "tts语音合成"),
AI_AGENT_PLATFORM("LLM", "AI_AGENT_PLATFORM", "商道智能体"),
AI_TTS("LLM", "AI_TTS", "tts语音播放"),
GET_CURRENT_PAGE("LLM", "GET_CURRENT_PAGE", "获取当前页面名称"),
// 触控交互
TI_PATH_SEARCH("EDGE", "TI_PATH_SEARCH", "路径搜索"),

View File

@ -0,0 +1,88 @@
package com.cmvr.test.flow.runtime.operator.llm;
import cn.hutool.core.io.FileUtil;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.cmvr.common.utils.http.CallAPIUtil;
import com.cmvr.llm.config.APIProperties;
import com.cmvr.test.enums.ActionEnum;
import com.cmvr.test.flow.runtime.message.TaskNodeExecuteMessage;
import com.cmvr.test.flow.runtime.message.TaskNodeExecuteResult;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.io.File;
@Slf4j
@Service
@RequiredArgsConstructor
public class LLMCurrentPageOperateService implements LLMOperateService {
private final APIProperties apiProperties;
@Override
public boolean supports(ActionEnum action) {
return action.name().equals("GET_CURRENT_PAGE");
}
@Override
public TaskNodeExecuteResult execute(TaskNodeExecuteMessage message) {
JSONObject inputParams = message.getInputParams();
String fileUrl = inputParams.getString("url"); // 原图片地址
String targetUrl = apiProperties.getCurrentPage(); // 目标接口地址
File tempFile = null;
try {
// 1. 截取文件名
String fileName = getFileNameFromUrl(fileUrl);
// 2. 创建临时文件
tempFile = File.createTempFile("upload_", "_" + fileName);
// 3. 下载远程文件到本地临时文件
HttpUtil.downloadFile(fileUrl, tempFile);
// 4. 调用上传接口
String resp = CallAPIUtil.doPostFile(targetUrl, null, "file", tempFile, null);
JSONObject jsonObject = JSON.parseObject(resp);
JSONArray results = jsonObject.getJSONArray("results");
String pageName = null;
for (Object result : results) {
JSONObject resultJson = (JSONObject) result;
if (resultJson.getInteger("rank") == 1) {
String filename = resultJson.getString("filename");
pageName = filename.substring(0, filename.lastIndexOf("."));
}
}
JSONObject output = new JSONObject();
output.put("pageName", pageName);
return TaskNodeExecuteResult.success(output);
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
if (tempFile != null && tempFile.exists()) {
FileUtil.del(tempFile);
}
}
}
/**
* URL 中截取最后的文件名
*/
private String getFileNameFromUrl(String url) {
String cleanUrl = url;
int qIndex = cleanUrl.indexOf("?");
if (qIndex > -1) {
cleanUrl = cleanUrl.substring(0, qIndex);
}
return cleanUrl.substring(cleanUrl.lastIndexOf("/") + 1);
}
}