From 08e91ccdf68585c5f7499a33cffd19a04a7834aa Mon Sep 17 00:00:00 2001 From: joonhoekim <26rote@gmail.com> Date: Fri, 3 Oct 2025 14:36:04 +0900 Subject: (김준회) 벤더데이터 입력 템플릿 보기 문제 처리 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/forms/sedp-actions.ts | 79 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 75 insertions(+), 4 deletions(-) (limited to 'lib/forms') diff --git a/lib/forms/sedp-actions.ts b/lib/forms/sedp-actions.ts index d20fb9fc..4883a33f 100644 --- a/lib/forms/sedp-actions.ts +++ b/lib/forms/sedp-actions.ts @@ -21,6 +21,45 @@ interface SEDPTemplateData { [key: string]: any; } +// 🔍 실제 SEDP API 응답 구조 (대문자) +interface SEDPTemplateResponse { + TMPL_ID: string; + NAME: string; + TMPL_TYPE: string; + SPR_LST_SETUP?: { + ACT_SHEET: string; + HIDN_SHEETS: string[]; + CONTENT?: string; + DATA_SHEETS: Array<{ + SHEET_NAME: string; + REG_TYPE_ID: string; + MAP_CELL_ATT: Array<{ + ATT_ID: string; + IN: string; + }>; + }>; + }; + GRD_LST_SETUP?: { + REG_TYPE_ID: string; + SPR_ITM_IDS: string[]; + ATTS: any[]; + }; + SPR_ITM_LST_SETUP?: { + ACT_SHEET: string; + HIDN_SHEETS: string[]; + CONTENT?: string; + DATA_SHEETS: Array<{ + SHEET_NAME: string; + REG_TYPE_ID: string; + MAP_CELL_ATT: Array<{ + ATT_ID: string; + IN: string; + }>; + }>; + }; + [key: string]: any; +} + /** * SEDP에서 태그 데이터를 가져오는 서버 액션 */ @@ -74,7 +113,7 @@ export async function fetchTagDataFromSEDP( export async function fetchTemplateFromSEDP( projectCode: string, formCode: string -): Promise { +): Promise { try { // Get the token const apiKey = await getSEDPToken(); @@ -132,14 +171,46 @@ export async function fetchTemplateFromSEDP( } const data = await response.json(); - return data as SEDPTemplateData; + + // 🔍 API 응답 데이터 구조 확인 및 로깅 + console.log('🔍 SEDP Template API Response for', tmplId, ':', { + hasTMPL_ID: !!data.TMPL_ID, + hasTemplateId: !!(data as any).templateId, + keys: Object.keys(data), + sample: data + }); + + // 🔍 TMPL_ID 필드 검증 + if (!data.TMPL_ID) { + console.error('❌ Missing TMPL_ID in API response:', data); + // templateId가 있다면 변환 시도 + if ((data as any).templateId) { + console.warn('⚠️ Found templateId instead of TMPL_ID, converting...'); + data.TMPL_ID = (data as any).templateId; + } + } + + return data as SEDPTemplateResponse; }); // 모든 API 호출을 병렬로 실행하고 결과를 수집 const templates = await Promise.all(templatePromises); - // null이나 undefined가 아닌 값들만 필터링 (응답이 없는 경우 제외) - const validTemplates = templates.filter(template => template != null); + // 🔍 null이나 undefined가 아닌 값들만 필터링하고 TMPL_ID 검증 + const validTemplates = templates.filter(template => { + if (!template) { + console.warn('⚠️ Null or undefined template received'); + return false; + } + if (!template.TMPL_ID) { + console.error('❌ Template missing TMPL_ID:', template); + return false; + } + return true; + }); + + console.log(`✅ fetchTemplateFromSEDP completed: ${validTemplates.length} valid templates`); + validTemplates.forEach(t => console.log(` - ${t.TMPL_ID}: ${t.NAME} (${t.TMPL_TYPE})`)); return validTemplates; -- cgit v1.2.3