diff --git a/src/components/production/WorkOrders/documents/InspectionReportModal.tsx b/src/components/production/WorkOrders/documents/InspectionReportModal.tsx index e89a0dd8..67ea5df7 100644 --- a/src/components/production/WorkOrders/documents/InspectionReportModal.tsx +++ b/src/components/production/WorkOrders/documents/InspectionReportModal.tsx @@ -22,6 +22,7 @@ import { getInspectionReport, getInspectionTemplate, saveInspectionDocument, + resolveInspectionDocument, } from '../actions'; import type { WorkOrder, ProcessType } from '../types'; import type { InspectionReportData, InspectionReportNodeGroup } from '../actions'; @@ -169,6 +170,14 @@ export function InspectionReportModal({ const [reportSummary, setReportSummary] = useState(null); // 자체 로딩한 템플릿 데이터 (prop으로 안 넘어올 때) const [selfTemplateData, setSelfTemplateData] = useState(null); + // 기존 문서의 document_data EAV 레코드 (bending 복원용) + const [documentRecords, setDocumentRecords] = useState | null>(null); // props에서 목업 제외한 실제 개소만 사용 (WorkerScreen에서 apiItems + mockItems가 합쳐져 전달됨) // ★ 반드시 workItems와 inspectionDataMap을 같은 소스에서 가져와야 key 포맷이 일치함 @@ -233,14 +242,16 @@ export function InspectionReportModal({ setIsLoading(true); setError(null); - // 작업지시 기본정보 + 검사 성적서 + 템플릿 동시 로딩 + // 작업지시 기본정보 + 검사 성적서 + 템플릿 + 기존 문서 동시 로딩 Promise.all([ getWorkOrderById(workOrderId), getInspectionReport(workOrderId), // prop으로 템플릿이 안 넘어왔으면 자체 로딩 !templateData ? getInspectionTemplate(workOrderId) : Promise.resolve(null), + // 기존 저장된 문서 조회 (document_data EAV 복원용) + resolveInspectionDocument(workOrderId), ]) - .then(([orderResult, reportResult, templateResult]) => { + .then(([orderResult, reportResult, templateResult, resolveResult]) => { // 1) WorkOrder 기본정보 if (orderResult.success && orderResult.data) { const orderData = orderResult.data; @@ -277,6 +288,20 @@ export function InspectionReportModal({ if (templateResult && templateResult.success && templateResult.data) { setSelfTemplateData(templateResult.data); } + + // 4) 기존 문서의 document_data EAV 레코드 추출 + if (resolveResult?.success && resolveResult.data) { + const existingDoc = (resolveResult.data as Record).existing_document as + | { data?: Array<{ section_id: number | null; column_id: number | null; row_index: number; field_key: string; field_value: string | null }> } + | null; + if (existingDoc?.data && existingDoc.data.length > 0) { + setDocumentRecords(existingDoc.data); + } else { + setDocumentRecords(null); + } + } else { + setDocumentRecords(null); + } }) .catch(() => { setError('서버 오류가 발생했습니다.'); @@ -290,6 +315,7 @@ export function InspectionReportModal({ setApiInspectionDataMap(null); setReportSummary(null); setSelfTemplateData(null); + setDocumentRecords(null); setError(null); } }, [open, workOrderId, processType, templateData]); @@ -366,6 +392,7 @@ export function InspectionReportModal({ readOnly={readOnly} workItems={effectiveWorkItems} inspectionDataMap={effectiveInspectionDataMap} + documentRecords={documentRecords ?? undefined} /> ); }