import React, { useState, useEffect } from 'react' import { useParams, useNavigate } from 'react-router-dom' import { ArrowLeft, User, Video } from 'lucide-react' import { Project, ProjectService } from '../services/projectService' import { VideoSegment, MediaService } from '../services/mediaService' import { Model, ModelService } from '../services/modelService' import ProjectMaterialsCenter from '../components/ProjectMaterialsCenter' import AGUIChat from '../components/AGUIChat' const ProjectDetailPage: React.FC = () => { const { projectId } = useParams<{ projectId: string }>() const navigate = useNavigate() const [project, setProject] = useState(null) const [loading, setLoading] = useState(true) // 数据状态 const [projectModels, setProjectModels] = useState([]) const [projectMaterials, setProjectMaterials] = useState([]) useEffect(() => { if (projectId) { loadProjectDetail() } }, [projectId]) const loadProjectDetail = async () => { if (!projectId) return try { setLoading(true) // 加载项目基本信息 const projectResponse = await ProjectService.getProjectById(projectId) if (projectResponse.status && projectResponse.data) { setProject(projectResponse.data) // 加载项目相关数据 await Promise.all([ loadProjectModels(), loadProjectMaterials(projectResponse.data) ]) } else { console.error('Failed to load project:', projectResponse.msg) navigate('/projects') } } catch (error) { console.error('Failed to load project detail:', error) navigate('/projects') } finally { setLoading(false) } } const loadProjectModels = async () => { try { // 获取所有模特,后续可以添加项目关联逻辑 const response = await ModelService.getAllModels() if (response.status && response.data) { setProjectModels(response.data) } } catch (error) { console.error('Failed to load project models:', error) } } const loadProjectMaterials = async (project: Project) => { try { // 获取与项目商品名相关的素材 const response = await MediaService.getAllSegments() if (response.status && response.data) { // 过滤包含商品名标签且未使用的素材 const filteredMaterials = response.data.filter(segment => segment.tags.includes(project.product_name) && segment.use_count === 0 ) setProjectMaterials(filteredMaterials) } } catch (error) { console.error('Failed to load project materials:', error) } } if (loading) { return (
) } if (!project) { return (

项目不存在

找不到指定的项目

) } return (
{/* 顶部导航栏 */}

{project.name}

商品:{project.product_name}

{/* 项目信息概览 */}
{projectModels.length} 个模特
创建于 {new Date(project.created_at).toLocaleDateString()}
{/* 主要内容区域 - 三栏布局 */}
{/* 左侧 AI 聊天面板 */}
loadProjectMaterials(project)} />
{/* 右侧主要区域 - 项目素材管理 */}
) } export default ProjectDetailPage