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)
삭제
+