import { useState, useEffect } from 'react'; import { useNavigate, useSearchParams } from 'react-router-dom'; import { Form, Input, InputNumber, Select, Button, Card, Row, Col, Typography, Space, message, Radio } from 'antd'; import { RocketOutlined, ArrowLeftOutlined, CheckCircleOutlined } from '@ant-design/icons'; import { AIProjectGenerator, type GenerationConfig } from '../components/AIProjectGenerator'; import type { WizardBasicInfo } from '../types'; const { TextArea } = Input; const { Title, Paragraph } = Typography; export default function ProjectWizardNew() { const navigate = useNavigate(); const [searchParams] = useSearchParams(); const [form] = Form.useForm(); const [isMobile, setIsMobile] = useState(window.innerWidth <= 768); // 状态管理 const [currentStep, setCurrentStep] = useState<'form' | 'generating'>('form'); const [generationConfig, setGenerationConfig] = useState(null); const [resumeProjectId, setResumeProjectId] = useState(null); useEffect(() => { const handleResize = () => { setIsMobile(window.innerWidth <= 768); }; window.addEventListener('resize', handleResize); return () => window.removeEventListener('resize', handleResize); }, []); // 检查URL参数,如果有project_id则恢复生成 useEffect(() => { const projectId = searchParams.get('project_id'); if (projectId) { setResumeProjectId(projectId); handleResumeGeneration(projectId); } }, [searchParams]); // 恢复未完成项目的生成 const handleResumeGeneration = async (projectId: string) => { try { const response = await fetch(`/api/projects/${projectId}`, { credentials: 'include' }); if (!response.ok) { throw new Error('获取项目信息失败'); } const project = await response.json(); const config: GenerationConfig = { title: project.title, description: project.description || '', theme: project.theme || '', genre: project.genre || '', narrative_perspective: project.narrative_perspective || '第三人称', target_words: project.target_words || 100000, chapter_count: 3, character_count: project.character_count || 5, }; setGenerationConfig(config); setCurrentStep('generating'); } catch (error) { console.error('恢复生成失败:', error); message.error('恢复生成失败,请重试'); navigate('/'); } }; // 开始生成流程 const handleAutoGenerate = async (values: WizardBasicInfo) => { const config: GenerationConfig = { title: values.title, description: values.description, theme: values.theme, genre: values.genre, narrative_perspective: values.narrative_perspective, target_words: values.target_words || 100000, chapter_count: 3, // 默认生成3章大纲 character_count: values.character_count || 5, outline_mode: values.outline_mode || 'one-to-many', // 添加大纲模式 }; setGenerationConfig(config); setCurrentStep('generating'); }; // 生成完成回调 const handleComplete = (projectId: string) => { console.log('项目创建完成:', projectId); }; // 返回表单页面 const handleBack = () => { setCurrentStep('form'); setGenerationConfig(null); }; // 渲染表单页面 const renderForm = () => ( 创建新项目 填写基本信息后,AI将自动为您生成世界观、角色和大纲节点(大纲可在项目内手动展开为章节)