feat:saveNovelResult 创建 clarification/outline 中间步骤 message

This commit is contained in:
2026-07-26 15:12:50 +08:00
parent 87d668db1c
commit 8c2fe249e7
@@ -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 创建中间步骤 messageclarification_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) : "{}");