life-script启动后地址栏无限重复切换bug修复

This commit is contained in:
2025-12-24 11:38:48 +08:00
parent 7049cd614a
commit 1aa39e11b4
5 changed files with 122 additions and 165 deletions
@@ -17,6 +17,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;
import java.math.BigDecimal;
@@ -33,7 +34,7 @@ import java.util.stream.Collectors;
*/
@Service
@Slf4j
public class LifeEventServiceImpl extends ServiceImpl<LifeEventMapper, LifeEvent>
public class LifeEventServiceImpl extends ServiceImpl<LifeEventMapper, LifeEvent>
implements LifeEventService {
private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
@@ -152,7 +153,7 @@ public class LifeEventServiceImpl extends ServiceImpl<LifeEventMapper, LifeEvent
}
// 调用Coze AI进行疗愈回复
String aiGeneratedContent = generateHealingByAi(request, currentUserId);
String aiGeneratedContent = generateHealingByAi(event);
if (StringUtils.hasText(aiGeneratedContent)) {
event.setAiReply(aiGeneratedContent);
}
@@ -164,24 +165,23 @@ public class LifeEventServiceImpl extends ServiceImpl<LifeEventMapper, LifeEvent
/**
* 调用Coze AI生成疗愈内容
*
* @param request 创建请求
* @param userId 用户ID
* @param event 人生事件
* @return AI生成的疗愈内容,失败时返回null
*/
private String generateHealingByAi(LifeEventCreateRequest request, String userId) {
private String generateHealingByAi(LifeEvent event) {
try {
// 组装AI输入
String input = assembleHealingInput(request);
log.info("开始调用AI生成疗愈回复,用户ID: {}, 输入长度: {}", userId, input.length());
String input = assembleHealingInput(event);
log.info("开始调用AI生成疗愈回复,用户ID: {}, 输入长度: {}", event.getUserId(), input.length());
// 调用Coze工作流
String result = aiChatService.callWorkflowByConfigKey(COZE_HEALING_CONFIG_KEY, input, userId);
String result = aiChatService.callWorkflowByConfigKey(COZE_HEALING_CONFIG_KEY, input, event.getUserId());
log.info("AI生成疗愈回复完成,用户ID: {}, 结果长度: {}", userId, result != null ? result.length() : 0);
log.info("AI生成疗愈回复完成,用户ID: {}, 结果长度: {}", event.getUserId(), result != null ? result.length() : 0);
return result;
} catch (Exception e) {
log.error("AI生成疗愈回复失败,用户ID: {}, 错误: {}", userId, e.getMessage(), e);
log.error("AI生成疗愈回复失败,用户ID: {}, 错误: {}", event.getUserId(), e.getMessage(), e);
// AI调用失败不影响事件创建,返回null
return null;
}
@@ -190,30 +190,30 @@ public class LifeEventServiceImpl extends ServiceImpl<LifeEventMapper, LifeEvent
/**
* 组装AI疗愈输入内容
*
* @param request 创建请求
* @param event 人生事件
* @return 格式化的输入字符串
*/
private String assembleHealingInput(LifeEventCreateRequest request) {
private String assembleHealingInput(LifeEvent event) {
StringBuilder sb = new StringBuilder();
// 标题
if (StringUtils.hasText(request.getTitle())) {
sb.append("【事件标题】").append(request.getTitle()).append("\n");
if (StringUtils.hasText(event.getTitle())) {
sb.append("【事件标题】").append(event.getTitle()).append("\n");
}
// 发生时间
if (StringUtils.hasText(request.getEventDate())) {
sb.append("【发生时间】").append(request.getEventDate()).append("\n");
if (!ObjectUtils.isEmpty(event.getEventDate())) {
sb.append("【发生时间】").append(event.getEventDate()).append("\n");
}
// 经历详解
if (StringUtils.hasText(request.getContent())) {
sb.append("【经历详解】").append(request.getContent()).append("\n");
if (StringUtils.hasText(event.getContent())) {
sb.append("【经历详解】").append(event.getContent()).append("\n");
}
// 情绪类型
if (StringUtils.hasText(request.getEmotionType())) {
sb.append("【情绪类型】").append(request.getEmotionType()).append("\n");
if (StringUtils.hasText(event.getEmotionType())) {
sb.append("【情绪类型】").append(event.getEmotionType()).append("\n");
}
return sb.toString().trim();
@@ -258,6 +258,12 @@ public class LifeEventServiceImpl extends ServiceImpl<LifeEventMapper, LifeEvent
event.setEmotionScore(BigDecimal.valueOf(request.getEmotionScore()));
}
// 调用Coze AI进行疗愈回复
String aiGeneratedContent = generateHealingByAi(event);
if (StringUtils.hasText(aiGeneratedContent)) {
event.setAiReply(aiGeneratedContent);
}
this.updateById(event);
return convertToResponse(event);
}