export interface VendorWithCbeFields { /** 주요 식별 정보 */ responseId: number vendorId: number rfqId: number | null /** Vendor 기본정보 */ vendorName: string vendorCode: string | null vendorStatus: string | null /** 응답 정보 */ responseStatus: string | null responseNotes: string | null // vendorResponseCBEView의 notes 필드와 매핑됨 respondedBy: string | null respondedAt: Date | null /** RFQ 관련 정보 */ rfqCode: string | null rfqDescription: string | null rfqDueDate: Date | null rfqStatus: string | null rfqType: string | null /** 프로젝트 정보 */ projectId: number | null projectCode: string | null projectName: string | null /** 상업 응답 상세 정보 */ commercialResponseId: number | null 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 /** 첨부파일 개수 */ attachmentCount: number commercialAttachmentCount: number technicalAttachmentCount: number /** 댓글 목록 */ comments: Array<{ id: number commentText: string vendorId?: number cbeId?: number // evaluationId 대신 cbeId 사용 createdAt: Date commentedBy?: number }> /** 첨부파일 목록 */ files: Array<{ id: number fileName: string filePath: string fileType?: string attachmentType?: string description?: string uploadedAt: Date uploadedBy?: string attachmentSource?: 'response' | 'commercial' // 첨부파일 출처 }> } export interface VendorCbeColumnConfig { /** * "조인 결과" 객체(UserWithCompanyAndRoles)의 어느 필드를 표시할지 */ id: keyof VendorWithCbeFields; /** 화면·엑셀에서 보여줄 컬럼명 */ label: string; /** (선택) 그룹핑/카테고리 */ group?: string; /** (선택) Excel에서의 헤더 */ excelHeader?: string; /** (선택) 데이터 타입(예: date, string, number 등), 포맷 지정용 */ type?: string; } export const vendorCbeColumnsConfig: VendorCbeColumnConfig[] = [ { id: "projectCode", label: "Project Code", excelHeader:"Project Code", }, { id: "rfqCode", label: "RFQ Code", excelHeader:"RFQ Code", }, // 협력업체 기본 정보 { id: "vendorName", label: "Vendor Name", excelHeader: "Vendor Name", // group: "Vendor Info", }, // { // id: "vendorCode", // label: "Vendor Code", // excelHeader: "Vendor Code", // group: "Vendor Info", // }, // { // id: "vendorStatus", // label: "Vendor Status", // excelHeader: "Vendor Status", // 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", }, { id: "warrantyPeriod", label: "Warranty Period", excelHeader: "Warranty Period", group: "Commercial Response", }, { id: "validityPeriod", label: "Validity Period", excelHeader: "Validity Period", group: "Commercial Response", }, ] export const vendorResponseCbeColumnsConfig: VendorCbeColumnConfig[] = [ { id: "projectName", label: "Project Name", excelHeader: "Project Name", // group: "RFQ Info", }, { id: "rfqCode", label: "RFQ Code", excelHeader: "RFQ Code", // group: "RFQ Info", }, // { // id: "rfqDescription", // label: "Description", // excelHeader: "RFQ Code", // group: "RFQ Info", // }, // { // id: "rfqDueDate", // label: "Due Date", // excelHeader:"Due Date", // group: "RFQ 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", }, { id: "warrantyPeriod", label: "Warranty Period", excelHeader: "Warranty Period", group: "Commercial Response", }, { id: "validityPeriod", label: "Validity Period", excelHeader: "Validity Period", group: "Commercial Response", }, ]