feat:saveNovelResult 创建 clarification/outline 中间步骤 message
This commit is contained in:
@@ -271,10 +271,69 @@ public class EpicScriptDialogueServiceImpl implements EpicScriptDialogueService
|
||||
conversation.setConversationStatus("active");
|
||||
conversation.setStartTime(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);
|
||||
|
||||
// 3. 系统欢迎消息(messageOrder = 1)
|
||||
// 3. 系统欢迎消息(messageOrder 动态递增)
|
||||
Message systemWelcome = new Message();
|
||||
systemWelcome.setId(snowflakeIdGenerator.nextIdAsString());
|
||||
systemWelcome.setConversationId(conversationId);
|
||||
@@ -284,12 +343,12 @@ public class EpicScriptDialogueServiceImpl implements EpicScriptDialogueService
|
||||
systemWelcome.setType("system");
|
||||
systemWelcome.setSender("system");
|
||||
systemWelcome.setTimestamp(now);
|
||||
systemWelcome.setMessageOrder(1L);
|
||||
systemWelcome.setMessageOrder(messageOrder++);
|
||||
systemWelcome.setStatus("sent");
|
||||
systemWelcome.setIsRead(1);
|
||||
messageService.createMessage(systemWelcome);
|
||||
|
||||
// 4. 用户输入消息(messageOrder = 2)
|
||||
// 4. 用户输入消息(messageOrder 动态递增)
|
||||
Message userMessage = new Message();
|
||||
userMessage.setId(snowflakeIdGenerator.nextIdAsString());
|
||||
userMessage.setConversationId(conversationId);
|
||||
@@ -299,12 +358,12 @@ public class EpicScriptDialogueServiceImpl implements EpicScriptDialogueService
|
||||
userMessage.setType("chat");
|
||||
userMessage.setSender("user");
|
||||
userMessage.setTimestamp(now);
|
||||
userMessage.setMessageOrder(2L);
|
||||
userMessage.setMessageOrder(messageOrder++);
|
||||
userMessage.setStatus("sent");
|
||||
userMessage.setIsRead(1);
|
||||
messageService.createMessage(userMessage);
|
||||
|
||||
// 5. AI 小说全文消息(messageOrder = 3)
|
||||
// 5. AI 小说全文消息(messageOrder 动态递增)
|
||||
Message aiMessage = new Message();
|
||||
aiMessage.setId(snowflakeIdGenerator.nextIdAsString());
|
||||
aiMessage.setConversationId(conversationId);
|
||||
@@ -314,7 +373,7 @@ public class EpicScriptDialogueServiceImpl implements EpicScriptDialogueService
|
||||
aiMessage.setType("script");
|
||||
aiMessage.setSender("assistant");
|
||||
aiMessage.setTimestamp(now);
|
||||
aiMessage.setMessageOrder(3L);
|
||||
aiMessage.setMessageOrder(messageOrder++);
|
||||
aiMessage.setVersionNumber(1);
|
||||
aiMessage.setStatus("sent");
|
||||
aiMessage.setMetadata(metadata != null ? JSON.toJSONString(metadata) : "{}");
|
||||
|
||||
Reference in New Issue
Block a user