diff options
Diffstat (limited to 'lib/soap/mdg/send/vendor-master/action.ts')
| -rw-r--r-- | lib/soap/mdg/send/vendor-master/action.ts | 47 |
1 files changed, 3 insertions, 44 deletions
diff --git a/lib/soap/mdg/send/vendor-master/action.ts b/lib/soap/mdg/send/vendor-master/action.ts index ec267bbb..88b46508 100644 --- a/lib/soap/mdg/send/vendor-master/action.ts +++ b/lib/soap/mdg/send/vendor-master/action.ts @@ -18,10 +18,8 @@ import { } from "@/db/schema/MDG/mdg"; import { eq, sql, desc } from "drizzle-orm"; import { withSoapLogging } from "../../utils"; -// public 경로 사용하지 않음. 형제경로 사용. (처리완료) -import fs from 'fs'; -import path from 'path'; import { XMLBuilder } from 'fast-xml-parser'; +import { CSV_FIELDS } from './csv-fields'; // 환경변수에서 인증 정보 가져오기 const MDG_SOAP_USERNAME = process.env.MDG_SOAP_USERNAME; @@ -30,34 +28,7 @@ const MDG_SOAP_PASSWORD = process.env.MDG_SOAP_PASSWORD; // SAP XI 엔드포인트 URL const MDG_ENDPOINT_URL = "http://shii8dvddb01.hec.serp.shi.samsung.net:50000/sap/xi/engine?type=entry&version=3.0&Sender.Service=P2038_Q&Interface=http%3A%2F%2Fshi.samsung.co.kr%2FP2_MD%2FMDZ%5EP2MD3007_AO&QualityOfService=ExactlyOnce"; -// CSV 파싱 및 필드 정의 -interface CsvField { - table: string; - field: string; - mandatory: boolean; -} - -function parseCsv(content: string): CsvField[] { - const lines = content.trim().split('\n'); - return lines.slice(1).map(line => { - const parts = line.split(','); - return { - table: parts[1]?.trim(), - field: parts[2]?.trim(), - mandatory: parts[3]?.trim() === 'M' - } as CsvField; - }); -} - -// 모듈 초기화 시 CSV 로드 -const CSV_PATH = path.join(__dirname, 'P2MD3007_AO.csv'); -let CSV_FIELDS: CsvField[] = []; -try { - const csvRaw = fs.readFileSync(CSV_PATH, 'utf-8'); - CSV_FIELDS = parseCsv(csvRaw); -} catch (e) { - console.error('CSV 로딩 실패:', e); -} +// CSV 필드 정의는 ./csv-fields.ts에서 import // SAP XI 호환 XML 생성 함수 (수정된 버전) function generateSAPXICompatibleXML(supplierMaster: Record<string, string>): string { @@ -367,20 +338,8 @@ export async function sendTestVendorDataToMDG(formData: Record<string, string>): try { console.log('🚀 테스트용 VENDOR 데이터 송신 시작'); - let csvFields: CsvField[] = []; - try { - const csvRaw = fs.readFileSync(CSV_PATH, 'utf-8'); - csvFields = parseCsv(csvRaw); - } catch (e) { - console.error('CSV 로딩 실패:', e); - return { - success: false, - message: 'CSV 필드 정의 파일을 로드할 수 없습니다.' - }; - } - const seen = new Set<string>(); - const uniqueFields = csvFields.filter(f => { + const uniqueFields = CSV_FIELDS.filter(f => { if (seen.has(f.field)) return false; seen.add(f.field); return true; |
