summaryrefslogtreecommitdiff
path: root/lib/forms
diff options
context:
space:
mode:
authorjoonhoekim <26rote@gmail.com>2025-10-03 14:36:04 +0900
committerjoonhoekim <26rote@gmail.com>2025-10-03 14:36:04 +0900
commit08e91ccdf68585c5f7499a33cffd19a04a7834aa (patch)
treefdb6f92b63b75c541e6214d34b1c7bd812602b9d /lib/forms
parentfca5e37d43543ed1e6e680a779d340b1cc4427cd (diff)
(김준회) 벤더데이터 입력 템플릿 보기 문제 처리
Diffstat (limited to 'lib/forms')
-rw-r--r--lib/forms/sedp-actions.ts79
1 files changed, 75 insertions, 4 deletions
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<SEDPTemplateData[]> {
+): Promise<SEDPTemplateResponse[]> {
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;