diff options
Diffstat (limited to 'db')
| -rw-r--r-- | db/schema/avl/vendor-pool.ts | 67 |
1 files changed, 33 insertions, 34 deletions
diff --git a/db/schema/avl/vendor-pool.ts b/db/schema/avl/vendor-pool.ts index 9f2cdd1a..53e09f34 100644 --- a/db/schema/avl/vendor-pool.ts +++ b/db/schema/avl/vendor-pool.ts @@ -1,4 +1,4 @@ -import { pgTable, text, boolean, integer, timestamp, varchar, uniqueIndex } from "drizzle-orm/pg-core"; +import { pgTable, boolean, integer, timestamp, varchar, uniqueIndex } from "drizzle-orm/pg-core"; import { sql } from 'drizzle-orm'; import { createInsertSchema, createSelectSchema } from "drizzle-zod"; @@ -13,22 +13,21 @@ export const vendorPool = pgTable("vendor_pool", { htDivision: varchar("ht_division", { length: 10 }).notNull(), // H 또는 T 또는 공통 // 설계 정보 - designCategoryCode: varchar("design_category_code", { length: 2 }).notNull(), // 2자리 영문대문자 - designCategory: varchar("design_category", { length: 50 }).notNull(), // 전장 등 + discipline: varchar("discipline", { length: 50 }), // 설계공종 (ARCHITECTURE 등) equipBulkDivision: varchar("equip_bulk_division", { length: 1 }), // E 또는 B // 패키지 정보 - packageCode: varchar("package_code", { length: 50 }), // 패키지 코드 - packageName: varchar("package_name", { length: 100 }), // 패키지 명 + // 삭제! packageCode: varchar("package_code", { length: 50 }), // 패키지 코드 + // 삭제! packageName: varchar("package_name", { length: 100 }), // 패키지 명 // 자재그룹 정보 materialGroupCode: varchar("material_group_code", { length: 50 }), // 자재그룹 코드 materialGroupName: varchar("material_group_name", { length: 100 }), // 자재그룹 명 // 자재 관련 정보 - smCode: varchar("sm_code", { length: 50 }), + // 삭제! smCode: varchar("sm_code", { length: 50 }), similarMaterialNamePurchase: varchar("similar_material_name_purchase", { length: 100 }), // 유사자재명 (구매) - similarMaterialNameOther: varchar("similar_material_name_other", { length: 100 }), // 유사자재명 (구매 외) + // 삭제! similarMaterialNameOther: varchar("similar_material_name_other", { length: 100 }), // 유사자재명 (구매 외) // 협력업체 정보 vendorCode: varchar("vendor_code", { length: 50 }), // 협력업체 코드 @@ -38,13 +37,13 @@ export const vendorPool = pgTable("vendor_pool", { taxId: varchar("tax_id", { length: 50 }), // 사업자번호 faTarget: boolean("fa_target").default(false), // FA대상 faStatus: varchar("fa_status", { length: 50 }), // FA현황 - faRemark: varchar("fa_remark", { length: 200 }), // FA상세 + // faRemark: varchar("fa_remark", { length: 200 }), // FA상세 tier: varchar("tier", { length: 20 }), // 등급 - isAgent: boolean("is_agent").default(false), // Agent 여부 + // 삭제! isAgent: boolean("is_agent").default(false), // Agent 여부 // 계약 정보 - contractSignerCode: varchar("contract_signer_code", { length: 50 }), // 계약서명주체 코드 - contractSignerName: varchar("contract_signer_name", { length: 100 }), // 계약서명주체 명 + // 삭제! contractSignerCode: varchar("contract_signer_code", { length: 50 }), // 계약서명주체 코드 + // 삭제! contractSignerName: varchar("contract_signer_name", { length: 100 }), // 계약서명주체 명 // 위치 정보 headquarterLocation: varchar("headquarter_location", { length: 50 }), // 본사 위치 (국가) @@ -53,7 +52,7 @@ export const vendorPool = pgTable("vendor_pool", { // AVL 관련 정보 avlVendorName: varchar("avl_vendor_name", { length: 100 }), // AVL 등재업체명 similarVendorName: varchar("similar_vendor_name", { length: 100 }), // 유사업체명(기술영업) - hasAvl: boolean("has_avl").default(false), // AVL 존재여부 + // 삭제! hasAvl: boolean("has_avl").default(false), // AVL 존재여부 // 상태 정보 isBlacklist: boolean("is_blacklist").default(false), // Blacklist @@ -61,29 +60,29 @@ export const vendorPool = pgTable("vendor_pool", { purchaseOpinion: varchar("purchase_opinion", { length: 500 }), // 구매의견 // AVL 적용 선종(조선) - shipTypeCommon: boolean("ship_type_common").default(false), // 공통 - shipTypeAmax: boolean("ship_type_amax").default(false), // A-max - shipTypeSmax: boolean("ship_type_smax").default(false), // S-max - shipTypeVlcc: boolean("ship_type_vlcc").default(false), // VLCC - shipTypeLngc: boolean("ship_type_lngc").default(false), // LNGC - shipTypeCont: boolean("ship_type_cont").default(false), // CONT + // 삭제! shipTypeCommon: boolean("ship_type_common").default(false), // 공통 + // 삭제! shipTypeAmax: boolean("ship_type_amax").default(false), // A-max + // 삭제! shipTypeSmax: boolean("ship_type_smax").default(false), // S-max + // 삭제! shipTypeVlcc: boolean("ship_type_vlcc").default(false), // VLCC + // 삭제! shipTypeLngc: boolean("ship_type_lngc").default(false), // LNGC + // 삭제! shipTypeCont: boolean("ship_type_cont").default(false), // CONT // AVL 적용 선종(해양) - offshoreTypeCommon: boolean("offshore_type_common").default(false), // 공통 - offshoreTypeFpso: boolean("offshore_type_fpso").default(false), // FPSO - offshoreTypeFlng: boolean("offshore_type_flng").default(false), // FLNG - offshoreTypeFpu: boolean("offshore_type_fpu").default(false), // FPU - offshoreTypePlatform: boolean("offshore_type_platform").default(false), // Platform - offshoreTypeWtiv: boolean("offshore_type_wtiv").default(false), // WTIV - offshoreTypeGom: boolean("offshore_type_gom").default(false), // GOM + // 삭제! offshoreTypeCommon: boolean("offshore_type_common").default(false), // 공통 + // 삭제! offshoreTypeFpso: boolean("offshore_type_fpso").default(false), // FPSO + // 삭제! offshoreTypeFlng: boolean("offshore_type_flng").default(false), // FLNG + // 삭제! offshoreTypeFpu: boolean("offshore_type_fpu").default(false), // FPU + // 삭제! offshoreTypePlatform: boolean("offshore_type_platform").default(false), // Platform + // 삭제! offshoreTypeWtiv: boolean("offshore_type_wtiv").default(false), // WTIV + // 삭제! offshoreTypeGom: boolean("offshore_type_gom").default(false), // GOM // eVCP 미등록 정보 - picName: varchar("pic_name", { length: 50 }), // PIC(담당자) - picEmail: varchar("pic_email", { length: 100 }), // PIC(E-mail) - picPhone: varchar("pic_phone", { length: 20 }), // PIC(Phone) - agentName: varchar("agent_name", { length: 50 }), // Agent(담당자) - agentEmail: varchar("agent_email", { length: 100 }), // Agent(E-mail) - agentPhone: varchar("agent_phone", { length: 20 }), // Agent(Phone) + // 삭제! picName: varchar("pic_name", { length: 50 }), // PIC(담당자) + // 삭제! picEmail: varchar("pic_email", { length: 100 }), // PIC(E-mail) + // 삭제! picPhone: varchar("pic_phone", { length: 20 }), // PIC(Phone) + // 삭제! agentName: varchar("agent_name", { length: 50 }), // Agent(담당자) + // 삭제! agentEmail: varchar("agent_email", { length: 100 }), // Agent(E-mail) + // 삭제! agentPhone: varchar("agent_phone", { length: 20 }), // Agent(Phone) // 업체 실적 현황 recentQuoteDate: varchar("recent_quote_date", { length: 10 }), // 최근견적일 (YYYY-MM-DD) @@ -98,10 +97,10 @@ export const vendorPool = pgTable("vendor_pool", { lastModifier: varchar("last_modifier", { length: 50 }), // 최종변경자 }, (table) => ({ - // 새로운 unique 제약조건: 공사부문 + H/T + 자재그룹코드 + 협력업체명 + // 새로운 unique 제약조건: 공사부문 + H/T + 설계공종 + 자재그룹코드 + 협력업체명 uniqueVendorPoolCombination: uniqueIndex("unique_vendor_pool_combination") - .on(table.constructionSector, table.htDivision, table.materialGroupCode, table.vendorName) - .where(sql`${table.materialGroupCode} IS NOT NULL AND ${table.vendorName} IS NOT NULL`) + .on(table.constructionSector, table.htDivision, table.discipline, table.materialGroupCode, table.vendorName) + .where(sql`${table.discipline} IS NOT NULL AND ${table.materialGroupCode} IS NOT NULL AND ${table.vendorName} IS NOT NULL`) })); // 복합키 인덱스 (자재그룹코드 + 벤더코드) |
