import React, { useState } from 'react'; import { PromptGroup } from '../../types'; import Card, { CardHeader, CardContent, CardFooter } from '../common/Card'; import Button from '../common/Button'; import CategoryBadge from '../Category/CategoryBadge'; import { useApp } from '../../contexts/AppContext'; import Modal, { ModalFooter, ModalButton } from '../common/Modal'; import { exportPromptGroupToZip } from '../../utils/exportUtils'; interface PromptGroupDetailProps { promptGroup: PromptGroup; onEdit: () => void; onDelete: () => void; className?: string; } const PromptGroupDetail: React.FC = ({ promptGroup, onEdit, onDelete, className = '' }) => { const { categories } = useApp(); const [showDeleteModal, setShowDeleteModal] = useState(false); // 查找分类对象 - 支持两种可能的数据结构 const categoryId = typeof promptGroup.category === 'object' ? promptGroup.category._id : promptGroup.category; const category = categories.find(c => c._id === categoryId); const formatDate = (date: string | Date) => { const dateObj = typeof date === 'string' ? new Date(date) : date; return dateObj.toLocaleDateString('zh-CN', { year: 'numeric', month: 'long', day: 'numeric' }); }; const handleExport = () => { exportPromptGroupToZip(promptGroup); }; const handleDelete = () => { setShowDeleteModal(true); }; const confirmDelete = () => { onDelete(); setShowDeleteModal(false); }; return (

{promptGroup.name}

{category && }

{promptGroup.description || '无描述'}

{promptGroup.prompts.length} 个提示词
{promptGroup.workflows.length} 个工作流
{promptGroup.dslFiles.length} 个DSL文件

创建时间

{formatDate(promptGroup.createdAt)}

更新时间

{formatDate(promptGroup.updatedAt)}

setShowDeleteModal(false)} title="删除提示词组" footer={ setShowDeleteModal(false)} > 取消 删除 } >

您确定要删除这个提示词组吗?

此操作不可撤销。所有关联的提示词和DSL文件也将被删除。

); }; export default PromptGroupDetail;