feat:saveNovelResult 创建 clarification/outline 中间步骤 message
This commit is contained in:
@@ -271,10 +271,69 @@ public class EpicScriptDialogueServiceImpl implements EpicScriptDialogueService
|
|||||||
conversation.setConversationStatus("active");
|
conversation.setConversationStatus("active");
|
||||||
conversation.setStartTime(now);
|
conversation.setStartTime(now);
|
||||||
conversation.setLastActiveTime(now);
|
conversation.setLastActiveTime(now);
|
||||||
conversation.setMessageCount(3);
|
// 读取累积的中间步骤(clarification_question/answer/outline)
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
java.util.List<com.alibaba.fastjson2.JSONObject> stagesHistory =
|
||||||
|
metadata != null && metadata.get("stagesHistory") instanceof java.util.List
|
||||||
|
? (java.util.List<com.alibaba.fastjson2.JSONObject>) metadata.get("stagesHistory")
|
||||||
|
: java.util.Collections.emptyList();
|
||||||
|
|
||||||
|
long messageOrder = 1L;
|
||||||
|
|
||||||
|
// 2.5 创建中间步骤 message(clarification_question/answer/outline),按累积顺序
|
||||||
|
for (com.alibaba.fastjson2.JSONObject stage : stagesHistory) {
|
||||||
|
String kind = stage.getString("kind");
|
||||||
|
if ("clarification_question".equals(kind)) {
|
||||||
|
com.alibaba.fastjson2.JSONObject card = stage.getJSONObject("card");
|
||||||
|
Message qMsg = new Message();
|
||||||
|
qMsg.setId(snowflakeIdGenerator.nextIdAsString());
|
||||||
|
qMsg.setConversationId(conversationId);
|
||||||
|
qMsg.setScriptId(scriptId);
|
||||||
|
qMsg.setUserId(currentUserId);
|
||||||
|
qMsg.setContent(card != null ? card.toJSONString() : "{}");
|
||||||
|
qMsg.setType("clarification_question");
|
||||||
|
qMsg.setSender("assistant");
|
||||||
|
qMsg.setTimestamp(now);
|
||||||
|
qMsg.setMessageOrder(messageOrder++);
|
||||||
|
qMsg.setStatus("sent");
|
||||||
|
qMsg.setIsRead(1);
|
||||||
|
messageService.createMessage(qMsg);
|
||||||
|
} else if ("clarification_answer".equals(kind)) {
|
||||||
|
Message aMsg = new Message();
|
||||||
|
aMsg.setId(snowflakeIdGenerator.nextIdAsString());
|
||||||
|
aMsg.setConversationId(conversationId);
|
||||||
|
aMsg.setScriptId(scriptId);
|
||||||
|
aMsg.setUserId(currentUserId);
|
||||||
|
aMsg.setContent(stage.getString("answer"));
|
||||||
|
aMsg.setType("clarification_answer");
|
||||||
|
aMsg.setSender("user");
|
||||||
|
aMsg.setTimestamp(now);
|
||||||
|
aMsg.setMessageOrder(messageOrder++);
|
||||||
|
aMsg.setStatus("sent");
|
||||||
|
aMsg.setIsRead(1);
|
||||||
|
messageService.createMessage(aMsg);
|
||||||
|
} else if ("outline".equals(kind)) {
|
||||||
|
com.alibaba.fastjson2.JSONObject outline = stage.getJSONObject("outline");
|
||||||
|
Message oMsg = new Message();
|
||||||
|
oMsg.setId(snowflakeIdGenerator.nextIdAsString());
|
||||||
|
oMsg.setConversationId(conversationId);
|
||||||
|
oMsg.setScriptId(scriptId);
|
||||||
|
oMsg.setUserId(currentUserId);
|
||||||
|
oMsg.setContent(outline != null ? outline.toJSONString() : "{}");
|
||||||
|
oMsg.setType("outline");
|
||||||
|
oMsg.setSender("assistant");
|
||||||
|
oMsg.setTimestamp(now);
|
||||||
|
oMsg.setMessageOrder(messageOrder++);
|
||||||
|
oMsg.setStatus("sent");
|
||||||
|
oMsg.setIsRead(1);
|
||||||
|
messageService.createMessage(oMsg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
conversation.setMessageCount((int) (stagesHistory.size() + 3));
|
||||||
conversationService.save(conversation);
|
conversationService.save(conversation);
|
||||||
|
|
||||||
// 3. 系统欢迎消息(messageOrder = 1)
|
// 3. 系统欢迎消息(messageOrder 动态递增)
|
||||||
Message systemWelcome = new Message();
|
Message systemWelcome = new Message();
|
||||||
systemWelcome.setId(snowflakeIdGenerator.nextIdAsString());
|
systemWelcome.setId(snowflakeIdGenerator.nextIdAsString());
|
||||||
systemWelcome.setConversationId(conversationId);
|
systemWelcome.setConversationId(conversationId);
|
||||||
@@ -284,12 +343,12 @@ public class EpicScriptDialogueServiceImpl implements EpicScriptDialogueService
|
|||||||
systemWelcome.setType("system");
|
systemWelcome.setType("system");
|
||||||
systemWelcome.setSender("system");
|
systemWelcome.setSender("system");
|
||||||
systemWelcome.setTimestamp(now);
|
systemWelcome.setTimestamp(now);
|
||||||
systemWelcome.setMessageOrder(1L);
|
systemWelcome.setMessageOrder(messageOrder++);
|
||||||
systemWelcome.setStatus("sent");
|
systemWelcome.setStatus("sent");
|
||||||
systemWelcome.setIsRead(1);
|
systemWelcome.setIsRead(1);
|
||||||
messageService.createMessage(systemWelcome);
|
messageService.createMessage(systemWelcome);
|
||||||
|
|
||||||
// 4. 用户输入消息(messageOrder = 2)
|
// 4. 用户输入消息(messageOrder 动态递增)
|
||||||
Message userMessage = new Message();
|
Message userMessage = new Message();
|
||||||
userMessage.setId(snowflakeIdGenerator.nextIdAsString());
|
userMessage.setId(snowflakeIdGenerator.nextIdAsString());
|
||||||
userMessage.setConversationId(conversationId);
|
userMessage.setConversationId(conversationId);
|
||||||
@@ -299,12 +358,12 @@ public class EpicScriptDialogueServiceImpl implements EpicScriptDialogueService
|
|||||||
userMessage.setType("chat");
|
userMessage.setType("chat");
|
||||||
userMessage.setSender("user");
|
userMessage.setSender("user");
|
||||||
userMessage.setTimestamp(now);
|
userMessage.setTimestamp(now);
|
||||||
userMessage.setMessageOrder(2L);
|
userMessage.setMessageOrder(messageOrder++);
|
||||||
userMessage.setStatus("sent");
|
userMessage.setStatus("sent");
|
||||||
userMessage.setIsRead(1);
|
userMessage.setIsRead(1);
|
||||||
messageService.createMessage(userMessage);
|
messageService.createMessage(userMessage);
|
||||||
|
|
||||||
// 5. AI 小说全文消息(messageOrder = 3)
|
// 5. AI 小说全文消息(messageOrder 动态递增)
|
||||||
Message aiMessage = new Message();
|
Message aiMessage = new Message();
|
||||||
aiMessage.setId(snowflakeIdGenerator.nextIdAsString());
|
aiMessage.setId(snowflakeIdGenerator.nextIdAsString());
|
||||||
aiMessage.setConversationId(conversationId);
|
aiMessage.setConversationId(conversationId);
|
||||||
@@ -314,7 +373,7 @@ public class EpicScriptDialogueServiceImpl implements EpicScriptDialogueService
|
|||||||
aiMessage.setType("script");
|
aiMessage.setType("script");
|
||||||
aiMessage.setSender("assistant");
|
aiMessage.setSender("assistant");
|
||||||
aiMessage.setTimestamp(now);
|
aiMessage.setTimestamp(now);
|
||||||
aiMessage.setMessageOrder(3L);
|
aiMessage.setMessageOrder(messageOrder++);
|
||||||
aiMessage.setVersionNumber(1);
|
aiMessage.setVersionNumber(1);
|
||||||
aiMessage.setStatus("sent");
|
aiMessage.setStatus("sent");
|
||||||
aiMessage.setMetadata(metadata != null ? JSON.toJSONString(metadata) : "{}");
|
aiMessage.setMetadata(metadata != null ? JSON.toJSONString(metadata) : "{}");
|
||||||
|
|||||||
Reference in New Issue
Block a user