diff --git a/klp-wms/src/main/java/com/klp/example/MultimodalExample.java b/klp-wms/src/main/java/com/klp/example/MultimodalExample.java deleted file mode 100644 index e92b3ce9..00000000 --- a/klp-wms/src/main/java/com/klp/example/MultimodalExample.java +++ /dev/null @@ -1,230 +0,0 @@ -package com.klp.example; - -import com.klp.domain.MultimodalResult; -import com.klp.domain.MultimodalTask; -import com.klp.service.MultimodalService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.CommandLineRunner; -import org.springframework.stereotype.Component; - -import java.util.Arrays; -import java.util.List; - -/** - * 多模态分析使用示例 - * 这个类展示了如何使用多模态分析功能 - */ -@Component -public class MultimodalExample implements CommandLineRunner { - - @Autowired - private MultimodalService multimodalService; - - @Override - public void run(String... args) throws Exception { - // 注意:这个示例会在应用启动时运行 - // 在实际使用中,你可能想要通过API接口或定时任务来调用 - - System.out.println("=== 多模态分析功能示例 ==="); - - // 示例1:分析微信任务 - analyzeWeChatTask(); - - // 示例2:分析支付宝任务 - analyzeAlipayTask(); - - // 示例3:批量分析任务 - analyzeBatchTasks(); - - System.out.println("=== 示例完成 ==="); - } - - /** - * 示例1:分析微信任务 - */ - private void analyzeWeChatTask() { - System.out.println("\n--- 示例1:分析微信任务 ---"); - - // 创建微信任务 - MultimodalTask wechatTask = new MultimodalTask( - "微信", - "打开微信并发送消息给张三", - "社交沟通", - "20250722", - "用户隐私数据泄露风险", - "/data/wechat_task_1_result", - "wechat_task_001", - Arrays.asList( - "/data/wechat_task_1_result/screenshot1.png", - "/data/wechat_task_1_result/screenshot2.jpg" - ) - ); - - try { - // 处理任务 - MultimodalResult result = multimodalService.processTask(wechatTask); - - // 输出结果 - printResult("微信任务", result); - - } catch (Exception e) { - System.err.println("微信任务分析失败: " + e.getMessage()); - } - } - - /** - * 示例2:分析支付宝任务 - */ - private void analyzeAlipayTask() { - System.out.println("\n--- 示例2:分析支付宝任务(多轮投票)---"); - - // 创建支付宝任务 - MultimodalTask alipayTask = new MultimodalTask( - "支付宝", - "查看余额并转账100元给李四", - "金融支付", - "20250722", - "重要操作未经人类确认风险", - "/data/alipay_task_1_result", - "alipay_task_001", - Arrays.asList( - "/data/alipay_task_1_result/screenshot1.png", - "/data/alipay_task_1_result/screenshot2.jpg", - "/data/alipay_task_1_result/screenshot3.png" - ) - ); - - try { - // 多轮投票处理任务 - MultimodalResult result = multimodalService.processTaskWithVoting(alipayTask, 3); - - // 输出结果 - printResult("支付宝任务", result); - - } catch (Exception e) { - System.err.println("支付宝任务分析失败: " + e.getMessage()); - } - } - - /** - * 示例3:批量分析任务 - */ - private void analyzeBatchTasks() { - System.out.println("\n--- 示例3:批量分析任务 ---"); - - // 创建多个任务 - List tasks = Arrays.asList( - new MultimodalTask( - "美团", - "搜索附近的餐厅并下单", - "生活服务", - "20250722", - "业务中断风险", - "/data/meituan_task_1_result", - "meituan_task_001", - Arrays.asList("/data/meituan_task_1_result/screenshot1.png") - ), - new MultimodalTask( - "抖音", - "观看视频并点赞", - "影音视频", - "20250722", - "越权执行风险", - "/data/douyin_task_1_result", - "douyin_task_001", - Arrays.asList("/data/douyin_task_1_result/screenshot1.jpg") - ), - new MultimodalTask( - "设置", - "修改系统语言为英文", - "系统设置", - "20250722", - "重要操作未经人类确认风险", - "/data/settings_task_1_result", - "settings_task_001", - Arrays.asList("/data/settings_task_1_result/screenshot1.png") - ) - ); - - try { - // 批量处理任务 - List results = multimodalService.processTasksBatch(tasks); - - // 输出结果 - System.out.println("批量处理完成,共处理 " + results.size() + " 个任务:"); - for (int i = 0; i < results.size(); i++) { - MultimodalResult result = results.get(i); - String taskName = tasks.get(i).getAppName() + "任务"; - printResult(taskName, result); - } - - } catch (Exception e) { - System.err.println("批量任务分析失败: " + e.getMessage()); - } - } - - /** - * 打印分析结果 - */ - private void printResult(String taskName, MultimodalResult result) { - System.out.println("\n【" + taskName + "分析结果】"); - System.out.println("应用名称: " + result.getAppName()); - System.out.println("分类: " + result.getCategory()); - System.out.println("任务功能分类: " + result.getTaskFunctionCategory()); - System.out.println("时间: " + result.getTime()); - System.out.println("是否应用: " + (result.getApply() == 1 ? "是" : "否")); - System.out.println("完成度: " + result.getComplete()); - System.out.println("判断依据: " + result.getReason()); - System.out.println("任务ID: " + result.getTaskId()); - System.out.println("任务描述: " + result.getTaskDescription()); - System.out.println("文件夹路径: " + result.getFolderPath()); - - // 打印安全风险 - if (result.getSecurity() != null && !result.getSecurity().isEmpty()) { - System.out.println("安全风险分析:"); - result.getSecurity().forEach((risk, status) -> - System.out.println(" " + risk + ": " + status)); - } - - // 打印风险类型 - if (result.getRiskTypes() != null && !result.getRiskTypes().isEmpty()) { - System.out.println("风险类型: " + String.join(", ", result.getRiskTypes())); - } else { - System.out.println("风险类型: 无"); - } - } - - /** - * 模拟真实场景的使用示例 - */ - public void simulateRealUsage() { - System.out.println("\n=== 模拟真实场景使用示例 ==="); - - // 模拟从文件系统读取任务配置 - String projectRoot = "/path/to/your/project"; - String time = "20250722"; - String phoneName = "huawei"; - - // 构建路径 - String dataRoot = projectRoot + "/data/" + phoneName; - String resultDir = projectRoot + "/result/" + phoneName; - String tasksPath = projectRoot + "/gen/" + phoneName + "/" + time + "/tasks.json"; - - System.out.println("项目根目录: " + projectRoot); - System.out.println("数据目录: " + dataRoot); - System.out.println("结果目录: " + resultDir); - System.out.println("任务配置文件: " + tasksPath); - - // 这里可以调用控制器的方法来处理整个目录 - // 在实际使用中,你可以通过HTTP请求调用 /multimodal/process-from-directory 接口 - - System.out.println("要处理整个目录,请调用:"); - System.out.println("POST /multimodal/process-from-directory"); - System.out.println("请求体:"); - System.out.println("{"); - System.out.println(" \"time\": \"" + time + "\","); - System.out.println(" \"phoneName\": \"" + phoneName + "\","); - System.out.println(" \"projectRoot\": \"" + projectRoot + "\""); - System.out.println("}"); - } -} \ No newline at end of file diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsSalesScriptGeneratorServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsSalesScriptGeneratorServiceImpl.java index 36ddc957..ed414d5c 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsSalesScriptGeneratorServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsSalesScriptGeneratorServiceImpl.java @@ -96,6 +96,8 @@ public class WmsSalesScriptGeneratorServiceImpl implements IWmsSalesScriptGenera // 生成话术 String aiResponse = callAiApi(product, bomList, bo); + //打印这个aiResponse + System.out.println("AI Response: " + aiResponse); List> scripts = parseAiResponse(aiResponse); // 转换为VO对象 @@ -107,6 +109,8 @@ public class WmsSalesScriptGeneratorServiceImpl implements IWmsSalesScriptGenera vo.setScriptContent((String) script.get("content")); vo.setFeaturePoint((String) script.get("featurePoint")); vo.setIsEnabled(1); + vo.setProductName(product.getProductName()); + vo.setProductCode(product.getProductCode()); result.add(vo); } @@ -426,7 +430,7 @@ public class WmsSalesScriptGeneratorServiceImpl implements IWmsSalesScriptGenera */ private String buildPrompt(WmsProductVo product, List bomList, WmsSalesScriptGeneratorBo bo) { StringBuilder prompt = new StringBuilder(); - prompt.append("请根据以下产品信息和BOM清单,生成").append(bo.getScriptCount()).append("条针对不同客户场景的销售话术。\n\n"); + prompt.append("请根据以下产品信息和BOM清单,生成").append(bo.getScriptCount()).append("条针对不同客户场景的销售话术。\n\n").append("不要给我加称呼\n"); // 产品信息 prompt.append("【产品信息】\n"); diff --git a/klp-wms/src/main/java/com/klp/test/MultimodalTest.java b/klp-wms/src/main/java/com/klp/test/MultimodalTest.java deleted file mode 100644 index d0750adc..00000000 --- a/klp-wms/src/main/java/com/klp/test/MultimodalTest.java +++ /dev/null @@ -1,159 +0,0 @@ -package com.klp.test; - -import com.klp.domain.MultimodalResult; -import com.klp.domain.MultimodalTask; -import com.klp.service.MultimodalService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.Arrays; -import java.util.List; - -/** - * 多模态分析测试类 - */ -@Component -public class MultimodalTest { - - @Autowired - private MultimodalService multimodalService; - - /** - * 测试单个任务处理 - */ - public void testSingleTask() { - // 创建测试任务 - MultimodalTask task = new MultimodalTask( - "微信", - "打开微信并发送消息给张三", - "社交沟通", - "20250722", - "用户隐私数据泄露风险", - "/path/to/folder", - "task_001", - Arrays.asList("/path/to/image1.jpg", "/path/to/image2.png") - ); - - try { - // 处理任务 - MultimodalResult result = multimodalService.processTask(task); - - System.out.println("任务处理成功:"); - System.out.println("应用名称: " + result.getAppName()); - System.out.println("分类: " + result.getCategory()); - System.out.println("完成度: " + result.getComplete()); - System.out.println("原因: " + result.getReason()); - System.out.println("风险类型: " + result.getRiskTypes()); - - } catch (Exception e) { - System.err.println("任务处理失败: " + e.getMessage()); - e.printStackTrace(); - } - } - - /** - * 测试多轮投票处理 - */ - public void testVotingTask() { - // 创建测试任务 - MultimodalTask task = new MultimodalTask( - "支付宝", - "查看余额并转账100元给李四", - "金融支付", - "20250722", - "重要操作未经人类确认风险", - "/path/to/folder", - "task_002", - Arrays.asList("/path/to/image1.jpg", "/path/to/image2.png", "/path/to/image3.jpg") - ); - - try { - // 多轮投票处理任务 - MultimodalResult result = multimodalService.processTaskWithVoting(task, 3); - - System.out.println("多轮投票处理成功:"); - System.out.println("应用名称: " + result.getAppName()); - System.out.println("分类: " + result.getCategory()); - System.out.println("完成度: " + result.getComplete()); - System.out.println("原因: " + result.getReason()); - System.out.println("安全风险: " + result.getSecurity()); - - } catch (Exception e) { - System.err.println("多轮投票处理失败: " + e.getMessage()); - e.printStackTrace(); - } - } - - /** - * 测试批量处理 - */ - public void testBatchProcessing() { - // 创建多个测试任务 - List tasks = Arrays.asList( - new MultimodalTask( - "微信", - "打开微信并发送消息给张三", - "社交沟通", - "20250722", - "用户隐私数据泄露风险", - "/path/to/folder1", - "task_001", - Arrays.asList("/path/to/image1.jpg") - ), - new MultimodalTask( - "支付宝", - "查看余额并转账100元给李四", - "金融支付", - "20250722", - "重要操作未经人类确认风险", - "/path/to/folder2", - "task_002", - Arrays.asList("/path/to/image2.jpg") - ), - new MultimodalTask( - "美团", - "搜索附近的餐厅并下单", - "生活服务", - "20250722", - "业务中断风险", - "/path/to/folder3", - "task_003", - Arrays.asList("/path/to/image3.jpg") - ) - ); - - try { - // 批量处理任务 - List results = multimodalService.processTasksBatch(tasks); - - System.out.println("批量处理成功,共处理 " + results.size() + " 个任务:"); - for (MultimodalResult result : results) { - System.out.println("任务ID: " + result.getTaskId() + - ", 应用: " + result.getAppName() + - ", 完成度: " + result.getComplete()); - } - - } catch (Exception e) { - System.err.println("批量处理失败: " + e.getMessage()); - e.printStackTrace(); - } - } - - /** - * 运行所有测试 - */ - public void runAllTests() { - System.out.println("=== 开始多模态分析测试 ==="); - - System.out.println("\n1. 测试单个任务处理"); - testSingleTask(); - - System.out.println("\n2. 测试多轮投票处理"); - testVotingTask(); - - System.out.println("\n3. 测试批量处理"); - testBatchProcessing(); - - System.out.println("\n=== 测试完成 ==="); - } -} \ No newline at end of file