diff --git a/src/components/process-management/ProcessDetail.tsx b/src/components/process-management/ProcessDetail.tsx index 24923ee9..e4f11a99 100644 --- a/src/components/process-management/ProcessDetail.tsx +++ b/src/components/process-management/ProcessDetail.tsx @@ -11,7 +11,7 @@ import { useState, useEffect, useCallback, useRef } from 'react'; import { useRouter } from 'next/navigation'; -import { ArrowLeft, Edit, GripVertical, Plus, Trash2 } from 'lucide-react'; +import { ArrowLeft, Copy, Edit, GripVertical, Plus, Trash2 } from 'lucide-react'; import { ReorderButtons } from '@/components/molecules'; import { Button } from '@/components/ui/button'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; @@ -23,7 +23,7 @@ import { usePermission } from '@/hooks/usePermission'; import { toast } from 'sonner'; import { DeleteConfirmDialog } from '@/components/ui/confirm-dialog'; import { useDeleteDialog } from '@/hooks/useDeleteDialog'; -import { getProcessSteps, reorderProcessSteps, removeProcessItem, deleteProcess } from './actions'; +import { getProcessSteps, reorderProcessSteps, removeProcessItem, deleteProcess, duplicateProcess } from './actions'; import type { Process, ProcessStep } from '@/types/process'; interface ProcessDetailProps { @@ -86,6 +86,21 @@ export function ProcessDetail({ process, onProcessUpdate }: ProcessDetailProps) } }; + const [isDuplicating, setIsDuplicating] = useState(false); + + // 공정 복제 + const handleDuplicate = async () => { + setIsDuplicating(true); + const result = await duplicateProcess(process.id); + setIsDuplicating(false); + if (result.success && result.data) { + toast.success('공정이 복제되었습니다.'); + router.push(`/ko/master-data/process-management/${result.data.id}?mode=view`); + } else { + toast.error(result.error || '공정 복제에 실패했습니다.'); + } + }; + // 네비게이션 const handleEdit = () => { router.push(`/ko/master-data/process-management/${process.id}?mode=edit`); @@ -447,6 +462,16 @@ export function ProcessDetail({ process, onProcessUpdate }: ProcessDetailProps) 삭제 +