()
| 17 | let isUnmounted = false |
| 18 | |
| 19 | async function startGenerationFlow() { |
| 20 | if (store.outline.pages.length === 0) { |
| 21 | router.push('/') |
| 22 | return |
| 23 | } |
| 24 | |
| 25 | if (await restoreFromHistory()) return |
| 26 | |
| 27 | await ensureRecord() |
| 28 | |
| 29 | store.startGeneration() |
| 30 | |
| 31 | generateImagesPost( |
| 32 | store.outline.pages, |
| 33 | null, |
| 34 | store.outline.raw, |
| 35 | (event) => { |
| 36 | console.log('Progress:', event) |
| 37 | }, |
| 38 | (event) => { |
| 39 | console.log('Complete:', event) |
| 40 | if (event.image_url) { |
| 41 | store.updateProgress(event.index, 'done', event.image_url) |
| 42 | } |
| 43 | }, |
| 44 | (event) => { |
| 45 | console.error('Error:', event) |
| 46 | store.updateProgress( |
| 47 | event.index, |
| 48 | 'error', |
| 49 | undefined, |
| 50 | formatErrorMessage(event.error || event.message || '图片生成失败', '图片生成失败') |
| 51 | ) |
| 52 | }, |
| 53 | (event) => { |
| 54 | console.log('Finish:', event) |
| 55 | store.finishGeneration(event.task_id) |
| 56 | |
| 57 | if (!hasFailedImages.value) { |
| 58 | redirectTimer.value = window.setTimeout(() => { |
| 59 | if (!isUnmounted) { |
| 60 | router.push('/result') |
| 61 | } |
| 62 | }, 1000) |
| 63 | } |
| 64 | }, |
| 65 | (err) => { |
| 66 | console.error('Stream Error:', err) |
| 67 | setError(normalizeApiError(err, '图片生成失败')) |
| 68 | }, |
| 69 | store.userImages.length > 0 ? store.userImages : undefined, |
| 70 | store.topic, |
| 71 | store.recordId |
| 72 | ) |
| 73 | } |
| 74 | |
| 75 | function cleanupGenerationRunner() { |
| 76 | isUnmounted = true |
nothing calls this directly
no test coverage detected