export interface RfqShipVendorRow { /** 주요 식별 정보 */ id: number vendorId: number rfqId: number /** Vendor 기본정보 */ vendorName: string vendorCode: string | null vendorStatus: string | null /** 프로젝트 정보 */ projectId: number | null projectCode: string | null projectName: string | null /** RFQ 정보 */ rfqCode: string | null rfqDescription: string | null /** CBE 응답 정보 */ commercialResponseStatus: string | null totalPrice: number | null currency: string | null paymentTerms: string | null incoterms: string | null deliveryPeriod: string | null warrantyPeriod: string | null validityPeriod: string | null commercialNotes: string | null respondedAt: Date | null /** 첨부파일 개수 */ attachmentCount: number | null commercialAttachmentCount: number | null /** 댓글 목록 */ comments: Array<{ id: number commentText: string vendorId?: number createdAt: Date commentedBy?: number }> } export interface RfqShipColumnConfig { /** 객체의 어느 필드를 표시할지 */ id: keyof RfqShipVendorRow; /** 화면에서 보여줄 컬럼명 */ label: string; /** (선택) 그룹핑/카테고리 */ group?: string; /** (선택) Excel에서의 헤더 */ excelHeader?: string; /** (선택) 데이터 타입(예: date, string, number 등), 포맷 지정용 */ type?: string; } /** * 프로젝트 정보, 벤더 정보, CBE 정보가 결합된 컬럼 구성 */ export const rfqShipColumnsConfig: RfqShipColumnConfig[] = [ // 프로젝트 정보 { id: "projectCode", label: "Project Code", excelHeader: "Project Code", group: "Project Info", }, { id: "projectName", label: "Project Name", excelHeader: "Project Name", group: "Project Info", }, { id: "rfqCode", label: "RFQ Code", excelHeader: "RFQ Code", group: "Project Info", }, // 벤더 정보 { id: "vendorName", label: "Vendor Name", excelHeader: "Vendor Name", group: "Vendor Info", }, { id: "vendorCode", label: "Vendor Code", excelHeader: "Vendor Code", group: "Vendor Info", }, // 상업 응답 정보 { id: "commercialResponseStatus", label: "Status", excelHeader: "Status", group: "Commercial Response", type: "text", }, { id: "totalPrice", label: "Total Price", excelHeader: "Total Price", group: "Commercial Response", type: "number", }, { id: "currency", label: "Currency", excelHeader: "Currency", group: "Commercial Response", }, { id: "paymentTerms", label: "Payment Terms", excelHeader: "Payment Terms", group: "Commercial Response", }, { id: "incoterms", label: "Incoterms", excelHeader: "Incoterms", group: "Commercial Response", }, { id: "deliveryPeriod", label: "Delivery Period", excelHeader: "Delivery Period", group: "Commercial Response", } ]