diff --git a/frontend/src/pages/Inspiration.tsx b/frontend/src/pages/Inspiration.tsx index a306717..57f25ff 100644 --- a/frontend/src/pages/Inspiration.tsx +++ b/frontend/src/pages/Inspiration.tsx @@ -1,7 +1,7 @@ import React, { useState, useEffect, useRef } from 'react'; import { useNavigate } from 'react-router-dom'; -import { Card, Input, Button, Space, Typography, message, Spin } from 'antd'; -import { SendOutlined, ArrowLeftOutlined } from '@ant-design/icons'; +import { Card, Input, Button, Space, Typography, message, Spin, Modal } from 'antd'; +import { SendOutlined, ArrowLeftOutlined, ReloadOutlined } from '@ant-design/icons'; import { inspirationApi } from '../services/api'; import { AIProjectGenerator, type GenerationConfig } from '../components/AIProjectGenerator'; @@ -36,6 +36,10 @@ interface CacheData { wizardData: Partial; initialIdea: string; selectedOptions: string[]; + lastFailedRequest: { + step: 'title' | 'description' | 'theme' | 'genre'; + context: Partial; + } | null; timestamp: number; } @@ -80,6 +84,9 @@ const Inspiration: React.FC = () => { // 生成配置 const [generationConfig, setGenerationConfig] = useState(null); + // Modal hook + const [modal, contextHolder] = Modal.useModal(); + // 滚动容器引用 const messagesEndRef = useRef(null); const chatContainerRef = useRef(null); @@ -114,6 +121,7 @@ const Inspiration: React.FC = () => { wizardData, initialIdea, selectedOptions, + lastFailedRequest, timestamp: Date.now() }; @@ -153,6 +161,10 @@ const Inspiration: React.FC = () => { setWizardData(cacheData.wizardData); setInitialIdea(cacheData.initialIdea); setSelectedOptions(cacheData.selectedOptions); + // 恢复失败请求信息,确保"重新生成"按钮可用 + if (cacheData.lastFailedRequest) { + setLastFailedRequest(cacheData.lastFailedRequest); + } console.log('✅ 已恢复上次的对话进度'); message.success('已恢复上次的对话进度', 2); @@ -194,7 +206,7 @@ const Inspiration: React.FC = () => { }, 500); return () => clearTimeout(timer); - }, [messages, currentStep, wizardData, initialIdea, selectedOptions, cacheLoaded]); + }, [messages, currentStep, wizardData, initialIdea, selectedOptions, lastFailedRequest, cacheLoaded]); // 自动滚动到底部 const scrollToBottom = () => { @@ -1041,6 +1053,7 @@ const Inspiration: React.FC = () => { minHeight: '100vh', background: 'var(--color-bg-base)', }}> + {contextHolder}