调用ai模型分析家居场景
This commit is contained in:
@@ -7,6 +7,7 @@ import com.rj.common.AudioManagementConstants;
|
||||
import com.rj.common.DataEnrichmentUtil;
|
||||
import com.rj.entity.AudioManagement;
|
||||
import com.rj.entity.AudioManagementSegments;
|
||||
import com.rj.entity.AudioTextAnalysisFurniture;
|
||||
import com.rj.entity.CustomerManagement;
|
||||
import com.rj.service.*;
|
||||
import com.rj.dto.AsrRequest;
|
||||
@@ -44,7 +45,7 @@ import java.util.UUID;
|
||||
public class AudioManagementController {
|
||||
|
||||
// 场景常量,避免在解析逻辑中硬编码字符串
|
||||
private static final String SCENARIO_FURNITURE_SALE = "FURNITURE_SALE";
|
||||
private static final String SCENARIO_FURNITURE_SALE = "FURNITURE";
|
||||
private static final String SCENARIO_MEETING_SUMMARY = "MEETING_SUMMARY";
|
||||
private static final String SCENARIO_CAR_SALE = "CAR_SALE";
|
||||
private static final String SCENARIO_SPEAKING_TRAINING= "SPEAKING_TRAINING"; //租赁模式
|
||||
@@ -637,6 +638,7 @@ public class AudioManagementController {
|
||||
@Parameter(description = "录音信息", required = true)
|
||||
@RequestBody AudioManagement audioManagement) {
|
||||
Map<String, Object> result = new HashMap<>();
|
||||
boolean success = true;
|
||||
try {
|
||||
if (audioManagement.getId() == null || audioManagement.getId().trim().isEmpty()) {
|
||||
result.put("success", false);
|
||||
@@ -651,6 +653,14 @@ public class AudioManagementController {
|
||||
result.put("message", "记录不存在");
|
||||
return ResponseEntity.badRequest().body(result);
|
||||
}
|
||||
// 2. 检查summary字段,如果已存在总结内容,直接返回提示,不进行AI分析
|
||||
String summary = audioManagement.getSummary();
|
||||
if (summary != null && !summary.trim().isEmpty()) {
|
||||
result.put("success", true);
|
||||
result.put("message", "AI分析已完成");
|
||||
result.put("data", audioManagement);
|
||||
return ResponseEntity.ok(result);
|
||||
}
|
||||
// 3. 获取录音文本;如主表为空,则从分段表拼接
|
||||
String recordingText = audioManagementFromDB.getRecordingText();
|
||||
if (recordingText == null || recordingText.trim().isEmpty()) {
|
||||
@@ -688,23 +698,35 @@ public class AudioManagementController {
|
||||
|
||||
// 4. 根据场景动态选择业务场景类型,调用业务层通用服务生成总结
|
||||
AudioAnalysisSceneType sceneType = resolveSceneType(audioManagementFromDB.getScenario());
|
||||
String rawContent = audioTextAnalysisLlmService.generateSummaryByLLM(
|
||||
if (recordingText == null || recordingText.trim().isEmpty()) {
|
||||
result.put("success", false);
|
||||
result.put("message", "录音文本为空");
|
||||
return ResponseEntity.badRequest().body(result);
|
||||
}
|
||||
|
||||
// 4. 通过业务层通用服务调用大模型生成总结并保存数据
|
||||
AudioTextAnalysisFurniture furniture = audioTextAnalysisLlmService.generateSummaryAndSave(
|
||||
sceneType,
|
||||
recordingText
|
||||
recordingText,
|
||||
audioManagement.getId(),
|
||||
audioManagement.getSalesName(),
|
||||
audioManagement.getSalesPhone(),
|
||||
audioManagement.getCustomerName(),
|
||||
audioManagement.getCustomerPhone()
|
||||
);
|
||||
|
||||
|
||||
boolean success = true;
|
||||
if (success) {
|
||||
log.info("llm return furniture Analysis : ",furniture.toString() );
|
||||
if (recordingText == null || recordingText.trim().isEmpty()) {
|
||||
result.put("success", false);
|
||||
result.put("message", "录音文本为空");
|
||||
return ResponseEntity.badRequest().body(result);
|
||||
} else {
|
||||
result.put("success", true);
|
||||
result.put("message", "录音finishServiceById更新成功");
|
||||
result.put("data", audioManagement);
|
||||
return ResponseEntity.ok(result);
|
||||
} else {
|
||||
result.put("success", false);
|
||||
result.put("message", "录音finishServiceById更新失败");
|
||||
return ResponseEntity.badRequest().body(result);
|
||||
}
|
||||
|
||||
|
||||
} catch (Exception e) {
|
||||
result.put("success", false);
|
||||
result.put("message", "更新异常:" + e.getMessage());
|
||||
|
||||
@@ -237,6 +237,14 @@ public class AudioTextAnalysisFurnitureController {
|
||||
result.put("message", "记录不存在");
|
||||
return ResponseEntity.badRequest().body(result);
|
||||
}
|
||||
// 2. 检查summary字段,如果已存在总结内容,直接返回提示,不进行AI分析
|
||||
String summary = audioManagement.getSummary();
|
||||
if (summary != null && !summary.trim().isEmpty()) {
|
||||
result.put("success", true);
|
||||
result.put("message", "AI分析已完成");
|
||||
result.put("data", audioManagement);
|
||||
return ResponseEntity.ok(result);
|
||||
}
|
||||
// 3. 获取录音文本
|
||||
String recordingText = audioManagement.getRecordingText();
|
||||
if (recordingText == null || recordingText.trim().isEmpty()) {
|
||||
@@ -244,16 +252,10 @@ public class AudioTextAnalysisFurnitureController {
|
||||
result.put("message", "录音文本为空");
|
||||
return ResponseEntity.badRequest().body(result);
|
||||
}
|
||||
AudioTextAnalysisFurniture furniture = new AudioTextAnalysisFurniture();
|
||||
furniture.setRecordingText(recordingText);
|
||||
// 4. 通过业务层通用服务调用大模型生成总结,然后解析结构化结果
|
||||
String rawContent = audioTextAnalysisLlmService.generateSummaryByLLM(
|
||||
AudioAnalysisSceneType.SCENARIO_MEETING_SUMMARY,
|
||||
furniture.getRecordingText()
|
||||
);
|
||||
applyStructuredResult(
|
||||
furniture,
|
||||
rawContent,
|
||||
// 4. 通过业务层通用服务调用大模型生成总结并保存数据
|
||||
AudioTextAnalysisFurniture furniture = audioTextAnalysisLlmService.generateSummaryAndSave(
|
||||
AudioAnalysisSceneType.SCENARIO_FURNITURE_SALE,
|
||||
recordingText,
|
||||
id,
|
||||
audioManagement.getSalesName(),
|
||||
audioManagement.getSalesPhone(),
|
||||
@@ -261,34 +263,14 @@ public class AudioTextAnalysisFurnitureController {
|
||||
audioManagement.getCustomerPhone()
|
||||
);
|
||||
|
||||
|
||||
audioManagement = new AudioManagement();
|
||||
audioManagement.setSummary(furniture.getSummarySentence());
|
||||
audioManagement.setId(id);
|
||||
audioManagementService.updateById(audioManagement);
|
||||
|
||||
|
||||
// 5. 保存总结到数据库
|
||||
LambdaQueryWrapper<AudioTextAnalysisFurniture> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(AudioTextAnalysisFurniture::getParentId, id);
|
||||
AudioTextAnalysisFurniture one = furnitureService.getOne(wrapper);
|
||||
if (one != null) {
|
||||
furniture.setId(one.getId());
|
||||
}
|
||||
|
||||
furniture.setUpdatedAt(LocalDateTime.now());
|
||||
furniture.setParentId( id);
|
||||
furniture.setRecordingText(null);
|
||||
boolean updateSuccess = furnitureService.saveOrUpdate(furniture);
|
||||
|
||||
if (updateSuccess) {
|
||||
if (furniture != null) {
|
||||
result.put("success", true);
|
||||
result.put("message", "生成总结成功");
|
||||
result.put("data", furniture);
|
||||
return ResponseEntity.ok(result);
|
||||
} else {
|
||||
result.put("success", false);
|
||||
result.put("message", "保存总结失败");
|
||||
result.put("message", "生成总结并保存失败");
|
||||
return ResponseEntity.badRequest().body(result);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user