refactor(mini-program): runGeneration+交互函数改为操作对话消息
This commit is contained in:
@@ -1661,8 +1661,11 @@ const runGeneration = async ({ prompt, displayText, source = 'text', saveTheme }
|
|||||||
streamWriter.reset()
|
streamWriter.reset()
|
||||||
startGenerationFeedback()
|
startGenerationFeedback()
|
||||||
ttsPlayer.reset()
|
ttsPlayer.reset()
|
||||||
viewState.value = 'generating'
|
viewState.value = 'chat'
|
||||||
keepGenerationAtBottom()
|
generationPhase.value = 'generating'
|
||||||
|
resultMessages.value = []
|
||||||
|
addResultMessage({ role: 'user', kind: 'text', content: display })
|
||||||
|
keepResultAtBottom()
|
||||||
|
|
||||||
try {
|
try {
|
||||||
currentStreamTask.value = startNovelStream({
|
currentStreamTask.value = startNovelStream({
|
||||||
@@ -1745,37 +1748,50 @@ const handleShortNovelEvent = (event) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const submitClarification = (answer) => {
|
const submitClarification = (msg, answer) => {
|
||||||
if (answeringClarification.value) return
|
if (answeringClarification.value) return
|
||||||
|
if (msg) {
|
||||||
|
msg.submitted = true
|
||||||
|
msg.answer = answer
|
||||||
|
}
|
||||||
|
addResultMessage({ role: 'user', kind: 'text', content: answer })
|
||||||
answeringClarification.value = true
|
answeringClarification.value = true
|
||||||
currentStreamTask.value = followupStream({
|
currentStreamTask.value = followupStream({
|
||||||
sessionId: novelSessionId.value,
|
sessionId: novelSessionId.value,
|
||||||
action: 'answer_clarification',
|
action: 'answer_clarification',
|
||||||
payload: { answer },
|
payload: { answer },
|
||||||
onEvent: handleShortNovelEvent,
|
onEvent: handleShortNovelEvent,
|
||||||
onError: (msg) => markGenerationFailed(msg)
|
onError: (errMsg) => markGenerationFailed(errMsg)
|
||||||
})
|
})
|
||||||
setTimeout(() => { answeringClarification.value = false }, 200)
|
setTimeout(() => { answeringClarification.value = false }, 200)
|
||||||
}
|
}
|
||||||
|
|
||||||
const confirmOutline = () => {
|
const confirmOutline = (msg) => {
|
||||||
|
if (msg) msg.confirmed = true
|
||||||
|
addResultMessage({ role: 'user', kind: 'text', content: '确认大纲' })
|
||||||
currentStreamTask.value = followupStream({
|
currentStreamTask.value = followupStream({
|
||||||
sessionId: novelSessionId.value,
|
sessionId: novelSessionId.value,
|
||||||
action: 'confirm_outline',
|
action: 'confirm_outline',
|
||||||
payload: null,
|
payload: null,
|
||||||
onEvent: handleShortNovelEvent,
|
onEvent: handleShortNovelEvent,
|
||||||
onError: (msg) => markGenerationFailed(msg)
|
onError: (errMsg) => markGenerationFailed(errMsg)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const modifyOutline = (feedback) => {
|
const modifyOutline = (msg) => {
|
||||||
if (!feedback || !feedback.trim()) return
|
const feedback = msg?.feedback || ''
|
||||||
|
if (!feedback.trim()) {
|
||||||
|
uni.showToast({ title: '请先填写修改意见', icon: 'none' })
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (msg) msg.confirmed = true
|
||||||
|
addResultMessage({ role: 'user', kind: 'text', content: feedback })
|
||||||
currentStreamTask.value = followupStream({
|
currentStreamTask.value = followupStream({
|
||||||
sessionId: novelSessionId.value,
|
sessionId: novelSessionId.value,
|
||||||
action: 'modify_outline',
|
action: 'modify_outline',
|
||||||
payload: { feedback },
|
payload: { feedback },
|
||||||
onEvent: handleShortNovelEvent,
|
onEvent: handleShortNovelEvent,
|
||||||
onError: (msg) => markGenerationFailed(msg)
|
onError: (errMsg) => markGenerationFailed(errMsg)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1784,15 +1800,13 @@ const resumeSession = () => {
|
|||||||
novelSessionId.value = resumeableSessionId.value
|
novelSessionId.value = resumeableSessionId.value
|
||||||
resumeableSessionId.value = ''
|
resumeableSessionId.value = ''
|
||||||
generating.value = true
|
generating.value = true
|
||||||
streamContent.value = ''
|
generationPhase.value = 'generating'
|
||||||
novelFullText.value = ''
|
|
||||||
generationStatus.value = 'waiting'
|
generationStatus.value = 'waiting'
|
||||||
generationError.value = ''
|
generationError.value = ''
|
||||||
generationDisplayText.value = '继续之前的创作'
|
addResultMessage({ role: 'user', kind: 'text', content: '继续之前的创作' })
|
||||||
streamWriter.reset()
|
streamWriter.reset()
|
||||||
startGenerationFeedback()
|
startGenerationFeedback()
|
||||||
viewState.value = 'generating'
|
keepResultAtBottom()
|
||||||
keepGenerationAtBottom()
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
currentStreamTask.value = followupStream({
|
currentStreamTask.value = followupStream({
|
||||||
@@ -1800,11 +1814,11 @@ const resumeSession = () => {
|
|||||||
action: 'retry',
|
action: 'retry',
|
||||||
payload: null,
|
payload: null,
|
||||||
onEvent: handleShortNovelEvent,
|
onEvent: handleShortNovelEvent,
|
||||||
onError: (msg) => {
|
onError: (errMsg) => {
|
||||||
markGenerationFailed(msg)
|
markGenerationFailed(errMsg)
|
||||||
analytics.track('script_generate_fail', {
|
analytics.track('script_generate_fail', {
|
||||||
source: 'resume',
|
source: 'resume',
|
||||||
error: msg
|
error: errMsg
|
||||||
}, { eventType: 'script', pagePath })
|
}, { eventType: 'script', pagePath })
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user