feat(WEB): 공정관리 상세 체크리스트 연동 및 리팩토링 문서 업데이트
- ProcessDetail: 체크리스트 연동 UI 추가 - Process 타입 체크리스트 필드 확장 - 리팩토링 로드맵 및 Phase1 체크리스트 진행상황 업데이트 - claudedocs 인덱스 정리 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -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>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -16,6 +16,9 @@ interface ApiProcess {
|
||||
description: string | null;
|
||||
process_type: string;
|
||||
department: string | null;
|
||||
manager: string | null;
|
||||
process_category: string | null;
|
||||
use_production_date: boolean;
|
||||
work_log_template: string | null;
|
||||
required_workers: number;
|
||||
equipment_info: string | null;
|
||||
@@ -88,6 +91,9 @@ function transformApiToFrontend(apiData: ApiProcess): Process {
|
||||
description: apiData.description ?? undefined,
|
||||
processType: apiData.process_type as Process['processType'],
|
||||
department: apiData.department ?? '',
|
||||
manager: apiData.manager ?? undefined,
|
||||
processCategory: apiData.process_category ?? undefined,
|
||||
useProductionDate: apiData.use_production_date ?? false,
|
||||
workLogTemplate: apiData.work_log_template ?? undefined,
|
||||
classificationRules: [...patternRules, ...individualRules],
|
||||
requiredWorkers: apiData.required_workers,
|
||||
@@ -176,6 +182,9 @@ function transformFrontendToApi(data: ProcessFormData): Record<string, unknown>
|
||||
process_name: data.processName,
|
||||
process_type: data.processType,
|
||||
department: data.department || null,
|
||||
manager: data.manager || null,
|
||||
process_category: data.processCategory || null,
|
||||
use_production_date: data.useProductionDate ?? false,
|
||||
work_log_template: data.workLogTemplate || null,
|
||||
required_workers: data.requiredWorkers,
|
||||
equipment_info: data.equipmentInfo || null,
|
||||
|
||||
Reference in New Issue
Block a user