diff options
Diffstat (limited to 'config')
| -rw-r--r-- | config/VendorTypesColumnsConfig.ts | 37 | ||||
| -rw-r--r-- | config/basicContractColumnsConfig.ts | 211 | ||||
| -rw-r--r-- | config/bidProjectsColumnsConfig.ts | 122 | ||||
| -rw-r--r-- | config/candidatesColumnsConfig.ts | 122 | ||||
| -rw-r--r-- | config/faqDataConfig.ts | 32 | ||||
| -rw-r--r-- | config/formListsColumnsConfig.ts | 12 | ||||
| -rw-r--r-- | config/itemsColumnsConfig.ts | 12 | ||||
| -rw-r--r-- | config/menuConfig.ts | 79 | ||||
| -rw-r--r-- | config/projectAVLColumnsConfig.ts | 78 | ||||
| -rw-r--r-- | config/vendorCbeColumnsConfig.ts | 370 | ||||
| -rw-r--r-- | config/vendorColumnsConfig.ts | 63 | ||||
| -rw-r--r-- | config/vendorInvestigationsColumnsConfig.ts | 1 | ||||
| -rw-r--r-- | config/vendorItemsColumnsConfig.ts | 12 | ||||
| -rw-r--r-- | config/vendorRfbColumnsConfig.ts | 10 | ||||
| -rw-r--r-- | config/vendorTbeColumnsConfig.ts | 49 |
15 files changed, 967 insertions, 243 deletions
diff --git a/config/VendorTypesColumnsConfig.ts b/config/VendorTypesColumnsConfig.ts new file mode 100644 index 00000000..6d5889e2 --- /dev/null +++ b/config/VendorTypesColumnsConfig.ts @@ -0,0 +1,37 @@ +import { VendorTypes } from "@/db/schema" + +export interface VendorTypesColumnConfig { + id: keyof VendorTypes + label: string + group?: string + excelHeader?: string + type?: string +} + +export const VendorTypesColumnsConfig: VendorTypesColumnConfig[] = [ + { + id: "nameKo", + label: "업체유형(한글)", + excelHeader: "업체유형(한글)", + // group: "Basic Info", + }, + { + id: "nameEn", + label: "업체유형(영어)", + excelHeader: "업체유형(영어)", + // group: "Basic Info", + }, + + { + id: "createdAt", + label: "Created At", + excelHeader: "Created At", + // group: "Metadata",a + }, + { + id: "updatedAt", + label: "Updated At", + excelHeader: "Updated At", + // group: "Metadata", + }, +]
\ No newline at end of file diff --git a/config/basicContractColumnsConfig.ts b/config/basicContractColumnsConfig.ts new file mode 100644 index 00000000..08eab26a --- /dev/null +++ b/config/basicContractColumnsConfig.ts @@ -0,0 +1,211 @@ +// 기본 계약 관련 컬럼 설정 파일 + +import { BasicContractTemplate, BasicContractView } from "@/db/schema"; + + + +// 컬럼 설정 인터페이스 +export interface BasicContractColumnConfig { + /** 테이블에서 접근할 필드 */ + id: keyof BasicContractView; + + /** 화면에 표시될 컬럼명 */ + label: string; + + /** (선택) 그룹핑/카테고리 */ + group?: string; + + /** (선택) Excel 내보내기용 헤더 */ + excelHeader?: string; + + /** (선택) 데이터 타입(포맷팅 용도) */ + type?: 'string' | 'number' | 'date' | 'boolean'; +} + +// 템플릿 컬럼 설정 인터페이스 +export interface BasicContractTemplateColumnConfig { + /** 테이블에서 접근할 필드 */ + id: keyof BasicContractTemplate; + + /** 화면에 표시될 컬럼명 */ + label: string; + + /** (선택) 그룹핑/카테고리 */ + group?: string; + + /** (선택) Excel 내보내기용 헤더 */ + excelHeader?: string; + + /** (선택) 데이터 타입(포맷팅 용도) */ + type?: 'string' | 'number' | 'date' | 'boolean'; +} + +// 기본 계약 컬럼 설정 +export const basicContractColumnsConfig: BasicContractColumnConfig[] = [ + + { + id: "vendorCode", + label: "Vendor Code", + excelHeader: "Vendor Code", + group: "벤더 정보", + }, + { + id: "vendorName", + label: "업체명", + excelHeader: "업체명", + group: "벤더 정보", + }, + { + id: "vendorEmail", + label: "업체대표이메일", + excelHeader: "업체대표이메일", + group: "벤더 정보", + }, + // 계약 기본 정보 그룹 + { + id: "templateName", + label: "템플릿 이름", + excelHeader: "템플릿 이름", + // group: "기본 정보", + }, + + { + id: "status", + label: "서명 상태", + excelHeader: "서명 상태", + // group: "기본 정보", + }, + + // 벤더 정보 그룹 + + + // 요청자 정보 그룹 + { + id: "userName", + label: "요청자", + excelHeader: "요청자", + // group: "요청자 정보", + }, + + // 날짜 정보 그룹 + { + id: "createdAt", + label: "Request Date", + excelHeader: "Request Date", + group: "날짜 정보", + type: "date", + }, + { + id: "updatedAt", + label: "Updated Date", + excelHeader: "Updated Date", + group: "날짜 정보", + type: "date", + }, +]; + +// 기본 계약 템플릿 컬럼 설정 +export const basicContractTemplateColumnsConfig: BasicContractTemplateColumnConfig[] = [ + // 템플릿 기본 정보 그룹 + { + id: "templateName", + label: "Template Name", + excelHeader: "Template Name", + group: "기본 정보", + }, + { + id: "validityPeriod", + label: "서명 유효기간(개월)", + excelHeader: "서명 유효기간(개월)", + // group: "기본 정보", + }, + { + id: "status", + label: "Status", + excelHeader: "Status", + group: "기본 정보", + }, + + // 파일 정보 그룹 + { + id: "fileName", + label: "File Name", + excelHeader: "File Name", + group: "파일 정보", + }, + + // 날짜 정보 그룹 + { + id: "createdAt", + label: "Created Date", + excelHeader: "Created Date", + group: "날짜 정보", + type: "date", + }, + { + id: "updatedAt", + label: "Updated Date", + excelHeader: "Updated Date", + group: "날짜 정보", + type: "date", + }, +]; + +export const basicContractVendorColumnsConfig: BasicContractColumnConfig[] = [ + + + // 계약 기본 정보 그룹 + { + id: "templateName", + label: "템플릿 이름", + excelHeader: "템플릿 이름", + // group: "기본 정보", + }, + { + id: "validityPeriod", + label: "서명 유효기간(개월)", + excelHeader: "서명 유효기간(개월)", + // group: "기본 정보", + }, + + { + id: "status", + label: "서명 상태", + excelHeader: "서명 상태", + // group: "기본 정보", + }, + + // 벤더 정보 그룹 + + + // 요청자 정보 그룹 + { + id: "userName", + label: "요청자", + excelHeader: "요청자", + // group: "요청자 정보", + }, + + // 날짜 정보 그룹 + { + id: "createdAt", + label: "Request Date", + excelHeader: "Request Date", + group: "날짜 정보", + type: "date", + }, + { + id: "completedAt", + label: "서명완료일", + excelHeader: "서명완료일", + group: "날짜 정보", + type: "date", + }, + { + id: "updatedAt", + label: "Updated Date", + excelHeader: "Updated Date", + group: "날짜 정보", + type: "date", + }, +]; diff --git a/config/bidProjectsColumnsConfig.ts b/config/bidProjectsColumnsConfig.ts new file mode 100644 index 00000000..0a0e5c9c --- /dev/null +++ b/config/bidProjectsColumnsConfig.ts @@ -0,0 +1,122 @@ +import { BiddingProjects } from "@/db/schema" + +export interface ProjectColumnConfig { + id: keyof BiddingProjects + label: string + group?: string + excelHeader?: string + type?: string +} + +export const bidProjectsColumnsConfig: ProjectColumnConfig[] = [ + { + id: "pspid", + label: "견적프로젝트번호", + excelHeader: "견적프로젝트번호", + // group: "Basic Info", + }, + { + id: "projNm", + label: "견적프로젝트명", + excelHeader: "견적프로젝트명", + // group: "Basic Info", + }, + { + id: "sector", + label: "부문(S / M)", + excelHeader: "부문(S / M)", + // group: "Basic Info", + }, + { + id: "projMsrm", + label: "척수", + excelHeader: "척수", + // group: "Basic Info", + }, + { + id: "kunnr", + label: "선주코드", + excelHeader: "선주코드", + // group: "Basic Info", + }, + { + id: "kunnrNm", + label: "선주명", + excelHeader: "선주명", + // group: "Basic Info", + }, { + id: "cls1", + label: "선급코드", + excelHeader: "선급코드", + // group: "Basic Info", + }, { + id: "cls1Nm", + label: "선급명", + excelHeader: "선급명", + // group: "Basic Info", + }, { + id: "ptype", + label: "선종코드", + excelHeader: "선종코드", + // group: "Basic Info", + }, { + id: "ptypeNm", + label: "선종명", + excelHeader: "선종명", + // group: "Basic Info", + }, { + id: "pmodelCd", + label: "선형코드", + excelHeader: "선형코드", + // group: "Basic Info", + }, + { + id: "pmodelNm", + label: "선형명", + excelHeader: "선형명", + // group: "Basic Info", + }, + { + id: "pmodelSz", + label: "선형크기", + excelHeader: "선형크기", + // group: "Basic Info", + }, + { + id: "pmodelUom", + label: "선형단위", + excelHeader: "선형단위", + // group: "Basic Info", + }, + { + id: "txt04", + label: "견적상태코드", + excelHeader: "견적상태코드", + // group: "Basic Info", + }, + { + id: "txt30", + label: "견적상태명", + excelHeader: "견적상태명", + // group: "Basic Info", + }, + + { + id: "estmPm", + label: "견적대표PM 성명", + excelHeader: "견적대표PM 성명", + // group: "Basic Info", + }, + { + id: "createdAt", + label: "Created At", + excelHeader: "Created At", + // group: "Metadata",a + }, + { + id: "updatedAt", + label: "Updated At", + excelHeader: "Updated At", + // group: "Metadata", + }, +]
\ No newline at end of file diff --git a/config/candidatesColumnsConfig.ts b/config/candidatesColumnsConfig.ts index 3eeb2d2a..b6e03744 100644 --- a/config/candidatesColumnsConfig.ts +++ b/config/candidatesColumnsConfig.ts @@ -1,7 +1,9 @@ -import { VendorCandidates } from "@/db/schema/vendors" +import { VendorCandidates, VendorCandidatesWithVendorInfo } from "@/db/schema/vendors" + +export type { VendorCandidatesWithVendorInfo } export interface CandidateColumnConfig { - id: keyof VendorCandidates + id: keyof VendorCandidatesWithVendorInfo label: string group?: string excelHeader?: string @@ -11,54 +13,118 @@ export interface CandidateColumnConfig { export const candidateColumnsConfig: CandidateColumnConfig[] = [ // Basic Info { - id: "companyName", - label: "Company Name", - excelHeader: "Company Name", + id: "status", + label: "Status", + excelHeader: "Status", // group: "Basic Info", }, { + id: "createdAt", + label: "수집일", + excelHeader: "수집일", + group: "발굴정보", + }, + { + id: "items", + label: "품목", + excelHeader: "품목", + group: "발굴정보", + }, + { + id: "companyName", + label: "업체명", + excelHeader: "업체명", + group: "발굴정보", + }, + { id: "contactEmail", - label: "Contact Email", - excelHeader: "Contact Email", - // group: "Basic Info", + label: "E-MAIL", + excelHeader: "E-MAIL", + group: "Vendor 추가정보", + }, + { + id: "country", + label: "국가", + excelHeader: "국가", + group: "Vendor 추가정보", }, { + id: "address", + label: "주소", + excelHeader: "주소", + group: "Vendor 추가정보", + }, + + { id: "contactPhone", - label: "Contact Phone", - excelHeader: "Contact Phone", - // group: "Basic Info", + label: "전화번호", + excelHeader: "전화번호", + group: "Vendor 추가정보", }, { - id: "country", - label: "Country", - excelHeader: "Country", - // group: "Basic Info", + id: "taxId", + label: "사업자등록번호", + excelHeader: "사업자등록번호", + group: "Vendor 추가정보", }, + { id: "source", - label: "Source", - excelHeader: "Source", - // group: "Basic Info", + label: "크롤링사이트(출처)", + excelHeader: "크롤링사이트(출처)", + group: "Vendor 추가정보", }, { - id: "status", - label: "Status", - excelHeader: "Status", - // group: "Basic Info", + id: "lastInvitationAt", + label: "Invitation 발송일", + excelHeader: "Invitation 발송일", + group: "Vendor 추가정보", + }, + { + id: "lastInvitationBy", + label: "Invitation 발송자", + excelHeader: "Invitation 발송자", + group: "Vendor 추가정보", + }, + { + id: "vendorName", + label: "Vendor 등록 사명", + excelHeader: "Vendor 등록 사명", + group: "Vendor 추가정보", + }, + { + id: "vendorCreatedAt", + label: "Vendor 등록일", + excelHeader: "Vendor 등록일", + group: "Vendor 추가정보", }, + { + id: "lastStatusChangeAt", + label: "Status 최종변경일", + excelHeader: "Status 최종변경일", + group: "Vendor 추가정보", + }, + { + id: "lastStatusChangeBy", + label: "Status 발송자", + excelHeader: "Status 최종변경자", + group: "Vendor 추가정보", + }, - { - id: "createdAt", - label: "Created At", - excelHeader: "Created At", - // group: "Metadata", + id: "remark", + label: "비고", + excelHeader: "비고", + group: "Vendor 추가정보", }, + + + { id: "updatedAt", label: "Updated At", excelHeader: "Updated At", - // group: "Metadata", + group: "Vendor 추가정보", }, ]
\ No newline at end of file diff --git a/config/faqDataConfig.ts b/config/faqDataConfig.ts index 0dbe8398..3b11cc7f 100644 --- a/config/faqDataConfig.ts +++ b/config/faqDataConfig.ts @@ -12,8 +12,8 @@ export const faqCategories: LocalizedFaqCategories = { { "title": "EVCP 시스템이란 무엇인가요?", "content": [ - "EVCP(Electric Vendor Control Platform)는 전자 조달 및 벤더 관리를 위한 B2B 플랫폼입니다.", - "조달/구매 프로세스 관리, 벤더 관리, 벤더 평가, RFQ 관리 등 구매 업무에 필요한 전반적인 기능을 제공합니다." + "EVCP(enterpise Vendor Co-work Platform)는 전사협력업체협업플랫폼을 의미합니다.", + "조달/구매 프로세스 관리, 협력업체 관리, RFQ, RFB, TBE, CBE 등 구매 업무에 필요한 전반적인 기능을 제공합니다." ] }, { @@ -21,7 +21,7 @@ export const faqCategories: LocalizedFaqCategories = { "content": [ "1. 브라우저 캐시 삭제 후 재시도", "2. 다른 브라우저로 접속 시도", - "3. 시스템 관리자에게 문의 (admin@evcp.com)" + "3. 시스템 관리자에게 문의 (e-vcp@samsung.com)" ] } ] @@ -35,7 +35,7 @@ export const faqCategories: LocalizedFaqCategories = { "1. 조달 요청서 작성 (품목, 수량, 납기일 등)", "2. 구매 담당자 검토 및 승인", "3. RFQ 프로세스 시작", - "4. 견적 평가 및 벤더 선정", + "4. 견적 평가 및 협력업체 선정", "5. 발주 및 계약 체결" ] }, @@ -44,7 +44,7 @@ export const faqCategories: LocalizedFaqCategories = { "content": [ "1. 구매 계획 수립", "2. 조달 요청 접수 및 검토", - "3. 벤더 선정 및 RFQ 진행", + "3. 협력업체 선정 및 RFQ 진행", "4. 가격/납기 협상", "5. 계약 체결 및 발주", "6. 납품 관리 및 검수" @@ -53,12 +53,12 @@ export const faqCategories: LocalizedFaqCategories = { ] }, { - "label": "벤더 관리", + "label": "협력업체 관리", "items": [ { - "title": "새로운 벤더를 등록하려면 어떻게 해야 하나요?", + "title": "새로운 협력업체를 등록하려면 어떻게 해야 하나요?", "content": [ - "1. 벤더 메뉴에서 '신규 벤더 등록' 버튼 클릭", + "1. 협력업체 메뉴에서 '신규 협력업체 등록' 버튼 클릭", "2. 필수 정보 입력 (사업자등록번호, 회사명, 연락처 등)", "3. 담당자 정보 등록", "4. 공급 가능 품목 및 주요 실적 등록", @@ -66,22 +66,22 @@ export const faqCategories: LocalizedFaqCategories = { ] }, { - "title": "벤더 관리에서 중요한 점은 무엇인가요?", + "title": "협력업체 관리에서 중요한 점은 무엇인가요?", "content": [ - "1. 벤더 기본 정보의 정확성 유지", + "1. 협력업체 기본 정보의 정확성 유지", "2. 공급 품목별 단가 관리", "3. 계약 현황 및 이력 관리", "4. 납품 실적 및 품질 이력 관리", - "5. 정기적인 벤더 평가 결과 반영" + "5. 정기적인 협력업체 평가 결과 반영" ] } ] }, { - "label": "벤더 평가", + "label": "협력업체 평가", "items": [ { - "title": "벤더 평가는 어떤 기준으로 진행되나요?", + "title": "협력업체 평가는 어떤 기준으로 진행되나요?", "content": [ "1. 품질 (불량률, 품질 관리 체계)", "2. 납기 준수율", @@ -92,9 +92,9 @@ export const faqCategories: LocalizedFaqCategories = { ] }, { - "title": "벤더 평가 결과는 어떻게 활용되나요?", + "title": "협력업체 평가 결과는 어떻게 활용되나요?", "content": [ - "1. 벤더 등급 조정 (A, B, C 등급)", + "1. 협력업체 등급 조정 (A, B, C 등급)", "2. 우선 협상 대상 선정", "3. 개선 필요 항목 피드백", "4. 계약 갱신 시 반영", @@ -118,7 +118,7 @@ export const faqCategories: LocalizedFaqCategories = { "title": "시스템 사용 권한은 어떻게 구분되나요?", "content": [ "1. 구매 담당자: 조달/구매 프로세스 전반 관리", - "2. 벤더 관리자: 벤더 정보 및 평가 관리", + "2. 협력업체 관리자: 협력업체 정보 및 평가 관리", "3. 승인권자: 주요 의사결정 승인", "4. 일반 사용자: 조달 요청 및 현황 조회", "5. 시스템 관리자: 전체 시스템 관리" diff --git a/config/formListsColumnsConfig.ts b/config/formListsColumnsConfig.ts index fc6aa28c..795db72f 100644 --- a/config/formListsColumnsConfig.ts +++ b/config/formListsColumnsConfig.ts @@ -46,6 +46,18 @@ export const formListsColumnsConfig: FormListsColumnConfig[] = [ excelHeader: "Class", // group: "Basic Info", }, + { + id: "ep", + label: "EP_ID", + excelHeader: "EP_ID", + // group: "Basic Info", + }, + { + id: "remark", + label: "Remark", + excelHeader: "Remark", + // group: "Basic Info", + }, { id: "createdAt", diff --git a/config/itemsColumnsConfig.ts b/config/itemsColumnsConfig.ts index f2b9a61b..8a161a37 100644 --- a/config/itemsColumnsConfig.ts +++ b/config/itemsColumnsConfig.ts @@ -11,20 +11,20 @@ export interface ItemColumnConfig { export const itemsColumnsConfig: ItemColumnConfig[] = [ { id: "itemCode", - label: "Item Code", - excelHeader: "Item Code", + label: "Material Group", + excelHeader: "Material Group", // group: "Basic Info", }, { id: "itemName", - label: "Item Name", - excelHeader: "Item Name", + label: "Description", + excelHeader: "Description", // group: "Basic Info", }, { id: "description", - label: "Description", - excelHeader: "Description", + label: "Size/Dimension", + excelHeader: "Size/Dimension", // group: "Basic Info", }, { diff --git a/config/menuConfig.ts b/config/menuConfig.ts index 17ca0e13..47ab12e6 100644 --- a/config/menuConfig.ts +++ b/config/menuConfig.ts @@ -20,9 +20,16 @@ export const mainNav: MenuSection[] = [ useGrouping: true, // 그룹핑 적용 items: [ { - title: "프로젝트 리스트", + title: "견적 프로젝트 리스트", + href: "/evcp/bid-projects", + description: "MDG에서 받은 견적 프로젝트 리스트(P)", + // icon: "Briefcase", + group: "기본 정보" + }, + { + title: "수행 프로젝트 리스트", href: "/evcp/projects", - description: "MDG에서 받은 프로젝트 리스트", + description: "MDG에서 받은 수행 프로젝트 리스트(C)", // icon: "Briefcase", group: "기본 정보" }, @@ -34,6 +41,20 @@ export const mainNav: MenuSection[] = [ group: "기본 정보" }, { + title: "업체 유형", + href: "/evcp/vendor-type", + description: "업체 유형", + // icon: "ListTodo", + group: "기본 정보" + }, + { + title: "기본계약서 템플릿 관리", + href: "/evcp/basic-contract-template", + description: "기본계약서를 비롯하여 각종 초기 문서 템플릿을 관리", + // icon: "ClipboardCheck", + group: "기본 정보" + }, + { title: "PQ(Pre-Qualification) 정보", href: "/evcp/pq-criteria", description: "PQ 항목 등을 관리", @@ -41,61 +62,71 @@ export const mainNav: MenuSection[] = [ group: "기본 정보" }, { - title: "Object Class", + title: "객체 클래스", href: "/evcp/equip-class", - description: "Equipment Class 리스트", + description: "객체 클래스 리스트", // icon: "Database", group: "기술 정보" }, { - title: "Tag Numbering", + title: "태그 타입", href: "/evcp/tag-numbering", description: "Tag Numbering을 위한 기준 정보", // icon: "Tag", group: "기술 정보" }, { - title: "Form 리스트", + title: "레지스터 목록", href: "/evcp/form-list", - description: "벤더 데이터 입력을 위한 Form 리스트 확인", + description: "협력업체 데이터 입력을 위한 Form 레지스터 목록 확인", // icon: "FileCheck", group: "기술 정보" }, ], }, { - title: "벤더 관리", + title: "협력업체 관리", items: [ { - title: "벤더 초청 관리", + title: "협력업체 초청 관리", href: "/evcp/vendor-candidates", description: "수집활동을 통해 발굴한 벤더를 등록하고 관리하며 초청할 수 있음", }, { - title: "벤더 리스트", + title: "협력업체 리스트", href: "/evcp/vendors", description: "업체에 대한 요약 정보를 출력", }, { - title: "벤더 실사", + title: "협력업체 실사", href: "/evcp/vendor-investigation", description: "실사가 필요한 벤더에 대한 일정 및 실사 내용 관리", }, { - title: "벤더 평가 기준 설정", + title: "협력업체 평가 기준 설정", href: "/evcp/evaluationmetrics", description: "품질, 납기, 가격 경쟁력, AS 대응력 설정", }, { - title: "벤더 정기 평가", + title: "협력업체 정기 평가", href: "/evcp/evaluation", - description: "벤더 평가를 실행", + description: "협력업체 평가를 실행", }, { - title: "벤더 Prequalification", + title: "협력업체 Prequalification", href: "/evcp/pq", description: "벤더의 제출 PQ를 확인하고 통과 여부를 결정", }, + { + title: "협력업체 기본 계약 관리", + href: "/evcp/basic-contract", + description: "기본 계약 현황을 확인", + }, + { + title: "프로젝트 AVL", + href: "/evcp/project-vendors", + description: "프로젝트 PQ에 따른 AVL 리스트", + }, ], }, { @@ -114,7 +145,7 @@ export const mainNav: MenuSection[] = [ { title: "상업(가격) 평가 (CBE) - Budgetary Quote", href: "/evcp/bqcbe", - description: "가격(네고), 납기, 계약조건(Incoterms 등) 종합 검토/CBE Report 작성", + description: "가격(네고), 납기, 계약조건(Incoterms 등) 종합 검토", }, ] }, @@ -153,7 +184,7 @@ export const mainNav: MenuSection[] = [ { title: "상업(가격) 평가 (CBE)", href: "/evcp/cbe", - description: "가격(네고), 납기, 계약조건(Incoterms 등) 종합 검토/CBE Report 작성", + description: "가격(네고), 납기, 계약조건(Incoterms 등) 종합 검토", // icon: "DollarSign", group: "평가 관리" }, @@ -219,6 +250,11 @@ export const mainNavVendor: MenuSection[] = [ title: "구매 관리", items: [ { + title: "기본 계약 서명", + href: `/partners/basic-contract`, + description: "기본 계약서 및 관련 문서에 대한 서명", + }, + { title: "RFQ", href: `/partners/rfq`, description: "견적 요청에 대한 응답 작성", @@ -234,6 +270,11 @@ export const mainNavVendor: MenuSection[] = [ description: "TBE 요청에 대한 응답 작성", }, { + title: "CBE", + href: `/partners/cbe`, + description: "CBE 요청에 대한 응답 작성", + }, + { title: "PO", href: `/partners/po`, description: "발주 리스트 확인 및 전자서명", @@ -251,12 +292,12 @@ export const mainNavVendor: MenuSection[] = [ { title: "데이터 입력", href: `/partners/vendor-data`, - description: "기준 정보에 입각한 벤더 데이터 입력", + description: "기준 정보에 입각한 협력업체 데이터 입력", }, { title: "데이터 리스트", href: `/partners/vendor-data-list`, - description: "입력된 벤더 데이터를 도서/문서와 연계하여 리스트하여 출력", + description: "입력된 협력업체 데이터를 도서/문서와 연계하여 리스트하여 출력", }, { title: "문서/도서 리스트", diff --git a/config/projectAVLColumnsConfig.ts b/config/projectAVLColumnsConfig.ts new file mode 100644 index 00000000..3f927c35 --- /dev/null +++ b/config/projectAVLColumnsConfig.ts @@ -0,0 +1,78 @@ +import { ProjectApprovedVendors } from "@/db/schema" + + +export interface ProjectAVLColumnConfig { + id: keyof ProjectApprovedVendors + label: string + group?: string + excelHeader?: string + type?: string +} + +export const projectAVLColumnsConfig: ProjectAVLColumnConfig[] = [ + // Basic Info + { + id: "vendor_code", + label: "업체 코드", + excelHeader: "업체 코드", + // group: "발굴정보", + }, + { + id: "vendor_name", + label: "업체명", + excelHeader: "업체명", + // group: "Basic Info", + }, + + { + id: "tax_id", + label: "사업자등록번호", + excelHeader: "사업자등록번호", + // group: "발굴정보", + }, + { + id: "vendor_type_name_ko", + label: "업체유형", + excelHeader: "업체유형", + // group: "Vendor 추가정보", + }, + { + id: "vendor_phone", + label: "대표전화번호", + excelHeader: "대표전화번호", + // group: "발굴정보", + }, + { + id: "vendor_email", + label: "대표이메일", + excelHeader: "대표이메일", + // group: "Vendor 추가정보", + }, + + { + id: "project_code", + label: "프로젝트 코드", + excelHeader: "프로젝트 코드", + // group: "Vendor 추가정보", + }, + { + id: "project_name", + label: "프로젝트명", + excelHeader: "프로젝트명", + // group: "Vendor 추가정보", + }, + + { + id: "submitted_at", + label: "PQ 제출일", + excelHeader: "PQ 제출일", + // group: "Vendor 추가정보", + }, + + { + id: "approved_at", + label: "PQ 승인일", + excelHeader: "PQ 승인일", + // group: "Vendor 추가정보", + }, +]
\ No newline at end of file diff --git a/config/vendorCbeColumnsConfig.ts b/config/vendorCbeColumnsConfig.ts index 2d521125..9fc50317 100644 --- a/config/vendorCbeColumnsConfig.ts +++ b/config/vendorCbeColumnsConfig.ts @@ -1,71 +1,74 @@ export interface VendorWithCbeFields { - /** 기존 row.id (vendor pk 등) */ - id: number | null + /** 주요 식별 정보 */ + 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 + - /** vendorId 별도 관리 */ - vendorId: number - rfqId: number | null - - /** Vendor 기본정보 */ - vendorName: string - vendorCode: string | null - address: string | null - country: string | null - email: string | null - website: string | null - vendorStatus: string | null - - /** RFQ 별 Vendor 응답상태 */ - rfqVendorStatus: string | null - rfqVendorUpdated: Date | null - - /** RFQ 관련 정보 */ - rfqCode: string | null - projectCode: string | null - projectName: string | null - description: string | null - dueDate: Date | null - - /** CBE 평가 관련 필드들 */ - cbeId: number | null - cbeResult: string | null - cbeNote: string | null - cbeUpdated: Date | null - - /** 상업평가 시에 필요한 추가 정보(예: 총액/통화/조건 등) */ - totalCost: number | null - currency: string | null - paymentTerms: string | null - incoterms: string | null - deliverySchedule: string | null - - /** 추가로 원하는 필드들 (예: CBE 템플릿 파일 수, 응답 여부) */ - templateFileCount?: number - hasResponse?: boolean - - /** 댓글 목록 */ - comments: Array<{ - id: number - commentText: string - vendorId?: number - evaluationId?: number - createdAt?: Date - commentedBy?: number - }> - - /** 첨부파일 목록 */ - files: Array<{ - id: number - fileName: string - filePath?: string - vendorId?: number - evaluationId?: number - createdAt?: Date - uploadedAt?: Date - }> + /** 첨부파일 개수 */ + 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)의 어느 필드를 표시할지 @@ -86,71 +89,174 @@ export interface VendorCbeColumnConfig { } export const vendorCbeColumnsConfig: VendorCbeColumnConfig[] = [ - { - id: "vendorName", - label: "Vendor Name", - excelHeader: "Vendor Name", - }, - { - id: "vendorCode", - label: "Vendor Code", - excelHeader: "Vendor Code", - }, - { - id: "email", - label: "Email", - excelHeader: "Email", - }, - { - id: "rfqVendorStatus", - label: "RFQ Status", - excelHeader: "RFQ Status", - }, - // CBE 평가 관련 (group: "CBE Info") - { - id: "cbeResult", - label: "Result", - excelHeader: "CBE Result", - group: "CBE Info", - }, - { - id: "cbeNote", - label: "Note", - excelHeader: "CBE Note", - group: "CBE Info", - }, - { - id: "cbeUpdated", - label: "Updated At", - excelHeader: "CBE Updated At", - group: "CBE Info", - type: "date", - }, - // 필요 시 상업평가 추가 필드도 넣기 - { - id: "totalCost", - label: "Total Cost", - excelHeader: "Total Cost", - group: "CBE Info", - type: "number", - }, - { - id: "currency", - label: "Currency", - excelHeader: "Currency", - group: "CBE Info", - }, - { - id: "paymentTerms", - label: "Payment Terms", - excelHeader: "Payment Terms", - group: "CBE Info", - }, - { - id: "incoterms", - label: "Incoterms", - excelHeader: "Incoterms", - group: "CBE Info", - }, - // ... - ]
\ No newline at end of file + { + 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", + }, + + +]
\ No newline at end of file diff --git a/config/vendorColumnsConfig.ts b/config/vendorColumnsConfig.ts index f35ea0cb..392a56f0 100644 --- a/config/vendorColumnsConfig.ts +++ b/config/vendorColumnsConfig.ts @@ -1,4 +1,4 @@ -import { Vendor } from "@/db/schema/vendors"; +import { VendorWithType } from "@/db/schema/vendors"; /** * 테이블/엑셀에 보여줄 컬럼 한 칸을 어떻게 렌더링할지 결정하는 설정 @@ -7,7 +7,7 @@ export interface VendorColumnConfig { /** * "조인 결과" 객체(UserWithCompanyAndRoles)의 어느 필드를 표시할지 */ - id: keyof Vendor; + id: keyof VendorWithType; /** 화면·엑셀에서 보여줄 컬럼명 */ label: string; @@ -28,43 +28,72 @@ export interface VendorColumnConfig { */ export const vendorColumnsConfig: VendorColumnConfig[] = [ { + id: "vendorCode", + label: "업체 코드", + excelHeader: "업체 코드", + }, + + { id: "vendorName", - label: "Vendor Name", - excelHeader: "Vendor Name", + label: "업체명", + excelHeader: "업체명", }, + { - id: "vendorCode", - label: "Vendor Code", - excelHeader: "Vendor Code", + id: "vendorTypeName", + label: "업체 유형", + excelHeader: "업체 유형", + // group: "업체 정보", + type: "string", + }, + + // 업체 분류 컬럼 추가 (원하는 경우) + { + id: "vendorCategory", + label: "업체 분류", + excelHeader: "업체 분류", + // group: "업체 정보", + type: "string", }, { id: "address", - label: "address", - excelHeader: "address", + label: "주소", + excelHeader: "주소", }, { id: "country", - label: "country", - excelHeader: "country", + label: "국가", + excelHeader: "국가", // type: "string[]", // 필요하면 추가 }, // 필요 시 createdAt도 조인해서 가져왔다면 아래처럼 추가 { id: "email", - label: "email", - excelHeader: "email", + label: "이메일", + excelHeader: "이메일", // group: "Metadata", }, { id: "website", - label: "website", - excelHeader: "website", + label: "웹사이트", + excelHeader: "웹사이트", + // group: "Metadata", + }, { + id: "creditRating", + label: "신용평가등급", + excelHeader: "신용평가등급", + // group: "Metadata", + }, + { + id: "cashFlowRating", + label: "현금흐름등급", + excelHeader: "웹사이트", // group: "Metadata", }, { id: "status", - label: "status", - excelHeader: "status", + label: "업체 승인 상태", + excelHeader: "업체 승인 상태", // group: "Metadata", }, ];
\ No newline at end of file diff --git a/config/vendorInvestigationsColumnsConfig.ts b/config/vendorInvestigationsColumnsConfig.ts index 3d9a9825..14fe77c1 100644 --- a/config/vendorInvestigationsColumnsConfig.ts +++ b/config/vendorInvestigationsColumnsConfig.ts @@ -19,6 +19,7 @@ export type PossibleItem = { id: number vendorId: number itemCode: string + itemName: string createdAt: Date updatedAt: Date } diff --git a/config/vendorItemsColumnsConfig.ts b/config/vendorItemsColumnsConfig.ts index 75a85f5c..369c75b1 100644 --- a/config/vendorItemsColumnsConfig.ts +++ b/config/vendorItemsColumnsConfig.ts @@ -23,22 +23,22 @@ export interface VendorColumnConfig { export const vendorItemsColumnsConfig: VendorColumnConfig[] = [ { id: "itemCode", - label: "Item Code", - excelHeader: "Item Code", + label: "Material Group", + excelHeader: "Material Group", minWidth: 80, paddingFactor: 1.2, }, { id: "itemName", - label: "Item Name", - excelHeader: "Item Name", + label: "Description", + excelHeader: "Description", minWidth: 120, paddingFactor: 1.5, }, { id: "description", - label: "Description", - excelHeader: "Description", + label: "Size/Dimension", + excelHeader: "Size/Dimension", minWidth: 150, paddingFactor: 2.0, // More padding for descriptions }, diff --git a/config/vendorRfbColumnsConfig.ts b/config/vendorRfbColumnsConfig.ts index 8b9a33c8..92acd178 100644 --- a/config/vendorRfbColumnsConfig.ts +++ b/config/vendorRfbColumnsConfig.ts @@ -66,11 +66,11 @@ export const vendorRfqColumnsConfig: VendorRfqColumnConfig[] = [ }, - { - id: "email", - label: "Email", - excelHeader: "Email", - }, + // { + // id: "email", + // label: "Email", + // excelHeader: "Email", + // }, { id: "vendorStatus", diff --git a/config/vendorTbeColumnsConfig.ts b/config/vendorTbeColumnsConfig.ts index b9094786..4d8755d7 100644 --- a/config/vendorTbeColumnsConfig.ts +++ b/config/vendorTbeColumnsConfig.ts @@ -19,6 +19,10 @@ export interface VendorWithTbeFields { rfqVendorUpdated: Date | null rfqCode: string | null + // rfqDescription: string | null + // rfqType: string | null + // rfqStatus: string | null + // rfqDueDate: Date | null projectCode: string | null projectName: string | null description: string | null @@ -30,6 +34,8 @@ export interface VendorWithTbeFields { tbeId: number | null + technicalResponseStatus:string | null + templateFileCount?: number; // TBE 템플릿 파일 수 hasResponse?: boolean; // TBE 응답 파일 제출 여부 @@ -77,6 +83,10 @@ export interface TbeVendorFields { rfqVendorUpdated: Date | null rfqCode: string | null + rfqDescription: string | null + rfqType: string | null + rfqStatus: string | null + rfqDueDate: Date | null projectCode: string | null projectName: string | null description: string | null @@ -132,6 +142,11 @@ export interface VendorTbeColumnConfig { */ export const vendorTbeColumnsConfig: VendorTbeColumnConfig[] = [ { + id: "projectCode", + label: "Project Code", + excelHeader:"Project Code", + }, + { id: "rfqCode", label: "RFQ Code", excelHeader:"RFQ Code", @@ -141,30 +156,36 @@ export const vendorTbeColumnsConfig: VendorTbeColumnConfig[] = [ label: "Vendor Name", excelHeader: "Vendor Name", }, - { - id: "vendorCode", - label: "Vendor Code", - excelHeader: "Vendor Code", - }, + // { + // id: "vendorCode", + // label: "Vendor Code", + // excelHeader: "Vendor Code", + // }, - { - id: "email", - label: "Email", - excelHeader: "Email", - }, + // { + // id: "email", + // label: "Email", + // excelHeader: "Email", + // }, // { // id: "vendorStatus", // label: "Vendor Status", // excelHeader: "Vendor Status", // }, + // { + // id: "rfqVendorStatus", + // label: "RFQ Status", + // excelHeader: "RFQ Status", + // }, + // 새로 추가 (rfq_vendors join 필드) { - id: "rfqVendorStatus", - label: "RFQ Status", - excelHeader: "RFQ Status", + id: "technicalResponseStatus", + label: "Status", + excelHeader: "Status", + group: "TBE Info", }, - // 새로 추가 (rfq_vendors join 필드) { id: "tbeResult", label: "Result", |
