diff options
| author | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-06-05 01:53:35 +0000 |
|---|---|---|
| committer | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-06-05 01:53:35 +0000 |
| commit | 610d3bccf1cb640e2a21df28d8d2a954c2bf337e (patch) | |
| tree | e7e6d72fecf14ddcff1b5b52263d14119b7c488c /db/schema/vendorDocu.ts | |
| parent | 15969dfedffc4e215c81d507164bc2bb383974e5 (diff) | |
(대표님) 변경사항 0604 - OCR 관련 및 drizzle generated sqls
Diffstat (limited to 'db/schema/vendorDocu.ts')
| -rw-r--r-- | db/schema/vendorDocu.ts | 48 |
1 files changed, 46 insertions, 2 deletions
diff --git a/db/schema/vendorDocu.ts b/db/schema/vendorDocu.ts index 8c144f35..ebae7630 100644 --- a/db/schema/vendorDocu.ts +++ b/db/schema/vendorDocu.ts @@ -15,14 +15,47 @@ export const documents = pgTable( contractId: integer("contract_id") .notNull() .references(() => contracts.id, { onDelete: "cascade" }), + + // 기본 문서 정보 docNumber: varchar("doc_number", { length: 100 }).notNull(), - // ✅ 벤더용 문서 번호 추가 (옵셔널) vendorDocNumber: varchar("vendor_doc_number", { length: 100 }), title: varchar("title", { length: 255 }).notNull(), status: varchar("status", { length: 50 }) .notNull() .default("ACTIVE"), issuedDate: date("issued_date"), + + // ✅ DOLCE 연동을 위한 새로운 필드들 + drawingKind: varchar("drawing_kind", { length: 10 }), // B3, B4, B5 + drawingMoveGbn: varchar("drawing_move_gbn", { length: 50 }), // 도면입수, 도면제출, GTT Deliverable, SHI Input Information + discipline: varchar("discipline", { length: 10 }), // DE, ME, etc. + + // ✅ 외부 시스템 연동 정보 + externalDocumentId: varchar("external_document_id", { length: 100 }), // DOLCE 시스템의 문서 ID + externalSystemType: varchar("external_system_type", { length: 20 }), // DOLCE, SWP + externalSyncedAt: timestamp("external_synced_at"), // 마지막 동기화 시간 + + // ✅ B4 전용 필드들 (drawingKind가 B4일 때만 사용) + cGbn: varchar("c_gbn", { length: 50 }), // CGbn + dGbn: varchar("d_gbn", { length: 50 }), // DGbn + degreeGbn: varchar("degree_gbn", { length: 50 }), // DegreeGbn + deptGbn: varchar("dept_gbn", { length: 50 }), // DeptGbn + jGbn: varchar("j_gbn", { length: 50 }), // JGbn + sGbn: varchar("s_gbn", { length: 50 }), // SGbn + + // ✅ DOLCE 응답의 추가 정보들 + shiDrawingNo: varchar("shi_drawing_no", { length: 100 }), // SHI 도면 번호 + manager: varchar("manager", { length: 100 }), // 담당자 + managerENM: varchar("manager_enm", { length: 100 }), // 담당자 영문명 + managerNo: varchar("manager_no", { length: 50 }), // 담당자 번호 + registerGroup: integer("register_group"), // 등록 그룹 + registerGroupId: integer("register_group_id"), // 등록 그룹 ID + + // ✅ 생성자 정보 (DOLCE에서 가져온 정보) + createUserNo: varchar("create_user_no", { length: 50 }), // 생성자 번호 + createUserId: varchar("create_user_id", { length: 100 }), // 생성자 ID (한글명) + createUserENM: varchar("create_user_enm", { length: 100 }), // 생성자 영문명 + createdAt: timestamp("created_at").defaultNow().notNull(), updatedAt: timestamp("updated_at").defaultNow().notNull(), }, @@ -33,14 +66,24 @@ export const documents = pgTable( table.docNumber, table.status ), - // ✅ 벤더 문서 번호가 있는 경우 유니크 제약 조건 (옵셔널이므로 별도 인덱스) uniqueContractVendorDoc: uniqueIndex("unique_contract_vendor_doc").on( table.contractId, table.vendorDocNumber ).where(sql`${table.vendorDocNumber} IS NOT NULL`), + + // ✅ 외부 시스템 문서 ID 유니크 인덱스 + uniqueExternalDoc: uniqueIndex("unique_external_doc").on( + table.contractId, + table.externalDocumentId, + table.externalSystemType + ).where(sql`${table.externalDocumentId} IS NOT NULL`), + + // ✅ drawingKind 인덱스 (자주 검색될 것 같음) + drawingKindIndex: index("drawing_kind_idx").on(table.drawingKind), } } ) + // 확장된 issueStages 테이블 export const issueStages = pgTable( "issue_stages", @@ -115,6 +158,7 @@ export const revisions = pgTable( reviewerId: integer("reviewer_id"), reviewerName: varchar("reviewer_name", { length: 100 }), reviewComments: varchar("review_comments", { length: 1000 }), + externalUploadId: varchar("external_upload_id", { length: 255 }), comment: varchar("comment", { length: 500 }), createdAt: timestamp("created_at").defaultNow().notNull(), |
