feat(WEB): 공정관리 상세 체크리스트 연동 및 리팩토링 문서 업데이트

- ProcessDetail: 체크리스트 연동 UI 추가
- Process 타입 체크리스트 필드 확장
- 리팩토링 로드맵 및 Phase1 체크리스트 진행상황 업데이트
- claudedocs 인덱스 정리

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
유병철
2026-02-09 21:49:45 +09:00
parent 14b84cc08d
commit 0643d56194
6 changed files with 126 additions and 63 deletions

View File

@@ -20,7 +20,9 @@ import { PageHeader } from '@/components/organisms/PageHeader';
import { useMenuStore } from '@/store/menuStore';
import { usePermission } from '@/hooks/usePermission';
import { toast } from 'sonner';
import { getProcessSteps, reorderProcessSteps, removeProcessItem } from './actions';
import { DeleteConfirmDialog } from '@/components/ui/confirm-dialog';
import { useDeleteDialog } from '@/hooks/useDeleteDialog';
import { getProcessSteps, reorderProcessSteps, removeProcessItem, deleteProcess } from './actions';
import type { Process, ProcessStep } from '@/types/process';
interface ProcessDetailProps {
@@ -33,6 +35,13 @@ export function ProcessDetail({ process, onProcessUpdate }: ProcessDetailProps)
const sidebarCollapsed = useMenuStore((state) => state.sidebarCollapsed);
const { canUpdate } = usePermission();
// 삭제 다이얼로그
const deleteDialog = useDeleteDialog({
onDelete: deleteProcess,
onSuccess: () => router.push('/ko/master-data/process-management'),
entityName: '공정',
});
// 단계 목록 상태
const [steps, setSteps] = useState<ProcessStep[]>([]);
const [isStepsLoading, setIsStepsLoading] = useState(true);
@@ -383,12 +392,32 @@ export function ProcessDetail({ process, onProcessUpdate }: ProcessDetailProps)
<span className="hidden md:inline"></span>
</Button>
{canUpdate && (
<Button onClick={handleEdit} size="sm" className="md:size-default">
<Edit className="h-4 w-4 md:mr-2" />
<span className="hidden md:inline"></span>
</Button>
<div className="flex items-center gap-2">
<Button
variant="outline"
onClick={() => deleteDialog.single.open(process.id)}
size="sm"
className="md:size-default text-destructive hover:text-destructive"
>
<Trash2 className="h-4 w-4 md:mr-2" />
<span className="hidden md:inline"></span>
</Button>
<Button onClick={handleEdit} size="sm" className="md:size-default">
<Edit className="h-4 w-4 md:mr-2" />
<span className="hidden md:inline"></span>
</Button>
</div>
)}
</div>
{/* 삭제 확인 다이얼로그 */}
<DeleteConfirmDialog
open={deleteDialog.single.isOpen}
onOpenChange={deleteDialog.single.onOpenChange}
onConfirm={deleteDialog.single.confirm}
loading={deleteDialog.isPending}
description="이 공정을 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다."
/>
</PageLayout>
);
}