summaryrefslogtreecommitdiff
path: root/config
diff options
context:
space:
mode:
Diffstat (limited to 'config')
-rw-r--r--config/VendorTypesColumnsConfig.ts37
-rw-r--r--config/basicContractColumnsConfig.ts211
-rw-r--r--config/bidProjectsColumnsConfig.ts122
-rw-r--r--config/candidatesColumnsConfig.ts122
-rw-r--r--config/faqDataConfig.ts32
-rw-r--r--config/formListsColumnsConfig.ts12
-rw-r--r--config/itemsColumnsConfig.ts12
-rw-r--r--config/menuConfig.ts79
-rw-r--r--config/projectAVLColumnsConfig.ts78
-rw-r--r--config/vendorCbeColumnsConfig.ts370
-rw-r--r--config/vendorColumnsConfig.ts63
-rw-r--r--config/vendorInvestigationsColumnsConfig.ts1
-rw-r--r--config/vendorItemsColumnsConfig.ts12
-rw-r--r--config/vendorRfbColumnsConfig.ts10
-rw-r--r--config/vendorTbeColumnsConfig.ts49
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",