diff options
36 files changed, 56105 insertions, 1841 deletions
diff --git a/app/[lng]/evcp/(evcp)/vendors/[id]/info/basic/basic-info-client.tsx b/app/[lng]/evcp/(evcp)/vendors/[id]/info/basic/basic-info-client.tsx index 536bed95..78d21719 100644 --- a/app/[lng]/evcp/(evcp)/vendors/[id]/info/basic/basic-info-client.tsx +++ b/app/[lng]/evcp/(evcp)/vendors/[id]/info/basic/basic-info-client.tsx @@ -478,8 +478,29 @@ export default function BasicInfoClient({ }; // 추가정보 조회 핸들러 - const handleAdditionalInfoView = () => { - setAdditionalInfoDialogOpen(true); + const handleAdditionalInfoView = async () => { + try { + const result = await fetchVendorRegistrationStatus(parseInt(vendorId)); + if (!result.success || !result.data) { + toast.info("추가정보가 없습니다."); + return; + } + + // 추가정보가 있는지 확인 (업무담당자 또는 추가정보 데이터가 있는지 체크) + const { businessContacts, additionalInfo } = result.data; + const hasBusinessContacts = businessContacts && businessContacts.length > 0; + const hasAdditionalInfo = additionalInfo && Object.keys(additionalInfo).length > 0; + + if (!hasBusinessContacts && !hasAdditionalInfo) { + toast.info("추가정보가 없습니다."); + return; + } + + setAdditionalInfoDialogOpen(true); + } catch (error) { + console.error("추가정보 조회 오류:", error); + toast.error("추가정보를 불러오는데 실패했습니다."); + } }; // 첨부파일 및 평가 정보 로드 diff --git a/app/globals.css b/app/globals.css index a4ee4734..dba67fc8 100644 --- a/app/globals.css +++ b/app/globals.css @@ -250,3 +250,4 @@ th[data-read-only="true"] { border-left: 2px solid #cbd5e1; border-right: 2px solid #cbd5e1; } + diff --git a/components/additional-info/join-form.tsx b/components/additional-info/join-form.tsx index 90effddb..4f3998e3 100644 --- a/components/additional-info/join-form.tsx +++ b/components/additional-info/join-form.tsx @@ -755,6 +755,113 @@ export function InfoForm() { <Separator /> + {/* 서명/직인 등록 섹션 - 독립적으로 사용 가능 */} + <Card> + <CardHeader> + <CardTitle className="flex items-center gap-2"> + <CheckCircle className="w-5 h-5" /> + 회사 서명/직인 등록 (선택사항) + </CardTitle> + <CardDescription> + 회사의 공식 서명이나 직인을 등록하여 계약서 및 공식 문서에 사용할 수 있습니다. + </CardDescription> + </CardHeader> + <CardContent className="space-y-4"> + {/* 현재 등록된 서명/직인 파일 표시 (한 개만) */} + {(existingSignatureFiles.length > 0 || signatureFiles.length > 0) && ( + <div className="space-y-2"> + <div className="flex items-center gap-2 p-2 border rounded-lg bg-green-50"> + <CheckCircle className="w-4 h-4 text-green-600" /> + <span className="text-sm text-green-800">서명/직인 등록됨</span> + </div> + + {/* 기존 등록된 서명/직인 (첫 번째만 표시) */} + {existingSignatureFiles.length > 0 && signatureFiles.length === 0 && ( + <div className="p-2 border rounded-lg"> + {(() => { + const file = existingSignatureFiles[0]; + const fileInfo = getFileInfo(file.fileName); + return ( + <div className="flex items-center gap-2"> + <FileListIcon /> + <div className="flex-1"> + <div className="text-xs font-medium">{fileInfo.icon} {file.fileName}</div> + <div className="text-xs text-muted-foreground"> + {getAttachmentTypeLabel(file.attachmentType)} | {file.fileSize ? formatFileSize(file.fileSize) : '크기 정보 없음'} + </div> + </div> + <div className="flex items-center space-x-1"> + <FileListAction + onClick={() => handleDownloadFile(file)} + disabled={isDownloading} + > + {isDownloading ? <Loader2 className="h-3 w-3 animate-spin" /> : <Download className="h-3 w-3" />} + </FileListAction> + <FileListAction onClick={() => handleDeleteExistingFile(file.id)}> + <X className="h-3 w-3" /> + </FileListAction> + </div> + </div> + ); + })()} + </div> + )} + + {/* 새로 업로드된 서명/직인 */} + {signatureFiles.length > 0 && ( + <div className="p-2 border rounded-lg bg-blue-50"> + {(() => { + const file = signatureFiles[0]; + return ( + <div className="flex items-center gap-2"> + <FileListIcon /> + <div className="flex-1"> + <div className="text-xs font-medium">{file.name}</div> + <div className="text-xs text-muted-foreground"> + 서명/직인 (새 파일) | {prettyBytes(file.size)} + </div> + </div> + <FileListAction onClick={removeSignatureFile}> + <X className="h-3 w-3" /> + </FileListAction> + </div> + ); + })()} + </div> + )} + </div> + )} + + {/* 서명/직인 업로드 드롭존 */} + <Dropzone + maxSize={MAX_FILE_SIZE} + onDropAccepted={handleSignatureDropAccepted} + onDropRejected={handleSignatureDropRejected} + disabled={isSubmitting} + > + {({ maxSize }) => ( + <DropzoneZone className="flex justify-center min-h-[50px]"> + <DropzoneInput /> + <div className="flex items-center gap-2"> + <Upload className="w-4 h-4" /> + <div className="text-sm"> + <DropzoneTitle> + {existingSignatureFiles.length > 0 || signatureFiles.length > 0 + ? "서명/직인 교체" + : "서명/직인 업로드" + } + </DropzoneTitle> + <DropzoneDescription> + 한 개 파일만 업로드 가능 {maxSize ? ` | 최대: ${prettyBytes(maxSize)}` : ""} + </DropzoneDescription> + </div> + </div> + </DropzoneZone> + )} + </Dropzone> + </CardContent> + </Card> + {/* 정규업체 등록 현황 섹션 */} {registrationData ? ( <Card> @@ -781,104 +888,6 @@ export function InfoForm() { </div> )} - {/* 서명/직인 등록 */} - <div className="space-y-2"> - <h4 className="font-medium text-sm">회사 서명/직인 등록</h4> - - {/* 현재 등록된 서명/직인 파일 표시 (한 개만) */} - {(existingSignatureFiles.length > 0 || signatureFiles.length > 0) && ( - <div className="space-y-2"> - <div className="flex items-center gap-2 p-2 border rounded-lg bg-green-50"> - <CheckCircle className="w-4 h-4 text-green-600" /> - <span className="text-sm text-green-800">서명/직인 등록됨</span> - </div> - - {/* 기존 등록된 서명/직인 (첫 번째만 표시) */} - {existingSignatureFiles.length > 0 && signatureFiles.length === 0 && ( - <div className="p-2 border rounded-lg"> - {(() => { - const file = existingSignatureFiles[0]; - const fileInfo = getFileInfo(file.fileName); - return ( - <div className="flex items-center gap-2"> - <FileListIcon /> - <div className="flex-1"> - <div className="text-xs font-medium">{fileInfo.icon} {file.fileName}</div> - <div className="text-xs text-muted-foreground"> - {getAttachmentTypeLabel(file.attachmentType)} | {file.fileSize ? formatFileSize(file.fileSize) : '크기 정보 없음'} - </div> - </div> - <div className="flex items-center space-x-1"> - <FileListAction - onClick={() => handleDownloadFile(file)} - disabled={isDownloading} - > - {isDownloading ? <Loader2 className="h-3 w-3 animate-spin" /> : <Download className="h-3 w-3" />} - </FileListAction> - <FileListAction onClick={() => handleDeleteExistingFile(file.id)}> - <X className="h-3 w-3" /> - </FileListAction> - </div> - </div> - ); - })()} - </div> - )} - - {/* 새로 업로드된 서명/직인 */} - {signatureFiles.length > 0 && ( - <div className="p-2 border rounded-lg bg-blue-50"> - {(() => { - const file = signatureFiles[0]; - return ( - <div className="flex items-center gap-2"> - <FileListIcon /> - <div className="flex-1"> - <div className="text-xs font-medium">{file.name}</div> - <div className="text-xs text-muted-foreground"> - 서명/직인 (새 파일) | {prettyBytes(file.size)} - </div> - </div> - <FileListAction onClick={removeSignatureFile}> - <X className="h-3 w-3" /> - </FileListAction> - </div> - ); - })()} - </div> - )} - </div> - )} - - {/* 서명/직인 업로드 드롭존 */} - <Dropzone - maxSize={MAX_FILE_SIZE} - onDropAccepted={handleSignatureDropAccepted} - onDropRejected={handleSignatureDropRejected} - disabled={isSubmitting} - > - {({ maxSize }) => ( - <DropzoneZone className="flex justify-center min-h-[50px]"> - <DropzoneInput /> - <div className="flex items-center gap-2"> - <Upload className="w-4 h-4" /> - <div className="text-sm"> - <DropzoneTitle> - {existingSignatureFiles.length > 0 || signatureFiles.length > 0 - ? "서명/직인 교체" - : "서명/직인 업로드" - } - </DropzoneTitle> - <DropzoneDescription> - 한 개 파일만 업로드 가능 {maxSize ? ` | 최대: ${prettyBytes(maxSize)}` : ""} - </DropzoneDescription> - </div> - </div> - </DropzoneZone> - )} - </Dropzone> - </div> - {/* 액션 버튼들 */} <div className="grid grid-cols-1 md:grid-cols-2 gap-3"> <Button @@ -912,12 +921,12 @@ export function InfoForm() { 현재 정규업체 등록 진행 상황이 없습니다. </CardDescription> </CardHeader> - <CardContent> + {/* <CardContent> <div className="text-center py-4 text-muted-foreground"> <p>이미 정규업체로 등록되어 있거나, 아직 정규업체 등록을 진행하지 않았습니다.</p> <p className="text-sm mt-1">정규업체 등록이 필요한 경우 담당자에게 문의하세요.</p> </div> - </CardContent> + </CardContent> */} </Card> )} diff --git a/components/layout/Header.tsx b/components/layout/Header.tsx index 68db1426..70e26212 100644 --- a/components/layout/Header.tsx +++ b/components/layout/Header.tsx @@ -127,6 +127,7 @@ export function Header() { const main = isLoading ? originalMain : filterActiveMenus(originalMain, activeMenus); const additional = isLoading ? originalAdditional : filterActiveAdditionalMenus(originalAdditional, activeMenus); + return ( <> <header className="border-grid sticky top-0 z-40 w-full border-b bg-slate-100 backdrop-blur supports-[backdrop-filter]:bg-background/60"> diff --git a/components/signup/join-form.tsx b/components/signup/join-form.tsx index 999b87dc..9eda1a7d 100644 --- a/components/signup/join-form.tsx +++ b/components/signup/join-form.tsx @@ -1002,9 +1002,9 @@ function CompleteVendorForm({ data.contacts.every(contact => contact.contactPhone ? validatePhoneNumber(contact.contactPhone, data.country, t).isValid : true ); - + // 대표자 이메일 검증, 비워두면 계정 이메일({{email}})을 사용합니다.(0825최겸수정) const isFormValid = data.vendorName && data.vendorTypeId && data.items && - data.country && data.phone && vendorPhoneValidation.isValid && data.email && + data.country && data.phone && vendorPhoneValidation.isValid && contactsValid && validateRequiredFiles().length === 0 diff --git a/components/vendor-regular-registrations/registration-request-dialog.tsx b/components/vendor-regular-registrations/registration-request-dialog.tsx index 2a79189a..cf79bd02 100644 --- a/components/vendor-regular-registrations/registration-request-dialog.tsx +++ b/components/vendor-regular-registrations/registration-request-dialog.tsx @@ -398,15 +398,15 @@ export function RegistrationRequestDialog({ onChange={(e) => handleInputChange('corporateNumber', e.target.value)} /> </div> - <div> + {/* <div> <Label htmlFor="majorItems">주요품목</Label> <Input id="majorItems" value={formData.majorItems} onChange={(e) => handleInputChange('majorItems', e.target.value)} /> - </div> - <div> + </div> */} + {/* <div> <Label htmlFor="establishmentDate">설립일자</Label> <Input id="establishmentDate" @@ -414,7 +414,7 @@ export function RegistrationRequestDialog({ value={formData.establishmentDate} onChange={(e) => handleInputChange('establishmentDate', e.target.value)} /> - </div> + </div> */} </div> </div> @@ -442,7 +442,7 @@ export function RegistrationRequestDialog({ /> </div> </div> - <div className="grid grid-cols-1 md:grid-cols-2 gap-4"> + {/* <div className="grid grid-cols-1 md:grid-cols-2 gap-4"> <div> <Label htmlFor="factoryAddress">공장 주소</Label> <Input @@ -481,7 +481,7 @@ export function RegistrationRequestDialog({ placeholder="필요시 입력" /> </div> - </div> + </div> */} </div> </div> @@ -538,7 +538,7 @@ export function RegistrationRequestDialog({ </div> </div> - <div className="mt-4 space-y-3"> + {/* <div className="mt-4 space-y-3"> <div className="flex items-center space-x-2"> <Checkbox id="isWorkingAtCompany" @@ -555,7 +555,7 @@ export function RegistrationRequestDialog({ /> <Label htmlFor="isInternalPartner">사내협력사 <span className="text-red-500">*</span></Label> </div> - </div> + </div> */} </div> {/* 대표자 경력 */} diff --git a/config/vendorRegularRegistrationsColumnsConfig.ts b/config/vendorRegularRegistrationsColumnsConfig.ts index 44f02f96..c69b4378 100644 --- a/config/vendorRegularRegistrationsColumnsConfig.ts +++ b/config/vendorRegularRegistrationsColumnsConfig.ts @@ -142,6 +142,7 @@ export const statusLabels: Record<string, string> = { cp_review: "CP검토",
cp_finished: "CP완료",
approval_ready: "조건충족",
+ registration_requested: "등록요청됨",
in_review: "정규등록검토",
pending_approval: "장기미등록",
};
@@ -152,6 +153,7 @@ export const statusColors: Record<string, string> = { cp_review: "bg-yellow-100 text-yellow-800",
cp_finished: "bg-purple-100 text-purple-800",
approval_ready: "bg-emerald-100 text-emerald-800",
+ registration_requested: "bg-indigo-100 text-indigo-800",
in_review: "bg-orange-100 text-orange-800",
pending_approval: "bg-red-100 text-red-800",
};
diff --git a/db/migrations/0302_happy_expediter.sql b/db/migrations/0302_happy_expediter.sql new file mode 100644 index 00000000..90657b06 --- /dev/null +++ b/db/migrations/0302_happy_expediter.sql @@ -0,0 +1,4 @@ +ALTER TABLE "combo_box_settings" ADD COLUMN "sdq" integer NOT NULL;--> statement-breakpoint +ALTER TABLE "document_class_options_new" ADD COLUMN "sdq" integer NOT NULL;--> statement-breakpoint +ALTER TABLE "combo_box_settings" ADD CONSTRAINT "unique_code_group_sdq" UNIQUE("code_group_id","sdq");--> statement-breakpoint +ALTER TABLE "document_class_options_new" ADD CONSTRAINT "unique_document_class_sdq" UNIQUE("document_class_id","sdq");
\ No newline at end of file diff --git a/db/migrations/meta/0302_snapshot.json b/db/migrations/meta/0302_snapshot.json new file mode 100644 index 00000000..2d24f950 --- /dev/null +++ b/db/migrations/meta/0302_snapshot.json @@ -0,0 +1,51320 @@ +{ + "id": "01396fc8-4cbf-41fa-9f76-313aea64a6b7", + "prevId": "1e56cc19-3bfd-4ae9-975b-a4f72c836dc4", + "version": "7", + "dialect": "postgresql", + "tables": { + "public.companies": { + "name": "companies", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "companies_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "taxID": { + "name": "taxID", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.contract_envelopes": { + "name": "contract_envelopes", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "contract_envelopes_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "contract_id": { + "name": "contract_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "envelope_id": { + "name": "envelope_id", + "type": "varchar(200)", + "primaryKey": false, + "notNull": true + }, + "document_id": { + "name": "document_id", + "type": "varchar(200)", + "primaryKey": false, + "notNull": false + }, + "envelope_status": { + "name": "envelope_status", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "file_name": { + "name": "file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "file_path": { + "name": "file_path", + "type": "varchar(1024)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "contract_envelopes_contract_id_contracts_id_fk": { + "name": "contract_envelopes_contract_id_contracts_id_fk", + "tableFrom": "contract_envelopes", + "tableTo": "contracts", + "columnsFrom": [ + "contract_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.contract_items": { + "name": "contract_items", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "contract_items_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "contract_id": { + "name": "contract_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "item_id": { + "name": "item_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "quantity": { + "name": "quantity", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 1 + }, + "unit_price": { + "name": "unit_price", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "tax_rate": { + "name": "tax_rate", + "type": "numeric(5, 2)", + "primaryKey": false, + "notNull": false + }, + "tax_amount": { + "name": "tax_amount", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "total_line_amount": { + "name": "total_line_amount", + "type": "numeric(12, 2)", + "primaryKey": false, + "notNull": false + }, + "remark": { + "name": "remark", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "contract_items_contract_item_idx": { + "name": "contract_items_contract_item_idx", + "columns": [ + { + "expression": "contract_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "item_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "contract_items_contract_id_contracts_id_fk": { + "name": "contract_items_contract_id_contracts_id_fk", + "tableFrom": "contract_items", + "tableTo": "contracts", + "columnsFrom": [ + "contract_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "contract_items_item_id_items_id_fk": { + "name": "contract_items_item_id_items_id_fk", + "tableFrom": "contract_items", + "tableTo": "items", + "columnsFrom": [ + "item_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "contract_items_contract_id_item_id_unique": { + "name": "contract_items_contract_id_item_id_unique", + "nullsNotDistinct": false, + "columns": [ + "contract_id", + "item_id" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.contract_signers": { + "name": "contract_signers", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "contract_signers_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "envelope_id": { + "name": "envelope_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "vendor_contact_id": { + "name": "vendor_contact_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "signer_type": { + "name": "signer_type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true, + "default": "'VENDOR'" + }, + "signer_email": { + "name": "signer_email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "signer_name": { + "name": "signer_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "signer_position": { + "name": "signer_position", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "signer_status": { + "name": "signer_status", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false, + "default": "'PENDING'" + }, + "signed_at": { + "name": "signed_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "contract_signers_envelope_id_contract_envelopes_id_fk": { + "name": "contract_signers_envelope_id_contract_envelopes_id_fk", + "tableFrom": "contract_signers", + "tableTo": "contract_envelopes", + "columnsFrom": [ + "envelope_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "contract_signers_vendor_contact_id_vendor_contacts_id_fk": { + "name": "contract_signers_vendor_contact_id_vendor_contacts_id_fk", + "tableFrom": "contract_signers", + "tableTo": "vendor_contacts", + "columnsFrom": [ + "vendor_contact_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.contracts": { + "name": "contracts", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "contracts_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "project_id": { + "name": "project_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "contract_no": { + "name": "contract_no", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "contract_name": { + "name": "contract_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true, + "default": "'ACTIVE'" + }, + "start_date": { + "name": "start_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "end_date": { + "name": "end_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "payment_terms": { + "name": "payment_terms", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "delivery_terms": { + "name": "delivery_terms", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "delivery_date": { + "name": "delivery_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "delivery_location": { + "name": "delivery_location", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "currency": { + "name": "currency", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false, + "default": "'KRW'" + }, + "total_amount": { + "name": "total_amount", + "type": "numeric(12, 2)", + "primaryKey": false, + "notNull": false + }, + "discount": { + "name": "discount", + "type": "numeric(12, 2)", + "primaryKey": false, + "notNull": false + }, + "tax": { + "name": "tax", + "type": "numeric(12, 2)", + "primaryKey": false, + "notNull": false + }, + "shipping_fee": { + "name": "shipping_fee", + "type": "numeric(12, 2)", + "primaryKey": false, + "notNull": false + }, + "net_total": { + "name": "net_total", + "type": "numeric(12, 2)", + "primaryKey": false, + "notNull": false + }, + "partial_shipping_allowed": { + "name": "partial_shipping_allowed", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "partial_payment_allowed": { + "name": "partial_payment_allowed", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "remarks": { + "name": "remarks", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "version": { + "name": "version", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 1 + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "contracts_project_id_projects_id_fk": { + "name": "contracts_project_id_projects_id_fk", + "tableFrom": "contracts", + "tableTo": "projects", + "columnsFrom": [ + "project_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "contracts_vendor_id_vendors_id_fk": { + "name": "contracts_vendor_id_vendors_id_fk", + "tableFrom": "contracts", + "tableTo": "vendors", + "columnsFrom": [ + "vendor_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "contracts_contract_no_unique": { + "name": "contracts_contract_no_unique", + "nullsNotDistinct": false, + "columns": [ + "contract_no" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.poa": { + "name": "poa", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "poa_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "contract_no": { + "name": "contract_no", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "original_contract_no": { + "name": "original_contract_no", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "project_id": { + "name": "project_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "original_contract_name": { + "name": "original_contract_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "original_status": { + "name": "original_status", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "delivery_terms": { + "name": "delivery_terms", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "delivery_date": { + "name": "delivery_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "delivery_location": { + "name": "delivery_location", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "currency": { + "name": "currency", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "total_amount": { + "name": "total_amount", + "type": "numeric(12, 2)", + "primaryKey": false, + "notNull": false + }, + "discount": { + "name": "discount", + "type": "numeric(12, 2)", + "primaryKey": false, + "notNull": false + }, + "tax": { + "name": "tax", + "type": "numeric(12, 2)", + "primaryKey": false, + "notNull": false + }, + "shipping_fee": { + "name": "shipping_fee", + "type": "numeric(12, 2)", + "primaryKey": false, + "notNull": false + }, + "net_total": { + "name": "net_total", + "type": "numeric(12, 2)", + "primaryKey": false, + "notNull": false + }, + "change_reason": { + "name": "change_reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "approval_status": { + "name": "approval_status", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false, + "default": "'PENDING'" + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "poa_original_contract_no_contracts_contract_no_fk": { + "name": "poa_original_contract_no_contracts_contract_no_fk", + "tableFrom": "poa", + "tableTo": "contracts", + "columnsFrom": [ + "original_contract_no" + ], + "columnsTo": [ + "contract_no" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "poa_project_id_projects_id_fk": { + "name": "poa_project_id_projects_id_fk", + "tableFrom": "poa", + "tableTo": "projects", + "columnsFrom": [ + "project_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "poa_vendor_id_vendors_id_fk": { + "name": "poa_vendor_id_vendors_id_fk", + "tableFrom": "poa", + "tableTo": "vendors", + "columnsFrom": [ + "vendor_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.item_offshore_hull": { + "name": "item_offshore_hull", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "item_code": { + "name": "item_code", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "work_type": { + "name": "work_type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "item_list": { + "name": "item_list", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "sub_item_list": { + "name": "sub_item_list", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.item_offshore_top": { + "name": "item_offshore_top", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "item_code": { + "name": "item_code", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "work_type": { + "name": "work_type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "item_list": { + "name": "item_list", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "sub_item_list": { + "name": "sub_item_list", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.item_shipbuilding": { + "name": "item_shipbuilding", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "item_code": { + "name": "item_code", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "work_type": { + "name": "work_type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "item_list": { + "name": "item_list", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "ship_types": { + "name": "ship_types", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'OPTION'" + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.items": { + "name": "items", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "project_no": { + "name": "project_no", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "item_code": { + "name": "item_code", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "item_name": { + "name": "item_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "package_code": { + "name": "package_code", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "sm_code": { + "name": "sm_code", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "parent_item_code": { + "name": "parent_item_code", + "type": "varchar(18)", + "primaryKey": false, + "notNull": false + }, + "item_level": { + "name": "item_level", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "delete_flag": { + "name": "delete_flag", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "unit_of_measure": { + "name": "unit_of_measure", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "steel_type": { + "name": "steel_type", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "grade_material": { + "name": "grade_material", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "change_date": { + "name": "change_date", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "base_unit_of_measure": { + "name": "base_unit_of_measure", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "project_item_unique": { + "name": "project_item_unique", + "nullsNotDistinct": false, + "columns": [ + "project_no", + "item_code" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.materials": { + "name": "materials", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "item_code": { + "name": "item_code", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "item_name": { + "name": "item_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "parent_item_code": { + "name": "parent_item_code", + "type": "varchar(18)", + "primaryKey": false, + "notNull": false + }, + "item_level": { + "name": "item_level", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "delete_flag": { + "name": "delete_flag", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "unit_of_measure": { + "name": "unit_of_measure", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "steel_type": { + "name": "steel_type", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "grade_material": { + "name": "grade_material", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "change_date": { + "name": "change_date", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "base_unit_of_measure": { + "name": "base_unit_of_measure", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "materials_item_code_unique": { + "name": "materials_item_code_unique", + "nullsNotDistinct": false, + "columns": [ + "item_code" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pq_criterias": { + "name": "pq_criterias", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "code": { + "name": "code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "check_point": { + "name": "check_point", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "remarks": { + "name": "remarks", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "group_name": { + "name": "group_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "sub_group_name": { + "name": "sub_group_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "pq_list_id": { + "name": "pq_list_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "input_format": { + "name": "input_format", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true, + "default": "'TEXT'" + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "pq_criterias_pq_list_id_pq_lists_id_fk": { + "name": "pq_criterias_pq_list_id_pq_lists_id_fk", + "tableFrom": "pq_criterias", + "tableTo": "pq_lists", + "columnsFrom": [ + "pq_list_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pq_lists": { + "name": "pq_lists", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true + }, + "project_id": { + "name": "project_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "is_deleted": { + "name": "is_deleted", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "valid_to": { + "name": "valid_to", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "created_by": { + "name": "created_by", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "updated_by": { + "name": "updated_by", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "pq_lists_project_id_projects_id_fk": { + "name": "pq_lists_project_id_projects_id_fk", + "tableFrom": "pq_lists", + "tableTo": "projects", + "columnsFrom": [ + "project_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "pq_lists_created_by_users_id_fk": { + "name": "pq_lists_created_by_users_id_fk", + "tableFrom": "pq_lists", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "pq_lists_updated_by_users_id_fk": { + "name": "pq_lists_updated_by_users_id_fk", + "tableFrom": "pq_lists", + "tableTo": "users", + "columnsFrom": [ + "updated_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.site_visit_request_attachments": { + "name": "site_visit_request_attachments", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "site_visit_request_id": { + "name": "site_visit_request_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "vendor_site_visit_info_id": { + "name": "vendor_site_visit_info_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "file_name": { + "name": "file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "original_file_name": { + "name": "original_file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "file_path": { + "name": "file_path", + "type": "varchar(1024)", + "primaryKey": false, + "notNull": true + }, + "file_size": { + "name": "file_size", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "mime_type": { + "name": "mime_type", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "site_visit_request_attachments_site_visit_request_id_site_visit_requests_id_fk": { + "name": "site_visit_request_attachments_site_visit_request_id_site_visit_requests_id_fk", + "tableFrom": "site_visit_request_attachments", + "tableTo": "site_visit_requests", + "columnsFrom": [ + "site_visit_request_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "site_visit_request_attachments_vendor_site_visit_info_id_vendor_site_visit_info_id_fk": { + "name": "site_visit_request_attachments_vendor_site_visit_info_id_vendor_site_visit_info_id_fk", + "tableFrom": "site_visit_request_attachments", + "tableTo": "vendor_site_visit_info", + "columnsFrom": [ + "vendor_site_visit_info_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.site_visit_requests": { + "name": "site_visit_requests", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "investigation_id": { + "name": "investigation_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "requester_id": { + "name": "requester_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "inspection_duration": { + "name": "inspection_duration", + "type": "numeric(4, 1)", + "primaryKey": false, + "notNull": false + }, + "requested_start_date": { + "name": "requested_start_date", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "requested_end_date": { + "name": "requested_end_date", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "shi_attendees": { + "name": "shi_attendees", + "type": "jsonb", + "primaryKey": false, + "notNull": true, + "default": "'{}'::jsonb" + }, + "vendor_requests": { + "name": "vendor_requests", + "type": "jsonb", + "primaryKey": false, + "notNull": true, + "default": "'{}'::jsonb" + }, + "additional_requests": { + "name": "additional_requests", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true, + "default": "'REQUESTED'" + }, + "sent_at": { + "name": "sent_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "site_visit_requests_investigation_id_vendor_investigations_id_fk": { + "name": "site_visit_requests_investigation_id_vendor_investigations_id_fk", + "tableFrom": "site_visit_requests", + "tableTo": "vendor_investigations", + "columnsFrom": [ + "investigation_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "site_visit_requests_requester_id_users_id_fk": { + "name": "site_visit_requests_requester_id_users_id_fk", + "tableFrom": "site_visit_requests", + "tableTo": "users", + "columnsFrom": [ + "requester_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.vendor_criteria_attachments": { + "name": "vendor_criteria_attachments", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "vendor_criteria_answer_id": { + "name": "vendor_criteria_answer_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "file_name": { + "name": "file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "original_file_name": { + "name": "original_file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "file_path": { + "name": "file_path", + "type": "varchar(1024)", + "primaryKey": false, + "notNull": true + }, + "file_type": { + "name": "file_type", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "file_size": { + "name": "file_size", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "vendor_criteria_attachments_vendor_criteria_answer_id_vendor_pq_criteria_answers_id_fk": { + "name": "vendor_criteria_attachments_vendor_criteria_answer_id_vendor_pq_criteria_answers_id_fk", + "tableFrom": "vendor_criteria_attachments", + "tableTo": "vendor_pq_criteria_answers", + "columnsFrom": [ + "vendor_criteria_answer_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.vendor_investigation_attachments": { + "name": "vendor_investigation_attachments", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "investigation_id": { + "name": "investigation_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "file_name": { + "name": "file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "original_file_name": { + "name": "original_file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "file_path": { + "name": "file_path", + "type": "varchar(1024)", + "primaryKey": false, + "notNull": true + }, + "file_size": { + "name": "file_size", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "mime_type": { + "name": "mime_type", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "attachment_type": { + "name": "attachment_type", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false, + "default": "'REPORT'" + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "vendor_investigation_attachments_investigation_id_vendor_investigations_id_fk": { + "name": "vendor_investigation_attachments_investigation_id_vendor_investigations_id_fk", + "tableFrom": "vendor_investigation_attachments", + "tableTo": "vendor_investigations", + "columnsFrom": [ + "investigation_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.vendor_investigations": { + "name": "vendor_investigations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "pq_submission_id": { + "name": "pq_submission_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "requester_id": { + "name": "requester_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "qm_manager_id": { + "name": "qm_manager_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "investigation_status": { + "name": "investigation_status", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true, + "default": "'PLANNED'" + }, + "investigation_address": { + "name": "investigation_address", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "investigation_method": { + "name": "investigation_method", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "scheduled_start_at": { + "name": "scheduled_start_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "scheduled_end_at": { + "name": "scheduled_end_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "forecasted_at": { + "name": "forecasted_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "requested_at": { + "name": "requested_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "confirmed_at": { + "name": "confirmed_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "completed_at": { + "name": "completed_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "evaluation_score": { + "name": "evaluation_score", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "evaluation_result": { + "name": "evaluation_result", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "investigation_notes": { + "name": "investigation_notes", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "purchase_comment": { + "name": "purchase_comment", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "vendor_investigations_vendor_id_vendors_id_fk": { + "name": "vendor_investigations_vendor_id_vendors_id_fk", + "tableFrom": "vendor_investigations", + "tableTo": "vendors", + "columnsFrom": [ + "vendor_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "vendor_investigations_pq_submission_id_vendor_pq_submissions_id_fk": { + "name": "vendor_investigations_pq_submission_id_vendor_pq_submissions_id_fk", + "tableFrom": "vendor_investigations", + "tableTo": "vendor_pq_submissions", + "columnsFrom": [ + "pq_submission_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "cascade" + }, + "vendor_investigations_requester_id_users_id_fk": { + "name": "vendor_investigations_requester_id_users_id_fk", + "tableFrom": "vendor_investigations", + "tableTo": "users", + "columnsFrom": [ + "requester_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "vendor_investigations_qm_manager_id_users_id_fk": { + "name": "vendor_investigations_qm_manager_id_users_id_fk", + "tableFrom": "vendor_investigations", + "tableTo": "users", + "columnsFrom": [ + "qm_manager_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.vendor_pq_submissions": { + "name": "vendor_pq_submissions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "pq_number": { + "name": "pq_number", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "requester_id": { + "name": "requester_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "project_id": { + "name": "project_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "type": { + "name": "type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true, + "default": "'REQUESTED'" + }, + "due_date": { + "name": "due_date", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "agreements": { + "name": "agreements", + "type": "jsonb", + "primaryKey": false, + "notNull": true, + "default": "'{}'::jsonb" + }, + "pq_items": { + "name": "pq_items", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "submitted_at": { + "name": "submitted_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "approved_at": { + "name": "approved_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "rejected_at": { + "name": "rejected_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "reject_reason": { + "name": "reject_reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "unique_pq_submission": { + "name": "unique_pq_submission", + "columns": [ + { + "expression": "vendor_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "project_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "vendor_pq_submissions_requester_id_users_id_fk": { + "name": "vendor_pq_submissions_requester_id_users_id_fk", + "tableFrom": "vendor_pq_submissions", + "tableTo": "users", + "columnsFrom": [ + "requester_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "vendor_pq_submissions_vendor_id_vendors_id_fk": { + "name": "vendor_pq_submissions_vendor_id_vendors_id_fk", + "tableFrom": "vendor_pq_submissions", + "tableTo": "vendors", + "columnsFrom": [ + "vendor_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + }, + "vendor_pq_submissions_project_id_projects_id_fk": { + "name": "vendor_pq_submissions_project_id_projects_id_fk", + "tableFrom": "vendor_pq_submissions", + "tableTo": "projects", + "columnsFrom": [ + "project_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "vendor_pq_submissions_pq_number_unique": { + "name": "vendor_pq_submissions_pq_number_unique", + "nullsNotDistinct": false, + "columns": [ + "pq_number" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.vendor_pq_criteria_answers": { + "name": "vendor_pq_criteria_answers", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "criteria_id": { + "name": "criteria_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "project_id": { + "name": "project_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "answer": { + "name": "answer", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "shi_comment": { + "name": "shi_comment", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "vendor_reply": { + "name": "vendor_reply", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "vendor_pq_criteria_answers_vendor_id_vendors_id_fk": { + "name": "vendor_pq_criteria_answers_vendor_id_vendors_id_fk", + "tableFrom": "vendor_pq_criteria_answers", + "tableTo": "vendors", + "columnsFrom": [ + "vendor_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + }, + "vendor_pq_criteria_answers_criteria_id_pq_criterias_id_fk": { + "name": "vendor_pq_criteria_answers_criteria_id_pq_criterias_id_fk", + "tableFrom": "vendor_pq_criteria_answers", + "tableTo": "pq_criterias", + "columnsFrom": [ + "criteria_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + }, + "vendor_pq_criteria_answers_project_id_projects_id_fk": { + "name": "vendor_pq_criteria_answers_project_id_projects_id_fk", + "tableFrom": "vendor_pq_criteria_answers", + "tableTo": "projects", + "columnsFrom": [ + "project_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.vendor_pq_review_logs": { + "name": "vendor_pq_review_logs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "vendor_pq_criteria_answer_id": { + "name": "vendor_pq_criteria_answer_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "reviewer_comment": { + "name": "reviewer_comment", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "reviewer_name": { + "name": "reviewer_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "vendor_pq_review_logs_vendor_pq_criteria_answer_id_vendor_pq_criteria_answers_id_fk": { + "name": "vendor_pq_review_logs_vendor_pq_criteria_answer_id_vendor_pq_criteria_answers_id_fk", + "tableFrom": "vendor_pq_review_logs", + "tableTo": "vendor_pq_criteria_answers", + "columnsFrom": [ + "vendor_pq_criteria_answer_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.vendor_site_visit_info": { + "name": "vendor_site_visit_info", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "site_visit_request_id": { + "name": "site_visit_request_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "factory_name": { + "name": "factory_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "factory_location": { + "name": "factory_location", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "factory_address": { + "name": "factory_address", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "factory_pic_name": { + "name": "factory_pic_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "factory_pic_phone": { + "name": "factory_pic_phone", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "factory_pic_email": { + "name": "factory_pic_email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "factory_directions": { + "name": "factory_directions", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "access_procedure": { + "name": "access_procedure", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "has_attachments": { + "name": "has_attachments", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "other_info": { + "name": "other_info", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "submitted_at": { + "name": "submitted_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "submitted_by": { + "name": "submitted_by", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "vendor_site_visit_info_site_visit_request_id_site_visit_requests_id_fk": { + "name": "vendor_site_visit_info_site_visit_request_id_site_visit_requests_id_fk", + "tableFrom": "vendor_site_visit_info", + "tableTo": "site_visit_requests", + "columnsFrom": [ + "site_visit_request_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "vendor_site_visit_info_submitted_by_users_id_fk": { + "name": "vendor_site_visit_info_submitted_by_users_id_fk", + "tableFrom": "vendor_site_visit_info", + "tableTo": "users", + "columnsFrom": [ + "submitted_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.bidding_projects": { + "name": "bidding_projects", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "pspid": { + "name": "pspid", + "type": "char(24)", + "primaryKey": false, + "notNull": true + }, + "proj_nm": { + "name": "proj_nm", + "type": "varchar(90)", + "primaryKey": false, + "notNull": false + }, + "sector": { + "name": "sector", + "type": "char(1)", + "primaryKey": false, + "notNull": false + }, + "proj_msrm": { + "name": "proj_msrm", + "type": "numeric(3, 0)", + "primaryKey": false, + "notNull": false + }, + "kunnr": { + "name": "kunnr", + "type": "char(10)", + "primaryKey": false, + "notNull": false + }, + "kunnr_nm": { + "name": "kunnr_nm", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "cls_1": { + "name": "cls_1", + "type": "char(10)", + "primaryKey": false, + "notNull": false + }, + "cls1_nm": { + "name": "cls1_nm", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "ptype": { + "name": "ptype", + "type": "char(3)", + "primaryKey": false, + "notNull": false + }, + "ptype_nm": { + "name": "ptype_nm", + "type": "varchar(40)", + "primaryKey": false, + "notNull": false + }, + "pmodel_cd": { + "name": "pmodel_cd", + "type": "char(10)", + "primaryKey": false, + "notNull": false + }, + "pmodel_nm": { + "name": "pmodel_nm", + "type": "varchar(40)", + "primaryKey": false, + "notNull": false + }, + "pmodel_sz": { + "name": "pmodel_sz", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "pmodel_uom": { + "name": "pmodel_uom", + "type": "char(5)", + "primaryKey": false, + "notNull": false + }, + "txt04": { + "name": "txt04", + "type": "char(4)", + "primaryKey": false, + "notNull": false + }, + "txt30": { + "name": "txt30", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "estm_pm": { + "name": "estm_pm", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "pjt_type": { + "name": "pjt_type", + "type": "varchar", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "bidding_projects_pspid_unique": { + "name": "bidding_projects_pspid_unique", + "nullsNotDistinct": false, + "columns": [ + "pspid" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.project_series": { + "name": "project_series", + "schema": "", + "columns": { + "pspid": { + "name": "pspid", + "type": "char(24)", + "primaryKey": false, + "notNull": true + }, + "sers_no": { + "name": "sers_no", + "type": "char(3)", + "primaryKey": false, + "notNull": true + }, + "sc_dt": { + "name": "sc_dt", + "type": "char(8)", + "primaryKey": false, + "notNull": false + }, + "kl_dt": { + "name": "kl_dt", + "type": "char(8)", + "primaryKey": false, + "notNull": false + }, + "lc_dt": { + "name": "lc_dt", + "type": "char(8)", + "primaryKey": false, + "notNull": false + }, + "dl_dt": { + "name": "dl_dt", + "type": "char(8)", + "primaryKey": false, + "notNull": false + }, + "dock_no": { + "name": "dock_no", + "type": "char(3)", + "primaryKey": false, + "notNull": false + }, + "dock_nm": { + "name": "dock_nm", + "type": "varchar(40)", + "primaryKey": false, + "notNull": false + }, + "proj_no": { + "name": "proj_no", + "type": "char(24)", + "primaryKey": false, + "notNull": false + }, + "post1": { + "name": "post1", + "type": "varchar(40)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "project_sersNo_unique": { + "name": "project_sersNo_unique", + "columns": [ + { + "expression": "pspid", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "sers_no", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "project_series_pspid_bidding_projects_pspid_fk": { + "name": "project_series_pspid_bidding_projects_pspid_fk", + "tableFrom": "project_series", + "tableTo": "bidding_projects", + "columnsFrom": [ + "pspid" + ], + "columnsTo": [ + "pspid" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.projects": { + "name": "projects", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "code": { + "name": "code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true, + "default": "'ship'" + }, + "pspid": { + "name": "pspid", + "type": "char(24)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "projects_pspid_unique": { + "name": "projects_pspid_unique", + "nullsNotDistinct": false, + "columns": [ + "pspid" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cbe_evaluations": { + "name": "cbe_evaluations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "rfq_id": { + "name": "rfq_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "evaluated_by": { + "name": "evaluated_by", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "evaluated_at": { + "name": "evaluated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "result": { + "name": "result", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "total_cost": { + "name": "total_cost", + "type": "numeric(18, 2)", + "primaryKey": false, + "notNull": false + }, + "currency": { + "name": "currency", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false, + "default": "'USD'" + }, + "payment_terms": { + "name": "payment_terms", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "incoterms": { + "name": "incoterms", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "delivery_schedule": { + "name": "delivery_schedule", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "notes": { + "name": "notes", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "cbe_evaluations_rfq_id_rfqs_id_fk": { + "name": "cbe_evaluations_rfq_id_rfqs_id_fk", + "tableFrom": "cbe_evaluations", + "tableTo": "rfqs", + "columnsFrom": [ + "rfq_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "cbe_evaluations_vendor_id_vendors_id_fk": { + "name": "cbe_evaluations_vendor_id_vendors_id_fk", + "tableFrom": "cbe_evaluations", + "tableTo": "vendors", + "columnsFrom": [ + "vendor_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "cbe_evaluations_evaluated_by_users_id_fk": { + "name": "cbe_evaluations_evaluated_by_users_id_fk", + "tableFrom": "cbe_evaluations", + "tableTo": "users", + "columnsFrom": [ + "evaluated_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.rfq_attachments": { + "name": "rfq_attachments", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "rfq_id": { + "name": "rfq_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "file_name": { + "name": "file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "file_path": { + "name": "file_path", + "type": "varchar(1024)", + "primaryKey": false, + "notNull": true + }, + "evaluation_id": { + "name": "evaluation_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "cbe_id": { + "name": "cbe_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "comment_id": { + "name": "comment_id", + "type": "integer", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": { + "rfq_attachments_rfq_id_rfqs_id_fk": { + "name": "rfq_attachments_rfq_id_rfqs_id_fk", + "tableFrom": "rfq_attachments", + "tableTo": "rfqs", + "columnsFrom": [ + "rfq_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "rfq_attachments_vendor_id_vendors_id_fk": { + "name": "rfq_attachments_vendor_id_vendors_id_fk", + "tableFrom": "rfq_attachments", + "tableTo": "vendors", + "columnsFrom": [ + "vendor_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "rfq_attachments_evaluation_id_rfq_evaluations_id_fk": { + "name": "rfq_attachments_evaluation_id_rfq_evaluations_id_fk", + "tableFrom": "rfq_attachments", + "tableTo": "rfq_evaluations", + "columnsFrom": [ + "evaluation_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "rfq_attachments_cbe_id_cbe_evaluations_id_fk": { + "name": "rfq_attachments_cbe_id_cbe_evaluations_id_fk", + "tableFrom": "rfq_attachments", + "tableTo": "cbe_evaluations", + "columnsFrom": [ + "cbe_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "rfq_attachments_comment_id_rfq_comments_id_fk": { + "name": "rfq_attachments_comment_id_rfq_comments_id_fk", + "tableFrom": "rfq_attachments", + "tableTo": "rfq_comments", + "columnsFrom": [ + "comment_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.rfq_comments": { + "name": "rfq_comments", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "rfq_id": { + "name": "rfq_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "comment_text": { + "name": "comment_text", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "commented_by": { + "name": "commented_by", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "evaluation_id": { + "name": "evaluation_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "cbe_id": { + "name": "cbe_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "rfq_comments_rfq_id_rfqs_id_fk": { + "name": "rfq_comments_rfq_id_rfqs_id_fk", + "tableFrom": "rfq_comments", + "tableTo": "rfqs", + "columnsFrom": [ + "rfq_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "rfq_comments_vendor_id_vendors_id_fk": { + "name": "rfq_comments_vendor_id_vendors_id_fk", + "tableFrom": "rfq_comments", + "tableTo": "vendors", + "columnsFrom": [ + "vendor_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "rfq_comments_commented_by_users_id_fk": { + "name": "rfq_comments_commented_by_users_id_fk", + "tableFrom": "rfq_comments", + "tableTo": "users", + "columnsFrom": [ + "commented_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "rfq_comments_evaluation_id_rfq_evaluations_id_fk": { + "name": "rfq_comments_evaluation_id_rfq_evaluations_id_fk", + "tableFrom": "rfq_comments", + "tableTo": "rfq_evaluations", + "columnsFrom": [ + "evaluation_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "rfq_comments_cbe_id_vendor_responses_id_fk": { + "name": "rfq_comments_cbe_id_vendor_responses_id_fk", + "tableFrom": "rfq_comments", + "tableTo": "vendor_responses", + "columnsFrom": [ + "cbe_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.rfq_evaluations": { + "name": "rfq_evaluations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "rfq_id": { + "name": "rfq_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "eval_type": { + "name": "eval_type", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "result": { + "name": "result", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "notes": { + "name": "notes", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "rfq_evaluations_rfq_id_rfqs_id_fk": { + "name": "rfq_evaluations_rfq_id_rfqs_id_fk", + "tableFrom": "rfq_evaluations", + "tableTo": "rfqs", + "columnsFrom": [ + "rfq_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "rfq_evaluations_vendor_id_vendors_id_fk": { + "name": "rfq_evaluations_vendor_id_vendors_id_fk", + "tableFrom": "rfq_evaluations", + "tableTo": "vendors", + "columnsFrom": [ + "vendor_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.rfq_items": { + "name": "rfq_items", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "rfq_id": { + "name": "rfq_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "item_code": { + "name": "item_code", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "quantity": { + "name": "quantity", + "type": "numeric(12, 2)", + "primaryKey": false, + "notNull": false, + "default": 1 + }, + "uom": { + "name": "uom", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "rfq_items_rfq_id_rfqs_id_fk": { + "name": "rfq_items_rfq_id_rfqs_id_fk", + "tableFrom": "rfq_items", + "tableTo": "rfqs", + "columnsFrom": [ + "rfq_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "rfq_items_item_code_items_item_code_fk": { + "name": "rfq_items_item_code_items_item_code_fk", + "tableFrom": "rfq_items", + "tableTo": "items", + "columnsFrom": [ + "item_code" + ], + "columnsTo": [ + "item_code" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.rfqs": { + "name": "rfqs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "rfq_code": { + "name": "rfq_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "project_id": { + "name": "project_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "bid_project_id": { + "name": "bid_project_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "description": { + "name": "description", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "due_date": { + "name": "due_date", + "type": "date", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "default": "'DRAFT'" + }, + "rfq_type": { + "name": "rfq_type", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false, + "default": "'PURCHASE'" + }, + "parent_rfq_id": { + "name": "parent_rfq_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_by": { + "name": "created_by", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "rfqs_project_id_projects_id_fk": { + "name": "rfqs_project_id_projects_id_fk", + "tableFrom": "rfqs", + "tableTo": "projects", + "columnsFrom": [ + "project_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "rfqs_bid_project_id_bidding_projects_id_fk": { + "name": "rfqs_bid_project_id_bidding_projects_id_fk", + "tableFrom": "rfqs", + "tableTo": "bidding_projects", + "columnsFrom": [ + "bid_project_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "rfqs_created_by_users_id_fk": { + "name": "rfqs_created_by_users_id_fk", + "tableFrom": "rfqs", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "rfqs_parent_rfq_id_rfqs_id_fk": { + "name": "rfqs_parent_rfq_id_rfqs_id_fk", + "tableFrom": "rfqs", + "tableTo": "rfqs", + "columnsFrom": [ + "parent_rfq_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "rfqs_rfq_code_unique": { + "name": "rfqs_rfq_code_unique", + "nullsNotDistinct": false, + "columns": [ + "rfq_code" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.vendor_commercial_responses": { + "name": "vendor_commercial_responses", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "response_id": { + "name": "response_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "response_status": { + "name": "response_status", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "default": "'PENDING'" + }, + "total_price": { + "name": "total_price", + "type": "numeric(18, 2)", + "primaryKey": false, + "notNull": false + }, + "currency": { + "name": "currency", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false, + "default": "'USD'" + }, + "payment_terms": { + "name": "payment_terms", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "incoterms": { + "name": "incoterms", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "delivery_period": { + "name": "delivery_period", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "warranty_period": { + "name": "warranty_period", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "validity_period": { + "name": "validity_period", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "price_breakdown": { + "name": "price_breakdown", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "commercial_notes": { + "name": "commercial_notes", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "vendor_commercial_responses_response_id_vendor_responses_id_fk": { + "name": "vendor_commercial_responses_response_id_vendor_responses_id_fk", + "tableFrom": "vendor_commercial_responses", + "tableTo": "vendor_responses", + "columnsFrom": [ + "response_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.vendor_response_attachments": { + "name": "vendor_response_attachments", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "response_id": { + "name": "response_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "technical_response_id": { + "name": "technical_response_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "commercial_response_id": { + "name": "commercial_response_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "file_name": { + "name": "file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "file_path": { + "name": "file_path", + "type": "varchar(1024)", + "primaryKey": false, + "notNull": true + }, + "file_type": { + "name": "file_type", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "attachment_type": { + "name": "attachment_type", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "description": { + "name": "description", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "uploaded_at": { + "name": "uploaded_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "uploaded_by": { + "name": "uploaded_by", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": { + "vendor_response_attachments_response_id_vendor_responses_id_fk": { + "name": "vendor_response_attachments_response_id_vendor_responses_id_fk", + "tableFrom": "vendor_response_attachments", + "tableTo": "vendor_responses", + "columnsFrom": [ + "response_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "vendor_response_attachments_technical_response_id_vendor_technical_responses_id_fk": { + "name": "vendor_response_attachments_technical_response_id_vendor_technical_responses_id_fk", + "tableFrom": "vendor_response_attachments", + "tableTo": "vendor_technical_responses", + "columnsFrom": [ + "technical_response_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "vendor_response_attachments_commercial_response_id_vendor_commercial_responses_id_fk": { + "name": "vendor_response_attachments_commercial_response_id_vendor_commercial_responses_id_fk", + "tableFrom": "vendor_response_attachments", + "tableTo": "vendor_commercial_responses", + "columnsFrom": [ + "commercial_response_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.vendor_responses": { + "name": "vendor_responses", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "rfq_id": { + "name": "rfq_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "response_status": { + "name": "response_status", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "default": "'REVIEWING'" + }, + "notes": { + "name": "notes", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "responded_by": { + "name": "responded_by", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "responded_at": { + "name": "responded_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "vendor_response_unique": { + "name": "vendor_response_unique", + "columns": [ + { + "expression": "rfq_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "vendor_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "vendor_responses_rfq_id_rfqs_id_fk": { + "name": "vendor_responses_rfq_id_rfqs_id_fk", + "tableFrom": "vendor_responses", + "tableTo": "rfqs", + "columnsFrom": [ + "rfq_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "vendor_responses_vendor_id_vendors_id_fk": { + "name": "vendor_responses_vendor_id_vendors_id_fk", + "tableFrom": "vendor_responses", + "tableTo": "vendors", + "columnsFrom": [ + "vendor_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.vendor_technical_responses": { + "name": "vendor_technical_responses", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "response_id": { + "name": "response_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "response_status": { + "name": "response_status", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "default": "'PENDING'" + }, + "summary": { + "name": "summary", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "notes": { + "name": "notes", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "vendor_technical_responses_response_id_vendor_responses_id_fk": { + "name": "vendor_technical_responses_response_id_vendor_responses_id_fk", + "tableFrom": "vendor_technical_responses", + "tableTo": "vendor_responses", + "columnsFrom": [ + "response_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.departments": { + "name": "departments", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "department_code": { + "name": "department_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "department_name": { + "name": "department_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "departments_department_code_unique": { + "name": "departments_department_code_unique", + "nullsNotDistinct": false, + "columns": [ + "department_code" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.login_attempts": { + "name": "login_attempts", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "login_attempts_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "email": { + "name": "email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "success": { + "name": "success", + "type": "boolean", + "primaryKey": false, + "notNull": true + }, + "ip_address": { + "name": "ip_address", + "type": "varchar(45)", + "primaryKey": false, + "notNull": true + }, + "user_agent": { + "name": "user_agent", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "failure_reason": { + "name": "failure_reason", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "attempted_at": { + "name": "attempted_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "country": { + "name": "country", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "city": { + "name": "city", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "login_attempts_email_idx": { + "name": "login_attempts_email_idx", + "columns": [ + { + "expression": "email", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "login_attempts_attempted_at_idx": { + "name": "login_attempts_attempted_at_idx", + "columns": [ + { + "expression": "attempted_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "login_attempts_ip_address_idx": { + "name": "login_attempts_ip_address_idx", + "columns": [ + { + "expression": "ip_address", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "login_attempts_user_id_users_id_fk": { + "name": "login_attempts_user_id_users_id_fk", + "tableFrom": "login_attempts", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.mfa_tokens": { + "name": "mfa_tokens", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "mfa_tokens_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "token": { + "name": "token", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "used_at": { + "name": "used_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "phone_number": { + "name": "phone_number", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "attempts": { + "name": "attempts", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + } + }, + "indexes": { + "mfa_tokens_user_id_idx": { + "name": "mfa_tokens_user_id_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "mfa_tokens_token_idx": { + "name": "mfa_tokens_token_idx", + "columns": [ + { + "expression": "token", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "mfa_tokens_expires_at_idx": { + "name": "mfa_tokens_expires_at_idx", + "columns": [ + { + "expression": "expires_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "mfa_tokens_user_id_users_id_fk": { + "name": "mfa_tokens_user_id_users_id_fk", + "tableFrom": "mfa_tokens", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.otps": { + "name": "otps", + "schema": "", + "columns": { + "email": { + "name": "email", + "type": "varchar(256)", + "primaryKey": true, + "notNull": true + }, + "code": { + "name": "code", + "type": "varchar(6)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "otpToken": { + "name": "otpToken", + "type": "varchar(512)", + "primaryKey": false, + "notNull": true + }, + "otp_expires": { + "name": "otp_expires", + "type": "timestamp", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.password_history": { + "name": "password_history", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "password_history_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "password_hash": { + "name": "password_hash", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "salt": { + "name": "salt", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "replaced_at": { + "name": "replaced_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "password_history_user_id_idx": { + "name": "password_history_user_id_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "password_history_created_at_idx": { + "name": "password_history_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "password_history_user_id_users_id_fk": { + "name": "password_history_user_id_users_id_fk", + "tableFrom": "password_history", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.passwords": { + "name": "passwords", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "passwords_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "password_hash": { + "name": "password_hash", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "salt": { + "name": "salt", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "strength": { + "name": "strength", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "has_uppercase": { + "name": "has_uppercase", + "type": "boolean", + "primaryKey": false, + "notNull": true + }, + "has_lowercase": { + "name": "has_lowercase", + "type": "boolean", + "primaryKey": false, + "notNull": true + }, + "has_numbers": { + "name": "has_numbers", + "type": "boolean", + "primaryKey": false, + "notNull": true + }, + "has_symbols": { + "name": "has_symbols", + "type": "boolean", + "primaryKey": false, + "notNull": true + }, + "length": { + "name": "length", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "passwords_user_id_idx": { + "name": "passwords_user_id_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "passwords_active_idx": { + "name": "passwords_active_idx", + "columns": [ + { + "expression": "is_active", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "passwords_user_id_users_id_fk": { + "name": "passwords_user_id_users_id_fk", + "tableFrom": "passwords", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.permissions": { + "name": "permissions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "permissions_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "permission_key": { + "name": "permission_key", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.role_permissions": { + "name": "role_permissions", + "schema": "", + "columns": { + "role_id": { + "name": "role_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "permission_id": { + "name": "permission_id", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "role_permissions_role_id_roles_id_fk": { + "name": "role_permissions_role_id_roles_id_fk", + "tableFrom": "role_permissions", + "tableTo": "roles", + "columnsFrom": [ + "role_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "role_permissions_permission_id_permissions_id_fk": { + "name": "role_permissions_permission_id_permissions_id_fk", + "tableFrom": "role_permissions", + "tableTo": "permissions", + "columnsFrom": [ + "permission_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.roles": { + "name": "roles", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "roles_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "domain": { + "name": "domain", + "type": "user_domain", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "company_id": { + "name": "company_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "''" + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "roles_company_id_vendors_id_fk": { + "name": "roles_company_id_vendors_id_fk", + "tableFrom": "roles", + "tableTo": "vendors", + "columnsFrom": [ + "company_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.security_settings": { + "name": "security_settings", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "security_settings_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "min_password_length": { + "name": "min_password_length", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 8 + }, + "require_uppercase": { + "name": "require_uppercase", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "require_lowercase": { + "name": "require_lowercase", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "require_numbers": { + "name": "require_numbers", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "require_symbols": { + "name": "require_symbols", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "password_expiry_days": { + "name": "password_expiry_days", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 90 + }, + "password_history_count": { + "name": "password_history_count", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 5 + }, + "max_failed_attempts": { + "name": "max_failed_attempts", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 5 + }, + "lockout_duration_minutes": { + "name": "lockout_duration_minutes", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 30 + }, + "require_mfa_for_partners": { + "name": "require_mfa_for_partners", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "sms_token_expiry_minutes": { + "name": "sms_token_expiry_minutes", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 5 + }, + "max_sms_attempts_per_day": { + "name": "max_sms_attempts_per_day", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 10 + }, + "session_timeout_minutes": { + "name": "session_timeout_minutes", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 480 + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.user_roles": { + "name": "user_roles", + "schema": "", + "columns": { + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "role_id": { + "name": "role_id", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "user_roles_user_id_users_id_fk": { + "name": "user_roles_user_id_users_id_fk", + "tableFrom": "user_roles", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "user_roles_role_id_roles_id_fk": { + "name": "user_roles_role_id_roles_id_fk", + "tableFrom": "user_roles", + "tableTo": "roles", + "columnsFrom": [ + "role_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.users": { + "name": "users", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "users_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "email": { + "name": "email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "epId": { + "name": "epId", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "deptCode": { + "name": "deptCode", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "deptName": { + "name": "deptName", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "company_id": { + "name": "company_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "tech_company_id": { + "name": "tech_company_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "domain": { + "name": "domain", + "type": "user_domain", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'partners'" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "image_url": { + "name": "image_url", + "type": "varchar(1024)", + "primaryKey": false, + "notNull": false + }, + "language": { + "name": "language", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false, + "default": "'en'" + }, + "phone": { + "name": "phone", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "mfa_enabled": { + "name": "mfa_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "mfa_secret": { + "name": "mfa_secret", + "type": "varchar(32)", + "primaryKey": false, + "notNull": false + }, + "is_locked": { + "name": "is_locked", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "lockout_until": { + "name": "lockout_until", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "failed_login_attempts": { + "name": "failed_login_attempts", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "last_login_at": { + "name": "last_login_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "password_change_required": { + "name": "password_change_required", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "deactivated_at": { + "name": "deactivated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "deactivation_reason": { + "name": "deactivation_reason", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "last_consent_update": { + "name": "last_consent_update", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "consent_version": { + "name": "consent_version", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "requires_consent_update": { + "name": "requires_consent_update", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "employee_number": { + "name": "employee_number", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "knox_id": { + "name": "knox_id", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "nonsap_user_id": { + "name": "nonsap_user_id", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "is_absent": { + "name": "is_absent", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "is_deleted_on_non_sap": { + "name": "is_deleted_on_non_sap", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "is_regular_employee": { + "name": "is_regular_employee", + "type": "boolean", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "users_email_idx": { + "name": "users_email_idx", + "columns": [ + { + "expression": "email", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "users_phone_idx": { + "name": "users_phone_idx", + "columns": [ + { + "expression": "phone", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "users_company_id_vendors_id_fk": { + "name": "users_company_id_vendors_id_fk", + "tableFrom": "users", + "tableTo": "vendors", + "columnsFrom": [ + "company_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "users_tech_company_id_tech_vendors_id_fk": { + "name": "users_tech_company_id_tech_vendors_id_fk", + "tableFrom": "users", + "tableTo": "tech_vendors", + "columnsFrom": [ + "tech_company_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "users_email_unique": { + "name": "users_email_unique", + "nullsNotDistinct": false, + "columns": [ + "email" + ] + }, + "users_nonsap_user_id_unique": { + "name": "users_nonsap_user_id_unique", + "nullsNotDistinct": false, + "columns": [ + "nonsap_user_id" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.form_entries": { + "name": "form_entries", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "form_code": { + "name": "form_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "data": { + "name": "data", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "contract_item_id": { + "name": "contract_item_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "form_entries_contract_item_id_contract_items_id_fk": { + "name": "form_entries_contract_item_id_contract_items_id_fk", + "tableFrom": "form_entries", + "tableTo": "contract_items", + "columnsFrom": [ + "contract_item_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.form_metas": { + "name": "form_metas", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "project_id": { + "name": "project_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "form_code": { + "name": "form_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "form_name": { + "name": "form_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "columns": { + "name": "columns", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "form_metas_project_id_projects_id_fk": { + "name": "form_metas_project_id_projects_id_fk", + "tableFrom": "form_metas", + "tableTo": "projects", + "columnsFrom": [ + "project_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "form_code_project_unique": { + "name": "form_code_project_unique", + "nullsNotDistinct": false, + "columns": [ + "project_id", + "form_code" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.forms": { + "name": "forms", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "forms_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "contract_item_id": { + "name": "contract_item_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "form_code": { + "name": "form_code", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "form_name": { + "name": "form_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "eng": { + "name": "eng", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "im": { + "name": "im", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "contract_item_form_code_unique": { + "name": "contract_item_form_code_unique", + "columns": [ + { + "expression": "contract_item_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "form_code", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "forms_contract_item_id_contract_items_id_fk": { + "name": "forms_contract_item_id_contract_items_id_fk", + "tableFrom": "forms", + "tableTo": "contract_items", + "columnsFrom": [ + "contract_item_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.tag_class_attributes": { + "name": "tag_class_attributes", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "tag_class_attributes_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "tag_class_id": { + "name": "tag_class_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "att_id": { + "name": "att_id", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "def_val": { + "name": "def_val", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "uom_id": { + "name": "uom_id", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "seq": { + "name": "seq", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "tag_class_attributes_seq_idx": { + "name": "tag_class_attributes_seq_idx", + "columns": [ + { + "expression": "seq", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "tag_class_attributes_tag_class_id_tag_classes_id_fk": { + "name": "tag_class_attributes_tag_class_id_tag_classes_id_fk", + "tableFrom": "tag_class_attributes", + "tableTo": "tag_classes", + "columnsFrom": [ + "tag_class_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "uniq_att_id_in_tag_class": { + "name": "uniq_att_id_in_tag_class", + "nullsNotDistinct": false, + "columns": [ + "tag_class_id", + "att_id" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.tag_classes": { + "name": "tag_classes", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "tag_classes_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "project_id": { + "name": "project_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "code": { + "name": "code", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "label": { + "name": "label", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "tag_type_code": { + "name": "tag_type_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "subclasses": { + "name": "subclasses", + "type": "json", + "primaryKey": false, + "notNull": false, + "default": "'[]'::json" + }, + "subclass_remark": { + "name": "subclass_remark", + "type": "json", + "primaryKey": false, + "notNull": false, + "default": "'{}'::json" + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "tag_classes_project_id_projects_id_fk": { + "name": "tag_classes_project_id_projects_id_fk", + "tableFrom": "tag_classes", + "tableTo": "projects", + "columnsFrom": [ + "project_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "tag_classes_tag_type_code_project_id_tag_types_code_project_id_fk": { + "name": "tag_classes_tag_type_code_project_id_tag_types_code_project_id_fk", + "tableFrom": "tag_classes", + "tableTo": "tag_types", + "columnsFrom": [ + "tag_type_code", + "project_id" + ], + "columnsTo": [ + "code", + "project_id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "uniq_code_in_project": { + "name": "uniq_code_in_project", + "nullsNotDistinct": false, + "columns": [ + "project_id", + "code" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.tag_subfield_options": { + "name": "tag_subfield_options", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "project_id": { + "name": "project_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "attributes_id": { + "name": "attributes_id", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "code": { + "name": "code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "label": { + "name": "label", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "tag_subfield_options_project_id_projects_id_fk": { + "name": "tag_subfield_options_project_id_projects_id_fk", + "tableFrom": "tag_subfield_options", + "tableTo": "projects", + "columnsFrom": [ + "project_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "uniq_attribute_project_code": { + "name": "uniq_attribute_project_code", + "nullsNotDistinct": false, + "columns": [ + "project_id", + "attributes_id", + "code" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.tag_subfields": { + "name": "tag_subfields", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "project_id": { + "name": "project_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "tag_type_code": { + "name": "tag_type_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "attributes_id": { + "name": "attributes_id", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "attributes_description": { + "name": "attributes_description", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "expression": { + "name": "expression", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "delimiter": { + "name": "delimiter", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "sort_order": { + "name": "sort_order", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "tag_subfields_project_id_projects_id_fk": { + "name": "tag_subfields_project_id_projects_id_fk", + "tableFrom": "tag_subfields", + "tableTo": "projects", + "columnsFrom": [ + "project_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "uniq_tag_type_attribute": { + "name": "uniq_tag_type_attribute", + "nullsNotDistinct": false, + "columns": [ + "project_id", + "tag_type_code", + "attributes_id" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.tag_type_class_form_mappings": { + "name": "tag_type_class_form_mappings", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "project_id": { + "name": "project_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "tag_type_label": { + "name": "tag_type_label", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "class_label": { + "name": "class_label", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "form_code": { + "name": "form_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "form_name": { + "name": "form_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "ep": { + "name": "ep", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "remark": { + "name": "remark", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "uniq_mapping_in_project": { + "name": "uniq_mapping_in_project", + "nullsNotDistinct": false, + "columns": [ + "project_id", + "tag_type_label", + "class_label", + "form_code", + "remark" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.tag_types": { + "name": "tag_types", + "schema": "", + "columns": { + "code": { + "name": "code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "project_id": { + "name": "project_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "tag_types_project_id_projects_id_fk": { + "name": "tag_types_project_id_projects_id_fk", + "tableFrom": "tag_types", + "tableTo": "projects", + "columnsFrom": [ + "project_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "tag_types_code_project_id_pk": { + "name": "tag_types_code_project_id_pk", + "columns": [ + "code", + "project_id" + ] + } + }, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.tags": { + "name": "tags", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "tags_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "contract_item_id": { + "name": "contract_item_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "form_id": { + "name": "form_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "tag_idx": { + "name": "tag_idx", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "tag_no": { + "name": "tag_no", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "tag_type": { + "name": "tag_type", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "class": { + "name": "class", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "tag_class_id": { + "name": "tag_class_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "tags_contract_item_id_contract_items_id_fk": { + "name": "tags_contract_item_id_contract_items_id_fk", + "tableFrom": "tags", + "tableTo": "contract_items", + "columnsFrom": [ + "contract_item_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "tags_form_id_forms_id_fk": { + "name": "tags_form_id_forms_id_fk", + "tableFrom": "tags", + "tableTo": "forms", + "columnsFrom": [ + "form_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "tags_tag_class_id_tag_classes_id_fk": { + "name": "tags_tag_class_id_tag_classes_id_fk", + "tableFrom": "tags", + "tableTo": "tag_classes", + "columnsFrom": [ + "tag_class_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "contract_item_tag_idx_unique": { + "name": "contract_item_tag_idx_unique", + "nullsNotDistinct": false, + "columns": [ + "contract_item_id", + "tag_idx" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.template_items": { + "name": "template_items", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "form_mapping_id": { + "name": "form_mapping_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "tmpl_id": { + "name": "tmpl_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "tmpl_type": { + "name": "tmpl_type", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "spr_lst_setup": { + "name": "spr_lst_setup", + "type": "json", + "primaryKey": false, + "notNull": true + }, + "grd_lst_setup": { + "name": "grd_lst_setup", + "type": "json", + "primaryKey": false, + "notNull": true + }, + "spr_itm_lst_setup": { + "name": "spr_itm_lst_setup", + "type": "json", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "template_items_form_mapping_id_tag_type_class_form_mappings_id_fk": { + "name": "template_items_form_mapping_id_tag_type_class_form_mappings_id_fk", + "tableFrom": "template_items", + "tableTo": "tag_type_class_form_mappings", + "columnsFrom": [ + "form_mapping_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "uniq_tmpl_in_form_mapping": { + "name": "uniq_tmpl_in_form_mapping", + "nullsNotDistinct": false, + "columns": [ + "form_mapping_id", + "tmpl_id" + ] + }, + "uniq_name_in_form_mapping": { + "name": "uniq_name_in_form_mapping", + "nullsNotDistinct": false, + "columns": [ + "form_mapping_id", + "name" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.vendor_data_report_temps": { + "name": "vendor_data_report_temps", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "contract_item_id": { + "name": "contract_item_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "form_id": { + "name": "form_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "file_name": { + "name": "file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "file_path": { + "name": "file_path", + "type": "varchar(1024)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "vendor_data_report_temps_contract_item_id_contract_items_id_fk": { + "name": "vendor_data_report_temps_contract_item_id_contract_items_id_fk", + "tableFrom": "vendor_data_report_temps", + "tableTo": "contract_items", + "columnsFrom": [ + "contract_item_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "vendor_data_report_temps_form_id_forms_id_fk": { + "name": "vendor_data_report_temps_form_id_forms_id_fk", + "tableFrom": "vendor_data_report_temps", + "tableTo": "forms", + "columnsFrom": [ + "form_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.change_logs": { + "name": "change_logs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "entity_type": { + "name": "entity_type", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "entity_id": { + "name": "entity_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "action": { + "name": "action", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true + }, + "changed_fields": { + "name": "changed_fields", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "old_values": { + "name": "old_values", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "new_values": { + "name": "new_values", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "user_name": { + "name": "user_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "is_synced": { + "name": "is_synced", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "sync_attempts": { + "name": "sync_attempts", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "last_sync_error": { + "name": "last_sync_error", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "synced_at": { + "name": "synced_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "target_systems": { + "name": "target_systems", + "type": "jsonb", + "primaryKey": false, + "notNull": false, + "default": "'[]'::jsonb" + } + }, + "indexes": { + "idx_change_logs_vendor_synced": { + "name": "idx_change_logs_vendor_synced", + "columns": [ + { + "expression": "vendor_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "is_synced", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_change_logs_created_at": { + "name": "idx_change_logs_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_change_logs_entity": { + "name": "idx_change_logs_entity", + "columns": [ + { + "expression": "entity_type", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "entity_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_change_logs_sync_attempts": { + "name": "idx_change_logs_sync_attempts", + "columns": [ + { + "expression": "sync_attempts", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.document_attachments": { + "name": "document_attachments", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "document_attachments_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "revision_id": { + "name": "revision_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "file_name": { + "name": "file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "file_path": { + "name": "file_path", + "type": "varchar(1024)", + "primaryKey": false, + "notNull": true + }, + "file_type": { + "name": "file_type", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "file_size": { + "name": "file_size", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "upload_id": { + "name": "upload_id", + "type": "varchar(36)", + "primaryKey": false, + "notNull": false + }, + "file_id": { + "name": "file_id", + "type": "varchar(36)", + "primaryKey": false, + "notNull": false + }, + "uploaded_by": { + "name": "uploaded_by", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "dolce_file_path": { + "name": "dolce_file_path", + "type": "varchar(1024)", + "primaryKey": false, + "notNull": false + }, + "uploaded_at": { + "name": "uploaded_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "document_attachments_revision_id_revisions_id_fk": { + "name": "document_attachments_revision_id_revisions_id_fk", + "tableFrom": "document_attachments", + "tableTo": "revisions", + "columnsFrom": [ + "revision_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.documents": { + "name": "documents", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "documents_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "pic": { + "name": "pic", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "project_id": { + "name": "project_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "contract_id": { + "name": "contract_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "doc_number": { + "name": "doc_number", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "vendor_doc_number": { + "name": "vendor_doc_number", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "title": { + "name": "title", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true, + "default": "'ACTIVE'" + }, + "issued_date": { + "name": "issued_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "drawing_kind": { + "name": "drawing_kind", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "drawing_move_gbn": { + "name": "drawing_move_gbn", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "discipline": { + "name": "discipline", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "external_document_id": { + "name": "external_document_id", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "external_system_type": { + "name": "external_system_type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "external_synced_at": { + "name": "external_synced_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "c_gbn": { + "name": "c_gbn", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "d_gbn": { + "name": "d_gbn", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "degree_gbn": { + "name": "degree_gbn", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "dept_gbn": { + "name": "dept_gbn", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "j_gbn": { + "name": "j_gbn", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "s_gbn": { + "name": "s_gbn", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "shi_drawing_no": { + "name": "shi_drawing_no", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "manager": { + "name": "manager", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "manager_enm": { + "name": "manager_enm", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "manager_no": { + "name": "manager_no", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "register_group": { + "name": "register_group", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "register_group_id": { + "name": "register_group_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "create_user_no": { + "name": "create_user_no", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "create_user_id": { + "name": "create_user_id", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "create_user_enm": { + "name": "create_user_enm", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "unique_contract_doc_status": { + "name": "unique_contract_doc_status", + "columns": [ + { + "expression": "contract_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "doc_number", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "status", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "unique_contract_vendor_doc": { + "name": "unique_contract_vendor_doc", + "columns": [ + { + "expression": "contract_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "vendor_doc_number", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"documents\".\"vendor_doc_number\" IS NOT NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "unique_external_doc": { + "name": "unique_external_doc", + "columns": [ + { + "expression": "contract_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "external_document_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "external_system_type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"documents\".\"external_document_id\" IS NOT NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "unique_project_doc_status": { + "name": "unique_project_doc_status", + "columns": [ + { + "expression": "project_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "doc_number", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "status", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "unique_external_doc_project": { + "name": "unique_external_doc_project", + "columns": [ + { + "expression": "project_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "external_document_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "external_system_type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"documents\".\"external_document_id\" IS NOT NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "drawing_kind_idx": { + "name": "drawing_kind_idx", + "columns": [ + { + "expression": "drawing_kind", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "documents_project_id_projects_id_fk": { + "name": "documents_project_id_projects_id_fk", + "tableFrom": "documents", + "tableTo": "projects", + "columnsFrom": [ + "project_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "documents_contract_id_contracts_id_fk": { + "name": "documents_contract_id_contracts_id_fk", + "tableFrom": "documents", + "tableTo": "contracts", + "columnsFrom": [ + "contract_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "documents_vendor_id_vendors_id_fk": { + "name": "documents_vendor_id_vendors_id_fk", + "tableFrom": "documents", + "tableTo": "vendors", + "columnsFrom": [ + "vendor_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.issue_stages": { + "name": "issue_stages", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "issue_stages_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "document_id": { + "name": "document_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "stage_name": { + "name": "stage_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "plan_date": { + "name": "plan_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "actual_date": { + "name": "actual_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "stage_status": { + "name": "stage_status", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true, + "default": "'PLANNED'" + }, + "stage_order": { + "name": "stage_order", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "priority": { + "name": "priority", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false, + "default": "'MEDIUM'" + }, + "assignee_id": { + "name": "assignee_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "assignee_name": { + "name": "assignee_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "reminder_days": { + "name": "reminder_days", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 3 + }, + "description": { + "name": "description", + "type": "varchar(500)", + "primaryKey": false, + "notNull": false + }, + "notes": { + "name": "notes", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "unique_document_stage": { + "name": "unique_document_stage", + "columns": [ + { + "expression": "document_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "stage_name", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "document_stage_order": { + "name": "document_stage_order", + "columns": [ + { + "expression": "document_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "stage_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "issue_stages_document_id_documents_id_fk": { + "name": "issue_stages_document_id_documents_id_fk", + "tableFrom": "issue_stages", + "tableTo": "documents", + "columnsFrom": [ + "document_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.revisions": { + "name": "revisions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "revisions_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "issue_stage_id": { + "name": "issue_stage_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "revision": { + "name": "revision", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "uploader_type": { + "name": "uploader_type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true, + "default": "'vendor'" + }, + "uploader_id": { + "name": "uploader_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "uploader_name": { + "name": "uploader_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "usage": { + "name": "usage", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "usage_type": { + "name": "usage_type", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "revision_status": { + "name": "revision_status", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true, + "default": "'SUBMITTED'" + }, + "submitted_date": { + "name": "submitted_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "uploaded_at": { + "name": "uploaded_at", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "review_start_date": { + "name": "review_start_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "approved_date": { + "name": "approved_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "rejected_date": { + "name": "rejected_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "reviewer_id": { + "name": "reviewer_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "reviewer_name": { + "name": "reviewer_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "review_comments": { + "name": "review_comments", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "external_upload_id": { + "name": "external_upload_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "comment": { + "name": "comment", + "type": "varchar(500)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "register_id": { + "name": "register_id", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "serial_no": { + "name": "serial_no", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "unique_stage_revision_usage": { + "name": "unique_stage_revision_usage", + "columns": [ + { + "expression": "issue_stage_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "revision", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "usage", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "COALESCE(\"usage_type\", '')", + "asc": true, + "isExpression": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.stage_documents": { + "name": "stage_documents", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "stage_documents_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "doc_number": { + "name": "doc_number", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "title": { + "name": "title", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true, + "default": "'ACTIVE'" + }, + "vendor_doc_number": { + "name": "vendor_doc_number", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "issued_date": { + "name": "issued_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "project_id": { + "name": "project_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "contract_id": { + "name": "contract_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "unique_project_doc": { + "name": "unique_project_doc", + "columns": [ + { + "expression": "project_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "doc_number", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "status", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "unique_project_vendor_doc": { + "name": "unique_project_vendor_doc", + "columns": [ + { + "expression": "project_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "vendor_doc_number", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"stage_documents\".\"vendor_doc_number\" IS NOT NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "stage_doc_vendor_id_idx": { + "name": "stage_doc_vendor_id_idx", + "columns": [ + { + "expression": "vendor_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "stage_doc_status_idx": { + "name": "stage_doc_status_idx", + "columns": [ + { + "expression": "status", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "stage_documents_project_id_projects_id_fk": { + "name": "stage_documents_project_id_projects_id_fk", + "tableFrom": "stage_documents", + "tableTo": "projects", + "columnsFrom": [ + "project_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.stage_issue_stages": { + "name": "stage_issue_stages", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "stage_issue_stages_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "document_id": { + "name": "document_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "stage_name": { + "name": "stage_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "plan_date": { + "name": "plan_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "actual_date": { + "name": "actual_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "stage_status": { + "name": "stage_status", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true, + "default": "'PLANNED'" + }, + "stage_order": { + "name": "stage_order", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "priority": { + "name": "priority", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false, + "default": "'MEDIUM'" + }, + "assignee_id": { + "name": "assignee_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "assignee_name": { + "name": "assignee_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "reminder_days": { + "name": "reminder_days", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 3 + }, + "description": { + "name": "description", + "type": "varchar(500)", + "primaryKey": false, + "notNull": false + }, + "notes": { + "name": "notes", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "unique_stage_document_stage": { + "name": "unique_stage_document_stage", + "columns": [ + { + "expression": "document_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "stage_name", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "stage_document_stage_order": { + "name": "stage_document_stage_order", + "columns": [ + { + "expression": "document_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "stage_order", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "stage_issue_stages_document_id_stage_documents_id_fk": { + "name": "stage_issue_stages_document_id_stage_documents_id_fk", + "tableFrom": "stage_issue_stages", + "tableTo": "stage_documents", + "columnsFrom": [ + "document_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.sync_batches": { + "name": "sync_batches", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "target_system": { + "name": "target_system", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "batch_size": { + "name": "batch_size", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true, + "default": "'PENDING'" + }, + "started_at": { + "name": "started_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "completed_at": { + "name": "completed_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "error_message": { + "name": "error_message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "retry_count": { + "name": "retry_count", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "change_log_ids": { + "name": "change_log_ids", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "success_count": { + "name": "success_count", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "failure_count": { + "name": "failure_count", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "sync_metadata": { + "name": "sync_metadata", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "idx_sync_batches_project_system": { + "name": "idx_sync_batches_project_system", + "columns": [ + { + "expression": "vendor_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "target_system", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_sync_batches_status": { + "name": "idx_sync_batches_status", + "columns": [ + { + "expression": "status", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_sync_batches_created_at": { + "name": "idx_sync_batches_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.sync_configs": { + "name": "sync_configs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "target_system": { + "name": "target_system", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "sync_enabled": { + "name": "sync_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "sync_interval_minutes": { + "name": "sync_interval_minutes", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 30 + }, + "last_successful_sync": { + "name": "last_successful_sync", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "last_sync_attempt": { + "name": "last_sync_attempt", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "endpoint_url": { + "name": "endpoint_url", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "auth_token": { + "name": "auth_token", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "api_version": { + "name": "api_version", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false, + "default": "'v1'" + }, + "max_batch_size": { + "name": "max_batch_size", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 100 + }, + "retry_max_attempts": { + "name": "retry_max_attempts", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 3 + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "idx_sync_configs_contract_system": { + "name": "idx_sync_configs_contract_system", + "columns": [ + { + "expression": "vendor_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "target_system", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.vendor_attachments": { + "name": "vendor_attachments", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "file_type": { + "name": "file_type", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "file_name": { + "name": "file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "file_path": { + "name": "file_path", + "type": "varchar(1024)", + "primaryKey": false, + "notNull": true + }, + "attachment_type": { + "name": "attachment_type", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false, + "default": "'GENERAL'" + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "vendor_attachments_vendor_id_vendors_id_fk": { + "name": "vendor_attachments_vendor_id_vendors_id_fk", + "tableFrom": "vendor_attachments", + "tableTo": "vendors", + "columnsFrom": [ + "vendor_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.vendor_candidates": { + "name": "vendor_candidates", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "company_name": { + "name": "company_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "contact_email": { + "name": "contact_email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "contact_phone": { + "name": "contact_phone", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "tax_id": { + "name": "tax_id", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "address": { + "name": "address", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "country": { + "name": "country", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "source": { + "name": "source", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "default": "'COLLECTED'" + }, + "remark": { + "name": "remark", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "items": { + "name": "items", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "vendor_candidates_vendor_id_vendors_id_fk": { + "name": "vendor_candidates_vendor_id_vendors_id_fk", + "tableFrom": "vendor_candidates", + "tableTo": "vendors", + "columnsFrom": [ + "vendor_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.vendor_contacts": { + "name": "vendor_contacts", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "contact_name": { + "name": "contact_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "contact_position": { + "name": "contact_position", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "contact_department": { + "name": "contact_department", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "contact_task": { + "name": "contact_task", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "contact_email": { + "name": "contact_email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "contact_phone": { + "name": "contact_phone", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "is_primary": { + "name": "is_primary", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "vendor_contacts_vendor_id_vendors_id_fk": { + "name": "vendor_contacts_vendor_id_vendors_id_fk", + "tableFrom": "vendor_contacts", + "tableTo": "vendors", + "columnsFrom": [ + "vendor_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.vendor_possible_items": { + "name": "vendor_possible_items", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "item_code": { + "name": "item_code", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "vendor_possible_items_vendor_id_vendors_id_fk": { + "name": "vendor_possible_items_vendor_id_vendors_id_fk", + "tableFrom": "vendor_possible_items", + "tableTo": "vendors", + "columnsFrom": [ + "vendor_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "vendor_possible_items_item_code_items_item_code_fk": { + "name": "vendor_possible_items_item_code_items_item_code_fk", + "tableFrom": "vendor_possible_items", + "tableTo": "items", + "columnsFrom": [ + "item_code" + ], + "columnsTo": [ + "item_code" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.vendor_possible_materials": { + "name": "vendor_possible_materials", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "item_code": { + "name": "item_code", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "vendor_possible_materials_vendor_id_vendors_id_fk": { + "name": "vendor_possible_materials_vendor_id_vendors_id_fk", + "tableFrom": "vendor_possible_materials", + "tableTo": "vendors", + "columnsFrom": [ + "vendor_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "vendor_possible_materials_item_code_materials_item_code_fk": { + "name": "vendor_possible_materials_item_code_materials_item_code_fk", + "tableFrom": "vendor_possible_materials", + "tableTo": "materials", + "columnsFrom": [ + "item_code" + ], + "columnsTo": [ + "item_code" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.vendor_types": { + "name": "vendor_types", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "code": { + "name": "code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "name_ko": { + "name": "name_ko", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "name_en": { + "name": "name_en", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "vendor_types_code_unique": { + "name": "vendor_types_code_unique", + "nullsNotDistinct": false, + "columns": [ + "code" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.vendors": { + "name": "vendors", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "vendor_name": { + "name": "vendor_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "vendor_code": { + "name": "vendor_code", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "tax_id": { + "name": "tax_id", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "address": { + "name": "address", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "address_detail": { + "name": "address_detail", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "postal_code": { + "name": "postal_code", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "country": { + "name": "country", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "phone": { + "name": "phone", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "email": { + "name": "email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "website": { + "name": "website", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "default": "'PENDING_REVIEW'" + }, + "vendor_type_id": { + "name": "vendor_type_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "representative_name": { + "name": "representative_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "representative_birth": { + "name": "representative_birth", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "representative_email": { + "name": "representative_email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "representative_phone": { + "name": "representative_phone", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "representative_work_expirence": { + "name": "representative_work_expirence", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "corporate_registration_number": { + "name": "corporate_registration_number", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "items": { + "name": "items", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "credit_agency": { + "name": "credit_agency", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "credit_rating": { + "name": "credit_rating", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "cash_flow_rating": { + "name": "cash_flow_rating", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "business_size": { + "name": "business_size", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "vendors_vendor_type_id_vendor_types_id_fk": { + "name": "vendors_vendor_type_id_vendor_types_id_fk", + "tableFrom": "vendors", + "tableTo": "vendor_types", + "columnsFrom": [ + "vendor_type_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.tasks": { + "name": "tasks", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(30)", + "primaryKey": true, + "notNull": true + }, + "code": { + "name": "code", + "type": "varchar(128)", + "primaryKey": false, + "notNull": true + }, + "title": { + "name": "title", + "type": "varchar(128)", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "default": "'todo'" + }, + "label": { + "name": "label", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "default": "'bug'" + }, + "priority": { + "name": "priority", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "default": "'low'" + }, + "archived": { + "name": "archived", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "current_timestamp" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "tasks_code_unique": { + "name": "tasks_code_unique", + "nullsNotDistinct": false, + "columns": [ + "code" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.vendor_candidate_logs": { + "name": "vendor_candidate_logs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "vendor_candidate_id": { + "name": "vendor_candidate_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "action": { + "name": "action", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "old_status": { + "name": "old_status", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "new_status": { + "name": "new_status", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "comment": { + "name": "comment", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "vendor_candidate_logs_vendor_candidate_id_vendor_candidates_id_fk": { + "name": "vendor_candidate_logs_vendor_candidate_id_vendor_candidates_id_fk", + "tableFrom": "vendor_candidate_logs", + "tableTo": "vendor_candidates", + "columnsFrom": [ + "vendor_candidate_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "vendor_candidate_logs_user_id_users_id_fk": { + "name": "vendor_candidate_logs_user_id_users_id_fk", + "tableFrom": "vendor_candidate_logs", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.vendors_logs": { + "name": "vendors_logs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "action": { + "name": "action", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "old_status": { + "name": "old_status", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "new_status": { + "name": "new_status", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "comment": { + "name": "comment", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "vendors_logs_vendor_id_vendors_id_fk": { + "name": "vendors_logs_vendor_id_vendors_id_fk", + "tableFrom": "vendors_logs", + "tableTo": "vendors", + "columnsFrom": [ + "vendor_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "vendors_logs_user_id_users_id_fk": { + "name": "vendors_logs_user_id_users_id_fk", + "tableFrom": "vendors_logs", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.basic_contract": { + "name": "basic_contract", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "basic_contract_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "template_id": { + "name": "template_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "requested_by": { + "name": "requested_by", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'PENDING'" + }, + "file_name": { + "name": "file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "file_path": { + "name": "file_path", + "type": "varchar(1024)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "completed_at": { + "name": "completed_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": { + "basic_contract_template_id_basic_contract_templates_id_fk": { + "name": "basic_contract_template_id_basic_contract_templates_id_fk", + "tableFrom": "basic_contract", + "tableTo": "basic_contract_templates", + "columnsFrom": [ + "template_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "basic_contract_vendor_id_vendors_id_fk": { + "name": "basic_contract_vendor_id_vendors_id_fk", + "tableFrom": "basic_contract", + "tableTo": "vendors", + "columnsFrom": [ + "vendor_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "basic_contract_requested_by_users_id_fk": { + "name": "basic_contract_requested_by_users_id_fk", + "tableFrom": "basic_contract", + "tableTo": "users", + "columnsFrom": [ + "requested_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.basic_contract_templates": { + "name": "basic_contract_templates", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "basic_contract_templates_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "template_name": { + "name": "template_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "revision": { + "name": "revision", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 1 + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'ACTIVE'" + }, + "file_name": { + "name": "file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "file_path": { + "name": "file_path", + "type": "varchar(1024)", + "primaryKey": false, + "notNull": false + }, + "validity_period": { + "name": "validity_period", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "legal_review_required": { + "name": "legal_review_required", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "created_by": { + "name": "created_by", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_by": { + "name": "updated_by", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "disposed_at": { + "name": "disposed_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "restored_at": { + "name": "restored_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": { + "basic_contract_templates_created_by_users_id_fk": { + "name": "basic_contract_templates_created_by_users_id_fk", + "tableFrom": "basic_contract_templates", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "basic_contract_templates_updated_by_users_id_fk": { + "name": "basic_contract_templates_updated_by_users_id_fk", + "tableFrom": "basic_contract_templates", + "tableTo": "users", + "columnsFrom": [ + "updated_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "template_name_revision_unique": { + "name": "template_name_revision_unique", + "nullsNotDistinct": false, + "columns": [ + "template_name", + "revision" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.incoterms": { + "name": "incoterms", + "schema": "", + "columns": { + "code": { + "name": "code", + "type": "varchar(20)", + "primaryKey": true, + "notNull": true + }, + "description": { + "name": "description", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.payment_terms": { + "name": "payment_terms", + "schema": "", + "columns": { + "code": { + "name": "code", + "type": "varchar(50)", + "primaryKey": true, + "notNull": true + }, + "description": { + "name": "description", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.place_of_shipping": { + "name": "place_of_shipping", + "schema": "", + "columns": { + "code": { + "name": "code", + "type": "varchar(20)", + "primaryKey": true, + "notNull": true + }, + "description": { + "name": "description", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pr_items": { + "name": "pr_items", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "procurement_rfqs_id": { + "name": "procurement_rfqs_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "rfq_item": { + "name": "rfq_item", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "pr_item": { + "name": "pr_item", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "pr_no": { + "name": "pr_no", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "material_code": { + "name": "material_code", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "material_category": { + "name": "material_category", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "acc": { + "name": "acc", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "material_description": { + "name": "material_description", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "size": { + "name": "size", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "delivery_date": { + "name": "delivery_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "quantity": { + "name": "quantity", + "type": "numeric(12, 2)", + "primaryKey": false, + "notNull": false, + "default": 1 + }, + "uom": { + "name": "uom", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "gross_weight": { + "name": "gross_weight", + "type": "numeric(12, 2)", + "primaryKey": false, + "notNull": false, + "default": 1 + }, + "gw_uom": { + "name": "gw_uom", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "spec_no": { + "name": "spec_no", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "spec_url": { + "name": "spec_url", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "tracking_no": { + "name": "tracking_no", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "major_yn": { + "name": "major_yn", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "project_def": { + "name": "project_def", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "project_sc": { + "name": "project_sc", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "project_kl": { + "name": "project_kl", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "project_lc": { + "name": "project_lc", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "project_dl": { + "name": "project_dl", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "remark": { + "name": "remark", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": { + "pr_items_procurement_rfqs_id_procurement_rfqs_id_fk": { + "name": "pr_items_procurement_rfqs_id_procurement_rfqs_id_fk", + "tableFrom": "pr_items", + "tableTo": "procurement_rfqs", + "columnsFrom": [ + "procurement_rfqs_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.procurement_attachments": { + "name": "procurement_attachments", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "attachment_type": { + "name": "attachment_type", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "procurement_rfqs_id": { + "name": "procurement_rfqs_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "procurement_rfq_details_id": { + "name": "procurement_rfq_details_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "file_name": { + "name": "file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "original_file_name": { + "name": "original_file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "file_path": { + "name": "file_path", + "type": "varchar(512)", + "primaryKey": false, + "notNull": true + }, + "file_size": { + "name": "file_size", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "file_type": { + "name": "file_type", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "description": { + "name": "description", + "type": "varchar(500)", + "primaryKey": false, + "notNull": false + }, + "created_by": { + "name": "created_by", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "procurement_attachments_procurement_rfqs_id_procurement_rfqs_id_fk": { + "name": "procurement_attachments_procurement_rfqs_id_procurement_rfqs_id_fk", + "tableFrom": "procurement_attachments", + "tableTo": "procurement_rfqs", + "columnsFrom": [ + "procurement_rfqs_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "procurement_attachments_procurement_rfq_details_id_procurement_rfq_details_id_fk": { + "name": "procurement_attachments_procurement_rfq_details_id_procurement_rfq_details_id_fk", + "tableFrom": "procurement_attachments", + "tableTo": "procurement_rfq_details", + "columnsFrom": [ + "procurement_rfq_details_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "procurement_attachments_created_by_users_id_fk": { + "name": "procurement_attachments_created_by_users_id_fk", + "tableFrom": "procurement_attachments", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "attachment_type_check": { + "name": "attachment_type_check", + "value": "\"procurement_attachments\".\"procurement_rfqs_id\" IS NOT NULL OR \"procurement_attachments\".\"procurement_rfq_details_id\" IS NOT NULL" + } + }, + "isRLSEnabled": false + }, + "public.procurement_quotation_items": { + "name": "procurement_quotation_items", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "quotation_id": { + "name": "quotation_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "pr_item_id": { + "name": "pr_item_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "material_code": { + "name": "material_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "material_description": { + "name": "material_description", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "quantity": { + "name": "quantity", + "type": "numeric", + "primaryKey": false, + "notNull": true + }, + "uom": { + "name": "uom", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "unit_price": { + "name": "unit_price", + "type": "numeric", + "primaryKey": false, + "notNull": true + }, + "total_price": { + "name": "total_price", + "type": "numeric", + "primaryKey": false, + "notNull": true + }, + "currency": { + "name": "currency", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false, + "default": "'USD'" + }, + "vendor_material_code": { + "name": "vendor_material_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "vendor_material_description": { + "name": "vendor_material_description", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "delivery_date": { + "name": "delivery_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "lead_time_in_days": { + "name": "lead_time_in_days", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "tax_rate": { + "name": "tax_rate", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "tax_amount": { + "name": "tax_amount", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "discount_rate": { + "name": "discount_rate", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "discount_amount": { + "name": "discount_amount", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "remark": { + "name": "remark", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_alternative": { + "name": "is_alternative", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "is_recommended": { + "name": "is_recommended", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "procurement_quotation_items_quotation_id_procurement_vendor_quotations_id_fk": { + "name": "procurement_quotation_items_quotation_id_procurement_vendor_quotations_id_fk", + "tableFrom": "procurement_quotation_items", + "tableTo": "procurement_vendor_quotations", + "columnsFrom": [ + "quotation_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "procurement_quotation_items_pr_item_id_pr_items_id_fk": { + "name": "procurement_quotation_items_pr_item_id_pr_items_id_fk", + "tableFrom": "procurement_quotation_items", + "tableTo": "pr_items", + "columnsFrom": [ + "pr_item_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.procurement_rfq_attachments": { + "name": "procurement_rfq_attachments", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "rfq_id": { + "name": "rfq_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "comment_id": { + "name": "comment_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "quotation_id": { + "name": "quotation_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "file_name": { + "name": "file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "file_size": { + "name": "file_size", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "file_type": { + "name": "file_type", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "file_path": { + "name": "file_path", + "type": "varchar(500)", + "primaryKey": false, + "notNull": true + }, + "is_vendor_upload": { + "name": "is_vendor_upload", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "uploaded_by": { + "name": "uploaded_by", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "uploaded_at": { + "name": "uploaded_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "procurement_rfq_attachments_rfq_id_procurement_rfqs_id_fk": { + "name": "procurement_rfq_attachments_rfq_id_procurement_rfqs_id_fk", + "tableFrom": "procurement_rfq_attachments", + "tableTo": "procurement_rfqs", + "columnsFrom": [ + "rfq_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "procurement_rfq_attachments_comment_id_procurement_rfq_comments_id_fk": { + "name": "procurement_rfq_attachments_comment_id_procurement_rfq_comments_id_fk", + "tableFrom": "procurement_rfq_attachments", + "tableTo": "procurement_rfq_comments", + "columnsFrom": [ + "comment_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "procurement_rfq_attachments_quotation_id_procurement_vendor_quotations_id_fk": { + "name": "procurement_rfq_attachments_quotation_id_procurement_vendor_quotations_id_fk", + "tableFrom": "procurement_rfq_attachments", + "tableTo": "procurement_vendor_quotations", + "columnsFrom": [ + "quotation_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "procurement_rfq_attachments_uploaded_by_users_id_fk": { + "name": "procurement_rfq_attachments_uploaded_by_users_id_fk", + "tableFrom": "procurement_rfq_attachments", + "tableTo": "users", + "columnsFrom": [ + "uploaded_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "procurement_rfq_attachments_vendor_id_vendors_id_fk": { + "name": "procurement_rfq_attachments_vendor_id_vendors_id_fk", + "tableFrom": "procurement_rfq_attachments", + "tableTo": "vendors", + "columnsFrom": [ + "vendor_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.procurement_rfq_comments": { + "name": "procurement_rfq_comments", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "rfq_id": { + "name": "rfq_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "is_vendor_comment": { + "name": "is_vendor_comment", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "is_read": { + "name": "is_read", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "parent_comment_id": { + "name": "parent_comment_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "procurement_rfq_comments_rfq_id_procurement_rfqs_id_fk": { + "name": "procurement_rfq_comments_rfq_id_procurement_rfqs_id_fk", + "tableFrom": "procurement_rfq_comments", + "tableTo": "procurement_rfqs", + "columnsFrom": [ + "rfq_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "procurement_rfq_comments_vendor_id_vendors_id_fk": { + "name": "procurement_rfq_comments_vendor_id_vendors_id_fk", + "tableFrom": "procurement_rfq_comments", + "tableTo": "vendors", + "columnsFrom": [ + "vendor_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "procurement_rfq_comments_user_id_users_id_fk": { + "name": "procurement_rfq_comments_user_id_users_id_fk", + "tableFrom": "procurement_rfq_comments", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "procurement_rfq_comments_parent_comment_id_procurement_rfq_comments_id_fk": { + "name": "procurement_rfq_comments_parent_comment_id_procurement_rfq_comments_id_fk", + "tableFrom": "procurement_rfq_comments", + "tableTo": "procurement_rfq_comments", + "columnsFrom": [ + "parent_comment_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.procurement_rfq_details": { + "name": "procurement_rfq_details", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "procurement_rfqs_id": { + "name": "procurement_rfqs_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "vendors_id": { + "name": "vendors_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "currency": { + "name": "currency", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false, + "default": "'USD'" + }, + "payment_terms_code": { + "name": "payment_terms_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "incoterms_code": { + "name": "incoterms_code", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "incoterms_detail": { + "name": "incoterms_detail", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "delivery_date": { + "name": "delivery_date", + "type": "date", + "primaryKey": false, + "notNull": true + }, + "tax_code": { + "name": "tax_code", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "default": "'VV'" + }, + "place_of_shipping": { + "name": "place_of_shipping", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "place_of_destination": { + "name": "place_of_destination", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "remark": { + "name": "remark", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "cancel_reason": { + "name": "cancel_reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "updated_by": { + "name": "updated_by", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "material_price_related_yn": { + "name": "material_price_related_yn", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + } + }, + "indexes": {}, + "foreignKeys": { + "procurement_rfq_details_procurement_rfqs_id_procurement_rfqs_id_fk": { + "name": "procurement_rfq_details_procurement_rfqs_id_procurement_rfqs_id_fk", + "tableFrom": "procurement_rfq_details", + "tableTo": "procurement_rfqs", + "columnsFrom": [ + "procurement_rfqs_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "procurement_rfq_details_vendors_id_vendors_id_fk": { + "name": "procurement_rfq_details_vendors_id_vendors_id_fk", + "tableFrom": "procurement_rfq_details", + "tableTo": "vendors", + "columnsFrom": [ + "vendors_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "procurement_rfq_details_payment_terms_code_payment_terms_code_fk": { + "name": "procurement_rfq_details_payment_terms_code_payment_terms_code_fk", + "tableFrom": "procurement_rfq_details", + "tableTo": "payment_terms", + "columnsFrom": [ + "payment_terms_code" + ], + "columnsTo": [ + "code" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "procurement_rfq_details_incoterms_code_incoterms_code_fk": { + "name": "procurement_rfq_details_incoterms_code_incoterms_code_fk", + "tableFrom": "procurement_rfq_details", + "tableTo": "incoterms", + "columnsFrom": [ + "incoterms_code" + ], + "columnsTo": [ + "code" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "procurement_rfq_details_updated_by_users_id_fk": { + "name": "procurement_rfq_details_updated_by_users_id_fk", + "tableFrom": "procurement_rfq_details", + "tableTo": "users", + "columnsFrom": [ + "updated_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.procurement_rfqs": { + "name": "procurement_rfqs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "rfq_code": { + "name": "rfq_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "project_id": { + "name": "project_id", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "series": { + "name": "series", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "item_code": { + "name": "item_code", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "item_name": { + "name": "item_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "due_date": { + "name": "due_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "rfq_send_date": { + "name": "rfq_send_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "default": "'RFQ Created'" + }, + "rfq_sealed_yn": { + "name": "rfq_sealed_yn", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "pic_code": { + "name": "pic_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "remark": { + "name": "remark", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "sent_by": { + "name": "sent_by", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_by": { + "name": "created_by", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "updated_by": { + "name": "updated_by", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "procurement_rfqs_sent_by_users_id_fk": { + "name": "procurement_rfqs_sent_by_users_id_fk", + "tableFrom": "procurement_rfqs", + "tableTo": "users", + "columnsFrom": [ + "sent_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "procurement_rfqs_created_by_users_id_fk": { + "name": "procurement_rfqs_created_by_users_id_fk", + "tableFrom": "procurement_rfqs", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "procurement_rfqs_updated_by_users_id_fk": { + "name": "procurement_rfqs_updated_by_users_id_fk", + "tableFrom": "procurement_rfqs", + "tableTo": "users", + "columnsFrom": [ + "updated_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "procurement_rfqs_rfq_code_unique": { + "name": "procurement_rfqs_rfq_code_unique", + "nullsNotDistinct": false, + "columns": [ + "rfq_code" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.procurement_vendor_quotations": { + "name": "procurement_vendor_quotations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "rfq_id": { + "name": "rfq_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "quotation_code": { + "name": "quotation_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "quotation_version": { + "name": "quotation_version", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 1 + }, + "total_items_count": { + "name": "total_items_count", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "sub_total": { + "name": "sub_total", + "type": "numeric", + "primaryKey": false, + "notNull": false, + "default": "'0'" + }, + "tax_total": { + "name": "tax_total", + "type": "numeric", + "primaryKey": false, + "notNull": false, + "default": "'0'" + }, + "discount_total": { + "name": "discount_total", + "type": "numeric", + "primaryKey": false, + "notNull": false, + "default": "'0'" + }, + "total_price": { + "name": "total_price", + "type": "numeric", + "primaryKey": false, + "notNull": false, + "default": "'0'" + }, + "currency": { + "name": "currency", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false, + "default": "'USD'" + }, + "valid_until": { + "name": "valid_until", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "estimated_delivery_date": { + "name": "estimated_delivery_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "payment_terms_code": { + "name": "payment_terms_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "incoterms_code": { + "name": "incoterms_code", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "incoterms_detail": { + "name": "incoterms_detail", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "default": "'Draft'" + }, + "remark": { + "name": "remark", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "rejection_reason": { + "name": "rejection_reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "submitted_at": { + "name": "submitted_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "accepted_at": { + "name": "accepted_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "created_by": { + "name": "created_by", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "updated_by": { + "name": "updated_by", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "procurement_vendor_quotations_rfq_id_procurement_rfqs_id_fk": { + "name": "procurement_vendor_quotations_rfq_id_procurement_rfqs_id_fk", + "tableFrom": "procurement_vendor_quotations", + "tableTo": "procurement_rfqs", + "columnsFrom": [ + "rfq_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "procurement_vendor_quotations_vendor_id_vendors_id_fk": { + "name": "procurement_vendor_quotations_vendor_id_vendors_id_fk", + "tableFrom": "procurement_vendor_quotations", + "tableTo": "vendors", + "columnsFrom": [ + "vendor_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "procurement_vendor_quotations_payment_terms_code_payment_terms_code_fk": { + "name": "procurement_vendor_quotations_payment_terms_code_payment_terms_code_fk", + "tableFrom": "procurement_vendor_quotations", + "tableTo": "payment_terms", + "columnsFrom": [ + "payment_terms_code" + ], + "columnsTo": [ + "code" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "procurement_vendor_quotations_incoterms_code_incoterms_code_fk": { + "name": "procurement_vendor_quotations_incoterms_code_incoterms_code_fk", + "tableFrom": "procurement_vendor_quotations", + "tableTo": "incoterms", + "columnsFrom": [ + "incoterms_code" + ], + "columnsTo": [ + "code" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.preset_shares": { + "name": "preset_shares", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "preset_id": { + "name": "preset_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "shared_with_user_id": { + "name": "shared_with_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "permission": { + "name": "permission", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'read'" + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "preset_shares_preset_id_table_presets_id_fk": { + "name": "preset_shares_preset_id_table_presets_id_fk", + "tableFrom": "preset_shares", + "tableTo": "table_presets", + "columnsFrom": [ + "preset_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.table_presets": { + "name": "table_presets", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "table_id": { + "name": "table_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "settings": { + "name": "settings", + "type": "json", + "primaryKey": false, + "notNull": true + }, + "is_default": { + "name": "is_default", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_shared": { + "name": "is_shared", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_by": { + "name": "created_by", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.tech_sales_attachments": { + "name": "tech_sales_attachments", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "attachment_type": { + "name": "attachment_type", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "tech_sales_rfq_id": { + "name": "tech_sales_rfq_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "file_name": { + "name": "file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "original_file_name": { + "name": "original_file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "file_path": { + "name": "file_path", + "type": "varchar(512)", + "primaryKey": false, + "notNull": true + }, + "file_size": { + "name": "file_size", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "file_type": { + "name": "file_type", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "description": { + "name": "description", + "type": "varchar(500)", + "primaryKey": false, + "notNull": false + }, + "created_by": { + "name": "created_by", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "tech_sales_attachments_tech_sales_rfq_id_tech_sales_rfqs_id_fk": { + "name": "tech_sales_attachments_tech_sales_rfq_id_tech_sales_rfqs_id_fk", + "tableFrom": "tech_sales_attachments", + "tableTo": "tech_sales_rfqs", + "columnsFrom": [ + "tech_sales_rfq_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "tech_sales_attachments_created_by_users_id_fk": { + "name": "tech_sales_attachments_created_by_users_id_fk", + "tableFrom": "tech_sales_attachments", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.tech_sales_contact_possible_items": { + "name": "tech_sales_contact_possible_items", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "contact_id": { + "name": "contact_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "vendor_possible_item_id": { + "name": "vendor_possible_item_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "tech_sales_contact_possible_items_contact_id_tech_vendor_contacts_id_fk": { + "name": "tech_sales_contact_possible_items_contact_id_tech_vendor_contacts_id_fk", + "tableFrom": "tech_sales_contact_possible_items", + "tableTo": "tech_vendor_contacts", + "columnsFrom": [ + "contact_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "tech_sales_contact_possible_items_vendor_possible_item_id_tech_vendor_possible_items_id_fk": { + "name": "tech_sales_contact_possible_items_vendor_possible_item_id_tech_vendor_possible_items_id_fk", + "tableFrom": "tech_sales_contact_possible_items", + "tableTo": "tech_vendor_possible_items", + "columnsFrom": [ + "vendor_possible_item_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.tech_sales_rfq_comment_attachments": { + "name": "tech_sales_rfq_comment_attachments", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "rfq_id": { + "name": "rfq_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "comment_id": { + "name": "comment_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "quotation_id": { + "name": "quotation_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "file_name": { + "name": "file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "original_file_name": { + "name": "original_file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "file_size": { + "name": "file_size", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "file_type": { + "name": "file_type", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "file_path": { + "name": "file_path", + "type": "varchar(500)", + "primaryKey": false, + "notNull": true + }, + "is_vendor_upload": { + "name": "is_vendor_upload", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "uploaded_by": { + "name": "uploaded_by", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "uploaded_at": { + "name": "uploaded_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "tech_sales_rfq_comment_attachments_rfq_id_tech_sales_rfqs_id_fk": { + "name": "tech_sales_rfq_comment_attachments_rfq_id_tech_sales_rfqs_id_fk", + "tableFrom": "tech_sales_rfq_comment_attachments", + "tableTo": "tech_sales_rfqs", + "columnsFrom": [ + "rfq_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "tech_sales_rfq_comment_attachments_comment_id_tech_sales_rfq_comments_id_fk": { + "name": "tech_sales_rfq_comment_attachments_comment_id_tech_sales_rfq_comments_id_fk", + "tableFrom": "tech_sales_rfq_comment_attachments", + "tableTo": "tech_sales_rfq_comments", + "columnsFrom": [ + "comment_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "tech_sales_rfq_comment_attachments_quotation_id_tech_sales_vendor_quotations_id_fk": { + "name": "tech_sales_rfq_comment_attachments_quotation_id_tech_sales_vendor_quotations_id_fk", + "tableFrom": "tech_sales_rfq_comment_attachments", + "tableTo": "tech_sales_vendor_quotations", + "columnsFrom": [ + "quotation_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "tech_sales_rfq_comment_attachments_uploaded_by_users_id_fk": { + "name": "tech_sales_rfq_comment_attachments_uploaded_by_users_id_fk", + "tableFrom": "tech_sales_rfq_comment_attachments", + "tableTo": "users", + "columnsFrom": [ + "uploaded_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "tech_sales_rfq_comment_attachments_vendor_id_tech_vendors_id_fk": { + "name": "tech_sales_rfq_comment_attachments_vendor_id_tech_vendors_id_fk", + "tableFrom": "tech_sales_rfq_comment_attachments", + "tableTo": "tech_vendors", + "columnsFrom": [ + "vendor_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.tech_sales_rfq_comments": { + "name": "tech_sales_rfq_comments", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "rfq_id": { + "name": "rfq_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "is_vendor_comment": { + "name": "is_vendor_comment", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "is_read": { + "name": "is_read", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "parent_comment_id": { + "name": "parent_comment_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "tech_sales_rfq_comments_rfq_id_tech_sales_rfqs_id_fk": { + "name": "tech_sales_rfq_comments_rfq_id_tech_sales_rfqs_id_fk", + "tableFrom": "tech_sales_rfq_comments", + "tableTo": "tech_sales_rfqs", + "columnsFrom": [ + "rfq_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "tech_sales_rfq_comments_vendor_id_tech_vendors_id_fk": { + "name": "tech_sales_rfq_comments_vendor_id_tech_vendors_id_fk", + "tableFrom": "tech_sales_rfq_comments", + "tableTo": "tech_vendors", + "columnsFrom": [ + "vendor_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "tech_sales_rfq_comments_user_id_users_id_fk": { + "name": "tech_sales_rfq_comments_user_id_users_id_fk", + "tableFrom": "tech_sales_rfq_comments", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "tech_sales_rfq_comments_parent_comment_id_tech_sales_rfq_comments_id_fk": { + "name": "tech_sales_rfq_comments_parent_comment_id_tech_sales_rfq_comments_id_fk", + "tableFrom": "tech_sales_rfq_comments", + "tableTo": "tech_sales_rfq_comments", + "columnsFrom": [ + "parent_comment_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.tech_sales_rfq_items": { + "name": "tech_sales_rfq_items", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "rfq_id": { + "name": "rfq_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "item_shipbuilding_id": { + "name": "item_shipbuilding_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "item_offshore_top_id": { + "name": "item_offshore_top_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "item_offshore_hull_id": { + "name": "item_offshore_hull_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "item_type": { + "name": "item_type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "tech_sales_rfq_items_rfq_id_tech_sales_rfqs_id_fk": { + "name": "tech_sales_rfq_items_rfq_id_tech_sales_rfqs_id_fk", + "tableFrom": "tech_sales_rfq_items", + "tableTo": "tech_sales_rfqs", + "columnsFrom": [ + "rfq_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "tech_sales_rfq_items_item_shipbuilding_id_item_shipbuilding_id_fk": { + "name": "tech_sales_rfq_items_item_shipbuilding_id_item_shipbuilding_id_fk", + "tableFrom": "tech_sales_rfq_items", + "tableTo": "item_shipbuilding", + "columnsFrom": [ + "item_shipbuilding_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "tech_sales_rfq_items_item_offshore_top_id_item_offshore_top_id_fk": { + "name": "tech_sales_rfq_items_item_offshore_top_id_item_offshore_top_id_fk", + "tableFrom": "tech_sales_rfq_items", + "tableTo": "item_offshore_top", + "columnsFrom": [ + "item_offshore_top_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "tech_sales_rfq_items_item_offshore_hull_id_item_offshore_hull_id_fk": { + "name": "tech_sales_rfq_items_item_offshore_hull_id_item_offshore_hull_id_fk", + "tableFrom": "tech_sales_rfq_items", + "tableTo": "item_offshore_hull", + "columnsFrom": [ + "item_offshore_hull_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.tech_sales_rfqs": { + "name": "tech_sales_rfqs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "rfq_code": { + "name": "rfq_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "bidding_project_id": { + "name": "bidding_project_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "remark": { + "name": "remark", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "material_code": { + "name": "material_code", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "due_date": { + "name": "due_date", + "type": "date", + "primaryKey": false, + "notNull": true + }, + "rfq_send_date": { + "name": "rfq_send_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "default": "'RFQ Created'" + }, + "pic_code": { + "name": "pic_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "sent_by": { + "name": "sent_by", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_by": { + "name": "created_by", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "updated_by": { + "name": "updated_by", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "cancel_reason": { + "name": "cancel_reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "rfq_type": { + "name": "rfq_type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true, + "default": "'SHIP'" + } + }, + "indexes": {}, + "foreignKeys": { + "tech_sales_rfqs_bidding_project_id_bidding_projects_id_fk": { + "name": "tech_sales_rfqs_bidding_project_id_bidding_projects_id_fk", + "tableFrom": "tech_sales_rfqs", + "tableTo": "bidding_projects", + "columnsFrom": [ + "bidding_project_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "tech_sales_rfqs_sent_by_users_id_fk": { + "name": "tech_sales_rfqs_sent_by_users_id_fk", + "tableFrom": "tech_sales_rfqs", + "tableTo": "users", + "columnsFrom": [ + "sent_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "tech_sales_rfqs_created_by_users_id_fk": { + "name": "tech_sales_rfqs_created_by_users_id_fk", + "tableFrom": "tech_sales_rfqs", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "tech_sales_rfqs_updated_by_users_id_fk": { + "name": "tech_sales_rfqs_updated_by_users_id_fk", + "tableFrom": "tech_sales_rfqs", + "tableTo": "users", + "columnsFrom": [ + "updated_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "tech_sales_rfqs_rfq_code_unique": { + "name": "tech_sales_rfqs_rfq_code_unique", + "nullsNotDistinct": false, + "columns": [ + "rfq_code" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.tech_sales_vendor_quotation_attachments": { + "name": "tech_sales_vendor_quotation_attachments", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "quotation_id": { + "name": "quotation_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "revision_id": { + "name": "revision_id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "file_name": { + "name": "file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "original_file_name": { + "name": "original_file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "file_size": { + "name": "file_size", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "file_type": { + "name": "file_type", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "file_path": { + "name": "file_path", + "type": "varchar(500)", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "uploaded_by": { + "name": "uploaded_by", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "is_vendor_upload": { + "name": "is_vendor_upload", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "tech_sales_vendor_quotation_attachments_quotation_id_tech_sales_vendor_quotations_id_fk": { + "name": "tech_sales_vendor_quotation_attachments_quotation_id_tech_sales_vendor_quotations_id_fk", + "tableFrom": "tech_sales_vendor_quotation_attachments", + "tableTo": "tech_sales_vendor_quotations", + "columnsFrom": [ + "quotation_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "tech_sales_vendor_quotation_attachments_uploaded_by_users_id_fk": { + "name": "tech_sales_vendor_quotation_attachments_uploaded_by_users_id_fk", + "tableFrom": "tech_sales_vendor_quotation_attachments", + "tableTo": "users", + "columnsFrom": [ + "uploaded_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "tech_sales_vendor_quotation_attachments_vendor_id_tech_vendors_id_fk": { + "name": "tech_sales_vendor_quotation_attachments_vendor_id_tech_vendors_id_fk", + "tableFrom": "tech_sales_vendor_quotation_attachments", + "tableTo": "tech_vendors", + "columnsFrom": [ + "vendor_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.tech_sales_vendor_quotation_contacts": { + "name": "tech_sales_vendor_quotation_contacts", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "quotation_id": { + "name": "quotation_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "contact_id": { + "name": "contact_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.tech_sales_vendor_quotation_revisions": { + "name": "tech_sales_vendor_quotation_revisions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "quotation_id": { + "name": "quotation_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "version": { + "name": "version", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "snapshot": { + "name": "snapshot", + "type": "json", + "primaryKey": false, + "notNull": true + }, + "change_reason": { + "name": "change_reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "revision_note": { + "name": "revision_note", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "revised_by": { + "name": "revised_by", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "revised_at": { + "name": "revised_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "tech_sales_quotation_revisions_quotation_version_idx": { + "name": "tech_sales_quotation_revisions_quotation_version_idx", + "columns": [ + { + "expression": "quotation_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "version", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "tech_sales_vendor_quotation_revisions_quotation_id_tech_sales_vendor_quotations_id_fk": { + "name": "tech_sales_vendor_quotation_revisions_quotation_id_tech_sales_vendor_quotations_id_fk", + "tableFrom": "tech_sales_vendor_quotation_revisions", + "tableTo": "tech_sales_vendor_quotations", + "columnsFrom": [ + "quotation_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.tech_sales_vendor_quotations": { + "name": "tech_sales_vendor_quotations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "rfq_id": { + "name": "rfq_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "quotation_code": { + "name": "quotation_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "quotation_version": { + "name": "quotation_version", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "total_price": { + "name": "total_price", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "currency": { + "name": "currency", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "valid_until": { + "name": "valid_until", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "vendor_flags": { + "name": "vendor_flags", + "type": "json", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "default": "'Assigned'" + }, + "remark": { + "name": "remark", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "rejection_reason": { + "name": "rejection_reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "submitted_at": { + "name": "submitted_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "accepted_at": { + "name": "accepted_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "created_by": { + "name": "created_by", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "updated_by": { + "name": "updated_by", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "tech_sales_vendor_quotations_rfq_id_tech_sales_rfqs_id_fk": { + "name": "tech_sales_vendor_quotations_rfq_id_tech_sales_rfqs_id_fk", + "tableFrom": "tech_sales_vendor_quotations", + "tableTo": "tech_sales_rfqs", + "columnsFrom": [ + "rfq_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "tech_sales_vendor_quotations_vendor_id_tech_vendors_id_fk": { + "name": "tech_sales_vendor_quotations_vendor_id_tech_vendors_id_fk", + "tableFrom": "tech_sales_vendor_quotations", + "tableTo": "tech_vendors", + "columnsFrom": [ + "vendor_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.ocr_rotation_attempts": { + "name": "ocr_rotation_attempts", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "session_id": { + "name": "session_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "rotation": { + "name": "rotation", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "confidence": { + "name": "confidence", + "type": "numeric(5, 4)", + "primaryKey": false, + "notNull": false + }, + "tables_found": { + "name": "tables_found", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "text_quality": { + "name": "text_quality", + "type": "numeric(5, 4)", + "primaryKey": false, + "notNull": false + }, + "keyword_count": { + "name": "keyword_count", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "score": { + "name": "score", + "type": "numeric(5, 4)", + "primaryKey": false, + "notNull": false + }, + "extracted_rows_count": { + "name": "extracted_rows_count", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "ocr_rotation_attempts_session_id_ocr_sessions_id_fk": { + "name": "ocr_rotation_attempts_session_id_ocr_sessions_id_fk", + "tableFrom": "ocr_rotation_attempts", + "tableTo": "ocr_sessions", + "columnsFrom": [ + "session_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.ocr_rows": { + "name": "ocr_rows", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "table_id": { + "name": "table_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "session_id": { + "name": "session_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "row_index": { + "name": "row_index", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "report_no": { + "name": "report_no", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "file_name": { + "name": "file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "inspection_date": { + "name": "inspection_date", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "no": { + "name": "no", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "identification_no": { + "name": "identification_no", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "tag_no": { + "name": "tag_no", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "joint_no": { + "name": "joint_no", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "joint_type": { + "name": "joint_type", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "welding_date": { + "name": "welding_date", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "confidence": { + "name": "confidence", + "type": "numeric(5, 4)", + "primaryKey": false, + "notNull": false + }, + "source_table": { + "name": "source_table", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "source_row": { + "name": "source_row", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "idx_ocr_report_no_unique": { + "name": "idx_ocr_report_no_unique", + "columns": [ + { + "expression": "report_no", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "no", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "tag_no", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "joint_no", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "joint_type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "ocr_rows_table_id_ocr_tables_id_fk": { + "name": "ocr_rows_table_id_ocr_tables_id_fk", + "tableFrom": "ocr_rows", + "tableTo": "ocr_tables", + "columnsFrom": [ + "table_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "ocr_rows_session_id_ocr_sessions_id_fk": { + "name": "ocr_rows_session_id_ocr_sessions_id_fk", + "tableFrom": "ocr_rows", + "tableTo": "ocr_sessions", + "columnsFrom": [ + "session_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "ocr_rows_user_id_users_id_fk": { + "name": "ocr_rows_user_id_users_id_fk", + "tableFrom": "ocr_rows", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.ocr_sessions": { + "name": "ocr_sessions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "file_name": { + "name": "file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "file_size": { + "name": "file_size", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "file_type": { + "name": "file_type", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "processing_time": { + "name": "processing_time", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "best_rotation": { + "name": "best_rotation", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "total_tables": { + "name": "total_tables", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "total_rows": { + "name": "total_rows", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "image_enhanced": { + "name": "image_enhanced", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "pdf_converted": { + "name": "pdf_converted", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "success": { + "name": "success", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "error_message": { + "name": "error_message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "warnings": { + "name": "warnings", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.ocr_tables": { + "name": "ocr_tables", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "session_id": { + "name": "session_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "table_index": { + "name": "table_index", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "row_count": { + "name": "row_count", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "ocr_tables_session_id_ocr_sessions_id_fk": { + "name": "ocr_tables_session_id_ocr_sessions_id_fk", + "tableFrom": "ocr_tables", + "tableTo": "ocr_sessions", + "columnsFrom": [ + "session_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.b_rfq_attachment_revisions": { + "name": "b_rfq_attachment_revisions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "attachment_id": { + "name": "attachment_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "revision_no": { + "name": "revision_no", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "revision_comment": { + "name": "revision_comment", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_latest": { + "name": "is_latest", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "file_name": { + "name": "file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "original_file_name": { + "name": "original_file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "file_path": { + "name": "file_path", + "type": "varchar(512)", + "primaryKey": false, + "notNull": true + }, + "file_size": { + "name": "file_size", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "file_type": { + "name": "file_type", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "created_by": { + "name": "created_by", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "latest_revision_idx": { + "name": "latest_revision_idx", + "columns": [ + { + "expression": "attachment_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "is_latest", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"b_rfq_attachment_revisions\".\"is_latest\" = $1", + "concurrently": false, + "method": "btree", + "with": {} + }, + "attachment_revision_idx": { + "name": "attachment_revision_idx", + "columns": [ + { + "expression": "attachment_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "revision_no", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "b_rfq_attachment_revisions_attachment_id_b_rfq_attachments_id_fk": { + "name": "b_rfq_attachment_revisions_attachment_id_b_rfq_attachments_id_fk", + "tableFrom": "b_rfq_attachment_revisions", + "tableTo": "b_rfq_attachments", + "columnsFrom": [ + "attachment_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "b_rfq_attachment_revisions_created_by_users_id_fk": { + "name": "b_rfq_attachment_revisions_created_by_users_id_fk", + "tableFrom": "b_rfq_attachment_revisions", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.b_rfqs": { + "name": "b_rfqs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "rfq_code": { + "name": "rfq_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "project_id": { + "name": "project_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "description": { + "name": "description", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "remark": { + "name": "remark", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "due_date": { + "name": "due_date", + "type": "date", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "default": "'DRAFT'" + }, + "pic_code": { + "name": "pic_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "pic_name": { + "name": "pic_name", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "eng_pic_name": { + "name": "eng_pic_name", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "project_company": { + "name": "project_company", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "project_flag": { + "name": "project_flag", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "project_site": { + "name": "project_site", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "package_no": { + "name": "package_no", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "package_name": { + "name": "package_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "created_by": { + "name": "created_by", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "updated_by": { + "name": "updated_by", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "b_rfqs_project_id_projects_id_fk": { + "name": "b_rfqs_project_id_projects_id_fk", + "tableFrom": "b_rfqs", + "tableTo": "projects", + "columnsFrom": [ + "project_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "b_rfqs_created_by_users_id_fk": { + "name": "b_rfqs_created_by_users_id_fk", + "tableFrom": "b_rfqs", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "b_rfqs_updated_by_users_id_fk": { + "name": "b_rfqs_updated_by_users_id_fk", + "tableFrom": "b_rfqs", + "tableTo": "users", + "columnsFrom": [ + "updated_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "b_rfqs_rfq_code_unique": { + "name": "b_rfqs_rfq_code_unique", + "nullsNotDistinct": false, + "columns": [ + "rfq_code" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.b_rfq_attachments": { + "name": "b_rfq_attachments", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "attachment_type": { + "name": "attachment_type", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "serial_no": { + "name": "serial_no", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "rfq_id": { + "name": "rfq_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "current_revision": { + "name": "current_revision", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true, + "default": "'Rev.0'" + }, + "latest_revision_id": { + "name": "latest_revision_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "description": { + "name": "description", + "type": "varchar(500)", + "primaryKey": false, + "notNull": false + }, + "created_by": { + "name": "created_by", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "b_rfq_attachments_rfq_id_b_rfqs_id_fk": { + "name": "b_rfq_attachments_rfq_id_b_rfqs_id_fk", + "tableFrom": "b_rfq_attachments", + "tableTo": "b_rfqs", + "columnsFrom": [ + "rfq_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "b_rfq_attachments_created_by_users_id_fk": { + "name": "b_rfq_attachments_created_by_users_id_fk", + "tableFrom": "b_rfq_attachments", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.final_rfq": { + "name": "final_rfq", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "rfq_id": { + "name": "rfq_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "final_rfq_status": { + "name": "final_rfq_status", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "default": "'DRAFT'" + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "due_date": { + "name": "due_date", + "type": "date", + "primaryKey": false, + "notNull": true + }, + "valid_date": { + "name": "valid_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "incoterms_code": { + "name": "incoterms_code", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "gtc": { + "name": "gtc", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "gtc_valid_date": { + "name": "gtc_valid_date", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "classification": { + "name": "classification", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "sparepart": { + "name": "sparepart", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "short_list": { + "name": "short_list", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "return_yn": { + "name": "return_yn", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "cp_request_yn": { + "name": "cp_request_yn", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "prject_gtc_yn": { + "name": "prject_gtc_yn", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "return_revision": { + "name": "return_revision", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "currency": { + "name": "currency", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false, + "default": "'KRW'" + }, + "payment_terms_code": { + "name": "payment_terms_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "tax_code": { + "name": "tax_code", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "default": "'VV'" + }, + "delivery_date": { + "name": "delivery_date", + "type": "date", + "primaryKey": false, + "notNull": true + }, + "place_of_shipping": { + "name": "place_of_shipping", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "place_of_destination": { + "name": "place_of_destination", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "firsttime_yn": { + "name": "firsttime_yn", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "material_price_related_yn": { + "name": "material_price_related_yn", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "remark": { + "name": "remark", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "vendor_remark": { + "name": "vendor_remark", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "final_rfq_rfq_id_b_rfqs_id_fk": { + "name": "final_rfq_rfq_id_b_rfqs_id_fk", + "tableFrom": "final_rfq", + "tableTo": "b_rfqs", + "columnsFrom": [ + "rfq_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "final_rfq_vendor_id_vendors_id_fk": { + "name": "final_rfq_vendor_id_vendors_id_fk", + "tableFrom": "final_rfq", + "tableTo": "vendors", + "columnsFrom": [ + "vendor_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "final_rfq_incoterms_code_incoterms_code_fk": { + "name": "final_rfq_incoterms_code_incoterms_code_fk", + "tableFrom": "final_rfq", + "tableTo": "incoterms", + "columnsFrom": [ + "incoterms_code" + ], + "columnsTo": [ + "code" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "final_rfq_payment_terms_code_payment_terms_code_fk": { + "name": "final_rfq_payment_terms_code_payment_terms_code_fk", + "tableFrom": "final_rfq", + "tableTo": "payment_terms", + "columnsFrom": [ + "payment_terms_code" + ], + "columnsTo": [ + "code" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.initial_rfq": { + "name": "initial_rfq", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "rfq_id": { + "name": "rfq_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "initial_rfq_status": { + "name": "initial_rfq_status", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "default": "'DRAFT'" + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "due_date": { + "name": "due_date", + "type": "date", + "primaryKey": false, + "notNull": true + }, + "valid_date": { + "name": "valid_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "incoterms_code": { + "name": "incoterms_code", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "gtc": { + "name": "gtc", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "gtc_valid_date": { + "name": "gtc_valid_date", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "classification": { + "name": "classification", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "sparepart": { + "name": "sparepart", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "short_list": { + "name": "short_list", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "return_yn": { + "name": "return_yn", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "cp_request_yn": { + "name": "cp_request_yn", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "prject_gtc_yn": { + "name": "prject_gtc_yn", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "return_revision": { + "name": "return_revision", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "rfq_revision": { + "name": "rfq_revision", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "initial_rfq_rfq_id_b_rfqs_id_fk": { + "name": "initial_rfq_rfq_id_b_rfqs_id_fk", + "tableFrom": "initial_rfq", + "tableTo": "b_rfqs", + "columnsFrom": [ + "rfq_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "initial_rfq_vendor_id_vendors_id_fk": { + "name": "initial_rfq_vendor_id_vendors_id_fk", + "tableFrom": "initial_rfq", + "tableTo": "vendors", + "columnsFrom": [ + "vendor_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "initial_rfq_incoterms_code_incoterms_code_fk": { + "name": "initial_rfq_incoterms_code_incoterms_code_fk", + "tableFrom": "initial_rfq", + "tableTo": "incoterms", + "columnsFrom": [ + "incoterms_code" + ], + "columnsTo": [ + "code" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.vendor_attachment_responses": { + "name": "vendor_attachment_responses", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "attachment_id": { + "name": "attachment_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "rfq_type": { + "name": "rfq_type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true + }, + "rfq_record_id": { + "name": "rfq_record_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "response_status": { + "name": "response_status", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "default": "'NOT_RESPONDED'" + }, + "current_revision": { + "name": "current_revision", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false, + "default": "'Rev.0'" + }, + "responded_revision": { + "name": "responded_revision", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "response_comment": { + "name": "response_comment", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "vendor_comment": { + "name": "vendor_comment", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "revision_request_comment": { + "name": "revision_request_comment", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "requested_at": { + "name": "requested_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true + }, + "responded_at": { + "name": "responded_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "revision_requested_at": { + "name": "revision_requested_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by": { + "name": "created_by", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "updated_by": { + "name": "updated_by", + "type": "integer", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "vendor_response_idx": { + "name": "vendor_response_idx", + "columns": [ + { + "expression": "attachment_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "vendor_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "rfq_type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "vendor_attachment_responses_attachment_id_b_rfq_attachments_id_fk": { + "name": "vendor_attachment_responses_attachment_id_b_rfq_attachments_id_fk", + "tableFrom": "vendor_attachment_responses", + "tableTo": "b_rfq_attachments", + "columnsFrom": [ + "attachment_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "vendor_attachment_responses_vendor_id_vendors_id_fk": { + "name": "vendor_attachment_responses_vendor_id_vendors_id_fk", + "tableFrom": "vendor_attachment_responses", + "tableTo": "vendors", + "columnsFrom": [ + "vendor_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "vendor_attachment_responses_created_by_users_id_fk": { + "name": "vendor_attachment_responses_created_by_users_id_fk", + "tableFrom": "vendor_attachment_responses", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "vendor_attachment_responses_updated_by_users_id_fk": { + "name": "vendor_attachment_responses_updated_by_users_id_fk", + "tableFrom": "vendor_attachment_responses", + "tableTo": "users", + "columnsFrom": [ + "updated_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.vendor_response_attachments_b": { + "name": "vendor_response_attachments_b", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "vendor_response_id": { + "name": "vendor_response_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "file_name": { + "name": "file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "original_file_name": { + "name": "original_file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "file_path": { + "name": "file_path", + "type": "varchar(512)", + "primaryKey": false, + "notNull": true + }, + "file_size": { + "name": "file_size", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "file_type": { + "name": "file_type", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "description": { + "name": "description", + "type": "varchar(500)", + "primaryKey": false, + "notNull": false + }, + "uploaded_by": { + "name": "uploaded_by", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "uploaded_at": { + "name": "uploaded_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "vendor_response_attachments_b_vendor_response_id_vendor_attachment_responses_id_fk": { + "name": "vendor_response_attachments_b_vendor_response_id_vendor_attachment_responses_id_fk", + "tableFrom": "vendor_response_attachments_b", + "tableTo": "vendor_attachment_responses", + "columnsFrom": [ + "vendor_response_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "vendor_response_attachments_b_uploaded_by_users_id_fk": { + "name": "vendor_response_attachments_b_uploaded_by_users_id_fk", + "tableFrom": "vendor_response_attachments_b", + "tableTo": "users", + "columnsFrom": [ + "uploaded_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.vendor_response_history": { + "name": "vendor_response_history", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "vendor_response_id": { + "name": "vendor_response_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "action": { + "name": "action", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "previous_status": { + "name": "previous_status", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "new_status": { + "name": "new_status", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "comment": { + "name": "comment", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "action_by": { + "name": "action_by", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "action_at": { + "name": "action_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "vendor_response_history_vendor_response_id_vendor_attachment_responses_id_fk": { + "name": "vendor_response_history_vendor_response_id_vendor_attachment_responses_id_fk", + "tableFrom": "vendor_response_history", + "tableTo": "vendor_attachment_responses", + "columnsFrom": [ + "vendor_response_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "vendor_response_history_action_by_users_id_fk": { + "name": "vendor_response_history_action_by_users_id_fk", + "tableFrom": "vendor_response_history", + "tableTo": "users", + "columnsFrom": [ + "action_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.tech_vendor_attachments": { + "name": "tech_vendor_attachments", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "file_name": { + "name": "file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "file_path": { + "name": "file_path", + "type": "varchar(1024)", + "primaryKey": false, + "notNull": true + }, + "attachment_type": { + "name": "attachment_type", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false, + "default": "'GENERAL'" + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "tech_vendor_attachments_vendor_id_tech_vendors_id_fk": { + "name": "tech_vendor_attachments_vendor_id_tech_vendors_id_fk", + "tableFrom": "tech_vendor_attachments", + "tableTo": "tech_vendors", + "columnsFrom": [ + "vendor_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.tech_vendor_contacts": { + "name": "tech_vendor_contacts", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "contact_name": { + "name": "contact_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "contact_position": { + "name": "contact_position", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "contact_title": { + "name": "contact_title", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "contact_email": { + "name": "contact_email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "contact_phone": { + "name": "contact_phone", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "contact_country": { + "name": "contact_country", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "is_primary": { + "name": "is_primary", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "tech_vendor_contacts_vendor_id_tech_vendors_id_fk": { + "name": "tech_vendor_contacts_vendor_id_tech_vendors_id_fk", + "tableFrom": "tech_vendor_contacts", + "tableTo": "tech_vendors", + "columnsFrom": [ + "vendor_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.tech_vendor_possible_items": { + "name": "tech_vendor_possible_items", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "shipbuilding_item_id": { + "name": "shipbuilding_item_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "offshore_top_item_id": { + "name": "offshore_top_item_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "offshore_hull_item_id": { + "name": "offshore_hull_item_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "tech_vendor_possible_items_vendor_id_tech_vendors_id_fk": { + "name": "tech_vendor_possible_items_vendor_id_tech_vendors_id_fk", + "tableFrom": "tech_vendor_possible_items", + "tableTo": "tech_vendors", + "columnsFrom": [ + "vendor_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "tech_vendor_possible_items_shipbuilding_item_id_item_shipbuilding_id_fk": { + "name": "tech_vendor_possible_items_shipbuilding_item_id_item_shipbuilding_id_fk", + "tableFrom": "tech_vendor_possible_items", + "tableTo": "item_shipbuilding", + "columnsFrom": [ + "shipbuilding_item_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "tech_vendor_possible_items_offshore_top_item_id_item_offshore_top_id_fk": { + "name": "tech_vendor_possible_items_offshore_top_item_id_item_offshore_top_id_fk", + "tableFrom": "tech_vendor_possible_items", + "tableTo": "item_offshore_top", + "columnsFrom": [ + "offshore_top_item_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "tech_vendor_possible_items_offshore_hull_item_id_item_offshore_hull_id_fk": { + "name": "tech_vendor_possible_items_offshore_hull_item_id_item_offshore_hull_id_fk", + "tableFrom": "tech_vendor_possible_items", + "tableTo": "item_offshore_hull", + "columnsFrom": [ + "offshore_hull_item_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.tech_vendors": { + "name": "tech_vendors", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "vendor_name": { + "name": "vendor_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "vendor_code": { + "name": "vendor_code", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "tax_id": { + "name": "tax_id", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "country": { + "name": "country", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "country_eng": { + "name": "country_eng", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "country_fab": { + "name": "country_fab", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "agent_name": { + "name": "agent_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "agent_phone": { + "name": "agent_phone", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "agent_email": { + "name": "agent_email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "address": { + "name": "address", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "phone": { + "name": "phone", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "email": { + "name": "email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "website": { + "name": "website", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "tech_vendor_type": { + "name": "tech_vendor_type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "default": "'ACTIVE'" + }, + "is_quote_comparison": { + "name": "is_quote_comparison", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "representative_name": { + "name": "representative_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "representative_email": { + "name": "representative_email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "representative_phone": { + "name": "representative_phone", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "representative_birth": { + "name": "representative_birth", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "items": { + "name": "items", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.esg_answer_options": { + "name": "esg_answer_options", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "esg_evaluation_item_id": { + "name": "esg_evaluation_item_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "answer_text": { + "name": "answer_text", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "score": { + "name": "score", + "type": "numeric(5, 2)", + "primaryKey": false, + "notNull": true + }, + "order_index": { + "name": "order_index", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "esg_answer_options_esg_evaluation_item_id_esg_evaluation_items_id_fk": { + "name": "esg_answer_options_esg_evaluation_item_id_esg_evaluation_items_id_fk", + "tableFrom": "esg_answer_options", + "tableTo": "esg_evaluation_items", + "columnsFrom": [ + "esg_evaluation_item_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.esg_evaluation_items": { + "name": "esg_evaluation_items", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "esg_evaluation_id": { + "name": "esg_evaluation_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "evaluation_item": { + "name": "evaluation_item", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "evaluation_item_description": { + "name": "evaluation_item_description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "order_index": { + "name": "order_index", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "esg_evaluation_items_esg_evaluation_id_esg_evaluations_id_fk": { + "name": "esg_evaluation_items_esg_evaluation_id_esg_evaluations_id_fk", + "tableFrom": "esg_evaluation_items", + "tableTo": "esg_evaluations", + "columnsFrom": [ + "esg_evaluation_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.esg_evaluation_responses": { + "name": "esg_evaluation_responses", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "submission_id": { + "name": "submission_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "esg_evaluation_item_id": { + "name": "esg_evaluation_item_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "esg_answer_option_id": { + "name": "esg_answer_option_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "selected_score": { + "name": "selected_score", + "type": "numeric(5, 2)", + "primaryKey": false, + "notNull": true + }, + "additional_comments": { + "name": "additional_comments", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "esg_evaluation_responses_submission_id_evaluation_submissions_id_fk": { + "name": "esg_evaluation_responses_submission_id_evaluation_submissions_id_fk", + "tableFrom": "esg_evaluation_responses", + "tableTo": "evaluation_submissions", + "columnsFrom": [ + "submission_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "esg_evaluation_responses_esg_evaluation_item_id_esg_evaluation_items_id_fk": { + "name": "esg_evaluation_responses_esg_evaluation_item_id_esg_evaluation_items_id_fk", + "tableFrom": "esg_evaluation_responses", + "tableTo": "esg_evaluation_items", + "columnsFrom": [ + "esg_evaluation_item_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "esg_evaluation_responses_esg_answer_option_id_esg_answer_options_id_fk": { + "name": "esg_evaluation_responses_esg_answer_option_id_esg_answer_options_id_fk", + "tableFrom": "esg_evaluation_responses", + "tableTo": "esg_answer_options", + "columnsFrom": [ + "esg_answer_option_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.esg_evaluations": { + "name": "esg_evaluations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "serial_number": { + "name": "serial_number", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "category": { + "name": "category", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "inspection_item": { + "name": "inspection_item", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "esg_evaluations_serial_number_unique": { + "name": "esg_evaluations_serial_number_unique", + "nullsNotDistinct": false, + "columns": [ + "serial_number" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.evaluation_submissions": { + "name": "evaluation_submissions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "submission_id": { + "name": "submission_id", + "type": "uuid", + "primaryKey": false, + "notNull": true, + "default": "gen_random_uuid()" + }, + "periodic_evaluation_id": { + "name": "periodic_evaluation_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "company_id": { + "name": "company_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "evaluation_year": { + "name": "evaluation_year", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "evaluation_round": { + "name": "evaluation_round", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "submission_status": { + "name": "submission_status", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true, + "default": "'draft'" + }, + "submitted_at": { + "name": "submitted_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "reviewed_at": { + "name": "reviewed_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "reviewed_by": { + "name": "reviewed_by", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "review_comments": { + "name": "review_comments", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "average_esg_score": { + "name": "average_esg_score", + "type": "numeric(5, 2)", + "primaryKey": false, + "notNull": false + }, + "total_general_items": { + "name": "total_general_items", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "completed_general_items": { + "name": "completed_general_items", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "total_esg_items": { + "name": "total_esg_items", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "completed_esg_items": { + "name": "completed_esg_items", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "evaluation_submissions_periodic_evaluation_id_periodic_evaluations_id_fk": { + "name": "evaluation_submissions_periodic_evaluation_id_periodic_evaluations_id_fk", + "tableFrom": "evaluation_submissions", + "tableTo": "periodic_evaluations", + "columnsFrom": [ + "periodic_evaluation_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "evaluation_submissions_company_id_vendors_id_fk": { + "name": "evaluation_submissions_company_id_vendors_id_fk", + "tableFrom": "evaluation_submissions", + "tableTo": "vendors", + "columnsFrom": [ + "company_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "evaluation_submissions_submission_id_unique": { + "name": "evaluation_submissions_submission_id_unique", + "nullsNotDistinct": false, + "columns": [ + "submission_id" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.general_evaluation_responses": { + "name": "general_evaluation_responses", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "submission_id": { + "name": "submission_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "general_evaluation_id": { + "name": "general_evaluation_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "response_text": { + "name": "response_text", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "has_attachments": { + "name": "has_attachments", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "review_comments": { + "name": "review_comments", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "general_evaluation_responses_submission_id_evaluation_submissions_id_fk": { + "name": "general_evaluation_responses_submission_id_evaluation_submissions_id_fk", + "tableFrom": "general_evaluation_responses", + "tableTo": "evaluation_submissions", + "columnsFrom": [ + "submission_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "general_evaluation_responses_general_evaluation_id_general_evaluations_id_fk": { + "name": "general_evaluation_responses_general_evaluation_id_general_evaluations_id_fk", + "tableFrom": "general_evaluation_responses", + "tableTo": "general_evaluations", + "columnsFrom": [ + "general_evaluation_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.general_evaluations": { + "name": "general_evaluations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "serial_number": { + "name": "serial_number", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "category": { + "name": "category", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "inspection_item": { + "name": "inspection_item", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "remarks": { + "name": "remarks", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "general_evaluations_serial_number_unique": { + "name": "general_evaluations_serial_number_unique", + "nullsNotDistinct": false, + "columns": [ + "serial_number" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.vendor_evaluation_attachments": { + "name": "vendor_evaluation_attachments", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "file_id": { + "name": "file_id", + "type": "uuid", + "primaryKey": false, + "notNull": true, + "default": "gen_random_uuid()" + }, + "submission_id": { + "name": "submission_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "general_evaluation_response_id": { + "name": "general_evaluation_response_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "original_file_name": { + "name": "original_file_name", + "type": "varchar(500)", + "primaryKey": false, + "notNull": true + }, + "stored_file_name": { + "name": "stored_file_name", + "type": "varchar(500)", + "primaryKey": false, + "notNull": true + }, + "file_path": { + "name": "file_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "file_size": { + "name": "file_size", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "mime_type": { + "name": "mime_type", + "type": "varchar(200)", + "primaryKey": false, + "notNull": false + }, + "uploaded_by": { + "name": "uploaded_by", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "vendor_evaluation_attachments_submission_id_evaluation_submissions_id_fk": { + "name": "vendor_evaluation_attachments_submission_id_evaluation_submissions_id_fk", + "tableFrom": "vendor_evaluation_attachments", + "tableTo": "evaluation_submissions", + "columnsFrom": [ + "submission_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "vendor_evaluation_attachments_general_evaluation_response_id_general_evaluation_responses_id_fk": { + "name": "vendor_evaluation_attachments_general_evaluation_response_id_general_evaluation_responses_id_fk", + "tableFrom": "vendor_evaluation_attachments", + "tableTo": "general_evaluation_responses", + "columnsFrom": [ + "general_evaluation_response_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "vendor_evaluation_attachments_file_id_unique": { + "name": "vendor_evaluation_attachments_file_id_unique", + "nullsNotDistinct": false, + "columns": [ + "file_id" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.evaluation_target_reviewers": { + "name": "evaluation_target_reviewers", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "evaluation_target_id": { + "name": "evaluation_target_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "department_code": { + "name": "department_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "department_name_from": { + "name": "department_name_from", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "reviewer_user_id": { + "name": "reviewer_user_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "assigned_at": { + "name": "assigned_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "assigned_by": { + "name": "assigned_by", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "evaluation_target_reviewers_evaluation_target_id_evaluation_targets_id_fk": { + "name": "evaluation_target_reviewers_evaluation_target_id_evaluation_targets_id_fk", + "tableFrom": "evaluation_target_reviewers", + "tableTo": "evaluation_targets", + "columnsFrom": [ + "evaluation_target_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "evaluation_target_reviewers_reviewer_user_id_users_id_fk": { + "name": "evaluation_target_reviewers_reviewer_user_id_users_id_fk", + "tableFrom": "evaluation_target_reviewers", + "tableTo": "users", + "columnsFrom": [ + "reviewer_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "evaluation_target_reviewers_assigned_by_users_id_fk": { + "name": "evaluation_target_reviewers_assigned_by_users_id_fk", + "tableFrom": "evaluation_target_reviewers", + "tableTo": "users", + "columnsFrom": [ + "assigned_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "unique_target_department": { + "name": "unique_target_department", + "nullsNotDistinct": false, + "columns": [ + "evaluation_target_id", + "department_code" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.evaluation_target_reviews": { + "name": "evaluation_target_reviews", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "evaluation_target_id": { + "name": "evaluation_target_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "reviewer_user_id": { + "name": "reviewer_user_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "department_code": { + "name": "department_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "is_approved": { + "name": "is_approved", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "review_comment": { + "name": "review_comment", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "reviewed_at": { + "name": "reviewed_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "evaluation_target_reviews_evaluation_target_id_evaluation_targets_id_fk": { + "name": "evaluation_target_reviews_evaluation_target_id_evaluation_targets_id_fk", + "tableFrom": "evaluation_target_reviews", + "tableTo": "evaluation_targets", + "columnsFrom": [ + "evaluation_target_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "evaluation_target_reviews_reviewer_user_id_users_id_fk": { + "name": "evaluation_target_reviews_reviewer_user_id_users_id_fk", + "tableFrom": "evaluation_target_reviews", + "tableTo": "users", + "columnsFrom": [ + "reviewer_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "unique_target_reviewer": { + "name": "unique_target_reviewer", + "nullsNotDistinct": false, + "columns": [ + "evaluation_target_id", + "reviewer_user_id", + "department_code" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.evaluation_targets": { + "name": "evaluation_targets", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "evaluation_year": { + "name": "evaluation_year", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "division": { + "name": "division", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "vendor_code": { + "name": "vendor_code", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "vendor_name": { + "name": "vendor_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "domestic_foreign": { + "name": "domestic_foreign", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true + }, + "material_type": { + "name": "material_type", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "default": "'PENDING'" + }, + "admin_comment": { + "name": "admin_comment", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "admin_user_id": { + "name": "admin_user_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "consolidated_comment": { + "name": "consolidated_comment", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "consensus_status": { + "name": "consensus_status", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "confirmed_at": { + "name": "confirmed_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "confirmed_by": { + "name": "confirmed_by", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "ld_claim_count": { + "name": "ld_claim_count", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "ld_claim_amount": { + "name": "ld_claim_amount", + "type": "numeric(15, 2)", + "primaryKey": false, + "notNull": false, + "default": "'0'" + }, + "ld_claim_currency": { + "name": "ld_claim_currency", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false, + "default": "'KRW'" + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "evaluation_targets_vendor_id_vendors_id_fk": { + "name": "evaluation_targets_vendor_id_vendors_id_fk", + "tableFrom": "evaluation_targets", + "tableTo": "vendors", + "columnsFrom": [ + "vendor_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "evaluation_targets_admin_user_id_users_id_fk": { + "name": "evaluation_targets_admin_user_id_users_id_fk", + "tableFrom": "evaluation_targets", + "tableTo": "users", + "columnsFrom": [ + "admin_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "evaluation_targets_confirmed_by_users_id_fk": { + "name": "evaluation_targets_confirmed_by_users_id_fk", + "tableFrom": "evaluation_targets", + "tableTo": "users", + "columnsFrom": [ + "confirmed_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.periodic_evaluations": { + "name": "periodic_evaluations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "evaluation_target_id": { + "name": "evaluation_target_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "evaluation_period": { + "name": "evaluation_period", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true + }, + "documents_submitted": { + "name": "documents_submitted", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "submission_date": { + "name": "submission_date", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "submission_deadline": { + "name": "submission_deadline", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "final_score": { + "name": "final_score", + "type": "numeric(5, 2)", + "primaryKey": false, + "notNull": false + }, + "final_grade": { + "name": "final_grade", + "type": "varchar(5)", + "primaryKey": false, + "notNull": false + }, + "evaluation_score": { + "name": "evaluation_score", + "type": "numeric(5, 2)", + "primaryKey": false, + "notNull": false + }, + "evaluation_grade": { + "name": "evaluation_grade", + "type": "varchar(5)", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "default": "'PENDING'" + }, + "review_completed_at": { + "name": "review_completed_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "finalized_at": { + "name": "finalized_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "finalized_by": { + "name": "finalized_by", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "evaluation_note": { + "name": "evaluation_note", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "periodic_evaluations_evaluation_target_id_evaluation_targets_id_fk": { + "name": "periodic_evaluations_evaluation_target_id_evaluation_targets_id_fk", + "tableFrom": "periodic_evaluations", + "tableTo": "evaluation_targets", + "columnsFrom": [ + "evaluation_target_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "periodic_evaluations_finalized_by_users_id_fk": { + "name": "periodic_evaluations_finalized_by_users_id_fk", + "tableFrom": "periodic_evaluations", + "tableTo": "users", + "columnsFrom": [ + "finalized_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "unique_evaluation_target": { + "name": "unique_evaluation_target", + "nullsNotDistinct": false, + "columns": [ + "evaluation_target_id", + "evaluation_period" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.reviewer_evaluation_attachments": { + "name": "reviewer_evaluation_attachments", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "reviewer_evaluation_detail_id": { + "name": "reviewer_evaluation_detail_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "original_file_name": { + "name": "original_file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "stored_file_name": { + "name": "stored_file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "file_path": { + "name": "file_path", + "type": "varchar(500)", + "primaryKey": false, + "notNull": true + }, + "public_path": { + "name": "public_path", + "type": "varchar(500)", + "primaryKey": false, + "notNull": true + }, + "file_size": { + "name": "file_size", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "mime_type": { + "name": "mime_type", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "file_extension": { + "name": "file_extension", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "uploaded_by": { + "name": "uploaded_by", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "reviewer_evaluation_detail_id_idx": { + "name": "reviewer_evaluation_detail_id_idx", + "columns": [ + { + "expression": "reviewer_evaluation_detail_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "reviewer_evaluation_attachments_reviewer_evaluation_detail_id_reviewer_evaluation_details_id_fk": { + "name": "reviewer_evaluation_attachments_reviewer_evaluation_detail_id_reviewer_evaluation_details_id_fk", + "tableFrom": "reviewer_evaluation_attachments", + "tableTo": "reviewer_evaluation_details", + "columnsFrom": [ + "reviewer_evaluation_detail_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "reviewer_evaluation_attachments_uploaded_by_users_id_fk": { + "name": "reviewer_evaluation_attachments_uploaded_by_users_id_fk", + "tableFrom": "reviewer_evaluation_attachments", + "tableTo": "users", + "columnsFrom": [ + "uploaded_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.reviewer_evaluation_details": { + "name": "reviewer_evaluation_details", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "reviewer_evaluation_id": { + "name": "reviewer_evaluation_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "reg_eval_criteria_details_id": { + "name": "reg_eval_criteria_details_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "score": { + "name": "score", + "type": "numeric(5, 2)", + "primaryKey": false, + "notNull": false + }, + "comment": { + "name": "comment", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "reviewer_evaluation_details_reviewer_evaluation_id_reviewer_evaluations_id_fk": { + "name": "reviewer_evaluation_details_reviewer_evaluation_id_reviewer_evaluations_id_fk", + "tableFrom": "reviewer_evaluation_details", + "tableTo": "reviewer_evaluations", + "columnsFrom": [ + "reviewer_evaluation_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "reviewer_evaluation_details_reg_eval_criteria_details_id_reg_eval_criteria_details_id_fk": { + "name": "reviewer_evaluation_details_reg_eval_criteria_details_id_reg_eval_criteria_details_id_fk", + "tableFrom": "reviewer_evaluation_details", + "tableTo": "reg_eval_criteria_details", + "columnsFrom": [ + "reg_eval_criteria_details_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "unique_reviewer_criteria": { + "name": "unique_reviewer_criteria", + "nullsNotDistinct": false, + "columns": [ + "reviewer_evaluation_id", + "reg_eval_criteria_details_id" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.reviewer_evaluations": { + "name": "reviewer_evaluations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "periodic_evaluation_id": { + "name": "periodic_evaluation_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "evaluation_target_reviewer_id": { + "name": "evaluation_target_reviewer_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "is_completed": { + "name": "is_completed", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "completed_at": { + "name": "completed_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "submitted_at": { + "name": "submitted_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "reviewer_comment": { + "name": "reviewer_comment", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "reviewer_evaluations_periodic_evaluation_id_periodic_evaluations_id_fk": { + "name": "reviewer_evaluations_periodic_evaluation_id_periodic_evaluations_id_fk", + "tableFrom": "reviewer_evaluations", + "tableTo": "periodic_evaluations", + "columnsFrom": [ + "periodic_evaluation_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "reviewer_evaluations_evaluation_target_reviewer_id_evaluation_target_reviewers_id_fk": { + "name": "reviewer_evaluations_evaluation_target_reviewer_id_evaluation_target_reviewers_id_fk", + "tableFrom": "reviewer_evaluations", + "tableTo": "evaluation_target_reviewers", + "columnsFrom": [ + "evaluation_target_reviewer_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "unique_reviewer_evaluation": { + "name": "unique_reviewer_evaluation", + "nullsNotDistinct": false, + "columns": [ + "periodic_evaluation_id", + "evaluation_target_reviewer_id" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.reg_eval_criteria": { + "name": "reg_eval_criteria", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "category": { + "name": "category", + "type": "varchar(32)", + "primaryKey": false, + "notNull": true, + "default": "'quality'" + }, + "category2": { + "name": "category2", + "type": "varchar(32)", + "primaryKey": false, + "notNull": true, + "default": "'processScore'" + }, + "item": { + "name": "item", + "type": "varchar(32)", + "primaryKey": false, + "notNull": true, + "default": "'quality'" + }, + "classification": { + "name": "classification", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "range": { + "name": "range", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "remarks": { + "name": "remarks", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by": { + "name": "created_by", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "updated_by": { + "name": "updated_by", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "variable_score_min ": { + "name": "variable_score_min ", + "type": "numeric(5, 2)", + "primaryKey": false, + "notNull": false + }, + "variable_score_max ": { + "name": "variable_score_max ", + "type": "numeric(5, 2)", + "primaryKey": false, + "notNull": false + }, + "variable_score_unit ": { + "name": "variable_score_unit ", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "score_type": { + "name": "score_type", + "type": "score_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'fixed'" + } + }, + "indexes": {}, + "foreignKeys": { + "reg_eval_criteria_created_by_users_id_fk": { + "name": "reg_eval_criteria_created_by_users_id_fk", + "tableFrom": "reg_eval_criteria", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "reg_eval_criteria_updated_by_users_id_fk": { + "name": "reg_eval_criteria_updated_by_users_id_fk", + "tableFrom": "reg_eval_criteria", + "tableTo": "users", + "columnsFrom": [ + "updated_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.reg_eval_criteria_details": { + "name": "reg_eval_criteria_details", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "criteria_id": { + "name": "criteria_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "detail": { + "name": "detail", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "order_index": { + "name": "order_index", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "score_equip_ship": { + "name": "score_equip_ship", + "type": "numeric(5, 2)", + "primaryKey": false, + "notNull": false + }, + "score_equip_marine": { + "name": "score_equip_marine", + "type": "numeric(5, 2)", + "primaryKey": false, + "notNull": false + }, + "score_bulk_ship": { + "name": "score_bulk_ship", + "type": "numeric(5, 2)", + "primaryKey": false, + "notNull": false + }, + "score_bulk_marine": { + "name": "score_bulk_marine", + "type": "numeric(5, 2)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "reg_eval_criteria_details_criteria_id_reg_eval_criteria_id_fk": { + "name": "reg_eval_criteria_details_criteria_id_reg_eval_criteria_id_fk", + "tableFrom": "reg_eval_criteria_details", + "tableTo": "reg_eval_criteria", + "columnsFrom": [ + "criteria_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.project_gtc_files": { + "name": "project_gtc_files", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "project_id": { + "name": "project_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "file_name": { + "name": "file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "file_path": { + "name": "file_path", + "type": "varchar(1024)", + "primaryKey": false, + "notNull": true + }, + "original_file_name": { + "name": "original_file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "file_size": { + "name": "file_size", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "mime_type": { + "name": "mime_type", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "project_gtc_files_project_id_projects_id_fk": { + "name": "project_gtc_files_project_id_projects_id_fk", + "tableFrom": "project_gtc_files", + "tableTo": "projects", + "columnsFrom": [ + "project_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.menu_assignments": { + "name": "menu_assignments", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "menu_assignments_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "menu_path": { + "name": "menu_path", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "menu_title": { + "name": "menu_title", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "menu_description": { + "name": "menu_description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "menu_group": { + "name": "menu_group", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "section_title": { + "name": "section_title", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "domain": { + "name": "domain", + "type": "user_domain", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'evcp'" + }, + "manager1_id": { + "name": "manager1_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "manager2_id": { + "name": "manager2_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "menu_assignments_path_idx": { + "name": "menu_assignments_path_idx", + "columns": [ + { + "expression": "menu_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "menu_assignments_manager1_idx": { + "name": "menu_assignments_manager1_idx", + "columns": [ + { + "expression": "manager1_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "menu_assignments_manager2_idx": { + "name": "menu_assignments_manager2_idx", + "columns": [ + { + "expression": "manager2_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "menu_assignments_domain_idx": { + "name": "menu_assignments_domain_idx", + "columns": [ + { + "expression": "domain", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "menu_assignments_manager1_id_users_id_fk": { + "name": "menu_assignments_manager1_id_users_id_fk", + "tableFrom": "menu_assignments", + "tableTo": "users", + "columnsFrom": [ + "manager1_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "menu_assignments_manager2_id_users_id_fk": { + "name": "menu_assignments_manager2_id_users_id_fk", + "tableFrom": "menu_assignments", + "tableTo": "users", + "columnsFrom": [ + "manager2_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "menu_assignments_menu_path_unique": { + "name": "menu_assignments_menu_path_unique", + "nullsNotDistinct": false, + "columns": [ + "menu_path" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.information_attachments": { + "name": "information_attachments", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "information_id": { + "name": "information_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "file_name": { + "name": "file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "file_path": { + "name": "file_path", + "type": "varchar(1024)", + "primaryKey": false, + "notNull": true + }, + "file_size": { + "name": "file_size", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "information_attachments_information_id_page_information_id_fk": { + "name": "information_attachments_information_id_page_information_id_fk", + "tableFrom": "information_attachments", + "tableTo": "page_information", + "columnsFrom": [ + "information_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.page_information": { + "name": "page_information", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "page_path": { + "name": "page_path", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "page_name": { + "name": "page_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "information_content": { + "name": "information_content", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "page_information_page_path_unique": { + "name": "page_information_page_path_unique", + "nullsNotDistinct": false, + "columns": [ + "page_path" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.qna": { + "name": "qna", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "title": { + "name": "title", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "category": { + "name": "category", + "type": "qna_category", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "author": { + "name": "author", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "is_deleted": { + "name": "is_deleted", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "idx_qna_author": { + "name": "idx_qna_author", + "columns": [ + { + "expression": "author", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "qna_author_users_id_fk": { + "name": "qna_author_users_id_fk", + "tableFrom": "qna", + "tableTo": "users", + "columnsFrom": [ + "author" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.qna_answer": { + "name": "qna_answer", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "qna_id": { + "name": "qna_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "author": { + "name": "author", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "is_deleted": { + "name": "is_deleted", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "idx_answer_qna": { + "name": "idx_answer_qna", + "columns": [ + { + "expression": "qna_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_answer_author": { + "name": "idx_answer_author", + "columns": [ + { + "expression": "author", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "qna_answer_qna_id_qna_id_fk": { + "name": "qna_answer_qna_id_qna_id_fk", + "tableFrom": "qna_answer", + "tableTo": "qna", + "columnsFrom": [ + "qna_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "qna_answer_author_users_id_fk": { + "name": "qna_answer_author_users_id_fk", + "tableFrom": "qna_answer", + "tableTo": "users", + "columnsFrom": [ + "author" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.qna_comments": { + "name": "qna_comments", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "author": { + "name": "author", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "answer_id": { + "name": "answer_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "parent_comment_id": { + "name": "parent_comment_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "is_deleted": { + "name": "is_deleted", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "idx_comment_answer": { + "name": "idx_comment_answer", + "columns": [ + { + "expression": "answer_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_comment_parent": { + "name": "idx_comment_parent", + "columns": [ + { + "expression": "parent_comment_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "qna_comments_author_users_id_fk": { + "name": "qna_comments_author_users_id_fk", + "tableFrom": "qna_comments", + "tableTo": "users", + "columnsFrom": [ + "author" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "qna_comments_answer_id_qna_answer_id_fk": { + "name": "qna_comments_answer_id_qna_answer_id_fk", + "tableFrom": "qna_comments", + "tableTo": "qna_answer", + "columnsFrom": [ + "answer_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.notice": { + "name": "notice", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "page_path": { + "name": "page_path", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "title": { + "name": "title", + "type": "varchar(500)", + "primaryKey": false, + "notNull": true + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "author_id": { + "name": "author_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "notice_author_id_users_id_fk": { + "name": "notice_author_id_users_id_fk", + "tableFrom": "notice", + "tableTo": "users", + "columnsFrom": [ + "author_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.daily_access_stats": { + "name": "daily_access_stats", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "date": { + "name": "date", + "type": "timestamp", + "primaryKey": false, + "notNull": true + }, + "total_visits": { + "name": "total_visits", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "unique_users": { + "name": "unique_users", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "total_sessions": { + "name": "total_sessions", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "avg_session_duration": { + "name": "avg_session_duration", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.file_download_logs": { + "name": "file_download_logs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "file_id": { + "name": "file_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "user_email": { + "name": "user_email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "user_name": { + "name": "user_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "user_role": { + "name": "user_role", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "user_ip": { + "name": "user_ip", + "type": "inet", + "primaryKey": false, + "notNull": false + }, + "user_agent": { + "name": "user_agent", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "file_name": { + "name": "file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "file_path": { + "name": "file_path", + "type": "varchar(500)", + "primaryKey": false, + "notNull": false + }, + "file_size": { + "name": "file_size", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "downloaded_at": { + "name": "downloaded_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "success": { + "name": "success", + "type": "boolean", + "primaryKey": false, + "notNull": true + }, + "error_message": { + "name": "error_message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "session_id": { + "name": "session_id", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "request_id": { + "name": "request_id", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "referer": { + "name": "referer", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "download_duration_ms": { + "name": "download_duration_ms", + "type": "integer", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.login_sessions": { + "name": "login_sessions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "login_at": { + "name": "login_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "logout_at": { + "name": "logout_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "ip_address": { + "name": "ip_address", + "type": "inet", + "primaryKey": false, + "notNull": true + }, + "user_agent": { + "name": "user_agent", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "session_token": { + "name": "session_token", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "nextauth_session_id": { + "name": "nextauth_session_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "auth_method": { + "name": "auth_method", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "last_activity_at": { + "name": "last_activity_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "session_expired_at": { + "name": "session_expired_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "login_sessions_user_id_users_id_fk": { + "name": "login_sessions_user_id_users_id_fk", + "tableFrom": "login_sessions", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "login_sessions_session_token_unique": { + "name": "login_sessions_session_token_unique", + "nullsNotDistinct": false, + "columns": [ + "session_token" + ] + }, + "login_sessions_nextauth_session_id_unique": { + "name": "login_sessions_nextauth_session_id_unique", + "nullsNotDistinct": false, + "columns": [ + "nextauth_session_id" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.page_visits": { + "name": "page_visits", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "session_id": { + "name": "session_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "route": { + "name": "route", + "type": "varchar(500)", + "primaryKey": false, + "notNull": true + }, + "page_title": { + "name": "page_title", + "type": "varchar(200)", + "primaryKey": false, + "notNull": false + }, + "referrer": { + "name": "referrer", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "ip_address": { + "name": "ip_address", + "type": "inet", + "primaryKey": false, + "notNull": true + }, + "user_agent": { + "name": "user_agent", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "visited_at": { + "name": "visited_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "duration": { + "name": "duration", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "query_params": { + "name": "query_params", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "device_type": { + "name": "device_type", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "browser_name": { + "name": "browser_name", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "os_name": { + "name": "os_name", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": { + "page_visits_user_id_users_id_fk": { + "name": "page_visits_user_id_users_id_fk", + "tableFrom": "page_visits", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "page_visits_session_id_login_sessions_id_fk": { + "name": "page_visits_session_id_login_sessions_id_fk", + "tableFrom": "page_visits", + "tableTo": "login_sessions", + "columnsFrom": [ + "session_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.temp_auth_sessions": { + "name": "temp_auth_sessions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "temp_auth_key": { + "name": "temp_auth_key", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "email": { + "name": "email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "auth_method": { + "name": "auth_method", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true + }, + "is_used": { + "name": "is_used", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "temp_auth_sessions_user_id_users_id_fk": { + "name": "temp_auth_sessions_user_id_users_id_fk", + "tableFrom": "temp_auth_sessions", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "temp_auth_sessions_temp_auth_key_unique": { + "name": "temp_auth_sessions_temp_auth_key_unique", + "nullsNotDistinct": false, + "columns": [ + "temp_auth_key" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.user_download_stats": { + "name": "user_download_stats", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "date": { + "name": "date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "total_downloads": { + "name": "total_downloads", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "total_bytes": { + "name": "total_bytes", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "unique_files": { + "name": "unique_files", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "last_download_at": { + "name": "last_download_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.notifications": { + "name": "notifications", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "user_id": { + "name": "user_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "title": { + "name": "title", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "message": { + "name": "message", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "related_record_id": { + "name": "related_record_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "related_record_type": { + "name": "related_record_type", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "is_read": { + "name": "is_read", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "read_at": { + "name": "read_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "idx_notifications_user_id": { + "name": "idx_notifications_user_id", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_notifications_created_at": { + "name": "idx_notifications_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": false, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_notifications_is_read": { + "name": "idx_notifications_is_read", + "columns": [ + { + "expression": "is_read", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_notifications_user_read": { + "name": "idx_notifications_user_read", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "is_read", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.template_history": { + "name": "template_history", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "template_id": { + "name": "template_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "version": { + "name": "version", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "subject": { + "name": "subject", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "change_description": { + "name": "change_description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "changed_by": { + "name": "changed_by", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "template_history_template_id_templates_id_fk": { + "name": "template_history_template_id_templates_id_fk", + "tableFrom": "template_history", + "tableTo": "templates", + "columnsFrom": [ + "template_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "template_history_changed_by_users_id_fk": { + "name": "template_history_changed_by_users_id_fk", + "tableFrom": "template_history", + "tableTo": "users", + "columnsFrom": [ + "changed_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.template_variables": { + "name": "template_variables", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "template_id": { + "name": "template_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "variable_name": { + "name": "variable_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "variable_type": { + "name": "variable_type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "default_value": { + "name": "default_value", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_required": { + "name": "is_required", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "validation_rule": { + "name": "validation_rule", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "display_order": { + "name": "display_order", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "template_variables_template_id_templates_id_fk": { + "name": "template_variables_template_id_templates_id_fk", + "tableFrom": "template_variables", + "tableTo": "templates", + "columnsFrom": [ + "template_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.templates": { + "name": "templates", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "slug": { + "name": "slug", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "subject": { + "name": "subject", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "category": { + "name": "category", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "sample_data": { + "name": "sample_data", + "type": "jsonb", + "primaryKey": false, + "notNull": false, + "default": "'{}'::jsonb" + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "version": { + "name": "version", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 1 + }, + "created_by": { + "name": "created_by", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "templates_created_by_users_id_fk": { + "name": "templates_created_by_users_id_fk", + "tableFrom": "templates", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "templates_slug_unique": { + "name": "templates_slug_unique", + "nullsNotDistinct": false, + "columns": [ + "slug" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.gtc_clauses": { + "name": "gtc_clauses", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "document_id": { + "name": "document_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "parent_id": { + "name": "parent_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "item_number": { + "name": "item_number", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "category": { + "name": "category", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "subtitle": { + "name": "subtitle", + "type": "varchar(500)", + "primaryKey": false, + "notNull": true + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "sort_order": { + "name": "sort_order", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": true, + "default": "'0'" + }, + "depth": { + "name": "depth", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "full_path": { + "name": "full_path", + "type": "varchar(200)", + "primaryKey": false, + "notNull": false + }, + "images": { + "name": "images", + "type": "json", + "primaryKey": false, + "notNull": false + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by_id": { + "name": "created_by_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_by_id": { + "name": "updated_by_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "edit_reason": { + "name": "edit_reason", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "gtc_clauses_document_item_number_idx": { + "name": "gtc_clauses_document_item_number_idx", + "columns": [ + { + "expression": "document_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "item_number", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "gtc_clauses_document_idx": { + "name": "gtc_clauses_document_idx", + "columns": [ + { + "expression": "document_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "gtc_clauses_parent_idx": { + "name": "gtc_clauses_parent_idx", + "columns": [ + { + "expression": "parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "gtc_clauses_full_path_idx": { + "name": "gtc_clauses_full_path_idx", + "columns": [ + { + "expression": "full_path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "gtc_clauses_document_id_gtc_documents_id_fk": { + "name": "gtc_clauses_document_id_gtc_documents_id_fk", + "tableFrom": "gtc_clauses", + "tableTo": "gtc_documents", + "columnsFrom": [ + "document_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "gtc_clauses_created_by_id_users_id_fk": { + "name": "gtc_clauses_created_by_id_users_id_fk", + "tableFrom": "gtc_clauses", + "tableTo": "users", + "columnsFrom": [ + "created_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "gtc_clauses_updated_by_id_users_id_fk": { + "name": "gtc_clauses_updated_by_id_users_id_fk", + "tableFrom": "gtc_clauses", + "tableTo": "users", + "columnsFrom": [ + "updated_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.gtc_documents": { + "name": "gtc_documents", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "type": { + "name": "type", + "type": "gtc_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "project_id": { + "name": "project_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "title": { + "name": "title", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "revision": { + "name": "revision", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "file_name": { + "name": "file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "file_path": { + "name": "file_path", + "type": "varchar(500)", + "primaryKey": false, + "notNull": false + }, + "file_size": { + "name": "file_size", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by_id": { + "name": "created_by_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_by_id": { + "name": "updated_by_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "edit_reason": { + "name": "edit_reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + } + }, + "indexes": { + "gtc_project_revision_idx": { + "name": "gtc_project_revision_idx", + "columns": [ + { + "expression": "project_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "revision", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "gtc_type_idx": { + "name": "gtc_type_idx", + "columns": [ + { + "expression": "type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "gtc_project_idx": { + "name": "gtc_project_idx", + "columns": [ + { + "expression": "project_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "gtc_created_at_idx": { + "name": "gtc_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "gtc_updated_at_idx": { + "name": "gtc_updated_at_idx", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "gtc_documents_project_id_projects_id_fk": { + "name": "gtc_documents_project_id_projects_id_fk", + "tableFrom": "gtc_documents", + "tableTo": "projects", + "columnsFrom": [ + "project_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "gtc_documents_created_by_id_users_id_fk": { + "name": "gtc_documents_created_by_id_users_id_fk", + "tableFrom": "gtc_documents", + "tableTo": "users", + "columnsFrom": [ + "created_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "gtc_documents_updated_by_id_users_id_fk": { + "name": "gtc_documents_updated_by_id_users_id_fk", + "tableFrom": "gtc_documents", + "tableTo": "users", + "columnsFrom": [ + "updated_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.gtc_negotiation_history": { + "name": "gtc_negotiation_history", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "vendor_clause_id": { + "name": "vendor_clause_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "action": { + "name": "action", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "previous_status": { + "name": "previous_status", + "type": "review_status", + "typeSchema": "public", + "primaryKey": false, + "notNull": false + }, + "new_status": { + "name": "new_status", + "type": "review_status", + "typeSchema": "public", + "primaryKey": false, + "notNull": false + }, + "changed_fields": { + "name": "changed_fields", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "comment": { + "name": "comment", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "attachments": { + "name": "attachments", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "actor_type": { + "name": "actor_type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true + }, + "actor_id": { + "name": "actor_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "actor_name": { + "name": "actor_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "actor_email": { + "name": "actor_email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "gtc_negotiation_history_vendor_clause_idx": { + "name": "gtc_negotiation_history_vendor_clause_idx", + "columns": [ + { + "expression": "vendor_clause_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "gtc_negotiation_history_action_idx": { + "name": "gtc_negotiation_history_action_idx", + "columns": [ + { + "expression": "action", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "gtc_negotiation_history_created_at_idx": { + "name": "gtc_negotiation_history_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "gtc_negotiation_history_vendor_clause_id_gtc_vendor_clauses_id_fk": { + "name": "gtc_negotiation_history_vendor_clause_id_gtc_vendor_clauses_id_fk", + "tableFrom": "gtc_negotiation_history", + "tableTo": "gtc_vendor_clauses", + "columnsFrom": [ + "vendor_clause_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "gtc_negotiation_history_actor_id_users_id_fk": { + "name": "gtc_negotiation_history_actor_id_users_id_fk", + "tableFrom": "gtc_negotiation_history", + "tableTo": "users", + "columnsFrom": [ + "actor_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.gtc_templates": { + "name": "gtc_templates", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "document_id": { + "name": "document_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "version": { + "name": "version", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true, + "default": "'1.0'" + }, + "original_file_name": { + "name": "original_file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "file_path": { + "name": "file_path", + "type": "varchar(500)", + "primaryKey": false, + "notNull": true + }, + "file_size": { + "name": "file_size", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "variable_metadata": { + "name": "variable_metadata", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "is_default": { + "name": "is_default", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by_id": { + "name": "created_by_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_by_id": { + "name": "updated_by_id", + "type": "integer", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "gtc_templates_name_idx": { + "name": "gtc_templates_name_idx", + "columns": [ + { + "expression": "name", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "gtc_templates_is_default_idx": { + "name": "gtc_templates_is_default_idx", + "columns": [ + { + "expression": "is_default", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "gtc_templates_document_id_gtc_documents_id_fk": { + "name": "gtc_templates_document_id_gtc_documents_id_fk", + "tableFrom": "gtc_templates", + "tableTo": "gtc_documents", + "columnsFrom": [ + "document_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "gtc_templates_created_by_id_users_id_fk": { + "name": "gtc_templates_created_by_id_users_id_fk", + "tableFrom": "gtc_templates", + "tableTo": "users", + "columnsFrom": [ + "created_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "gtc_templates_updated_by_id_users_id_fk": { + "name": "gtc_templates_updated_by_id_users_id_fk", + "tableFrom": "gtc_templates", + "tableTo": "users", + "columnsFrom": [ + "updated_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.gtc_vendor_clauses": { + "name": "gtc_vendor_clauses", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "vendor_document_id": { + "name": "vendor_document_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "base_clause_id": { + "name": "base_clause_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "parent_id": { + "name": "parent_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "modified_item_number": { + "name": "modified_item_number", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "modified_category": { + "name": "modified_category", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "modified_subtitle": { + "name": "modified_subtitle", + "type": "varchar(500)", + "primaryKey": false, + "notNull": false + }, + "modified_content": { + "name": "modified_content", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "sort_order": { + "name": "sort_order", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": true, + "default": "'0'" + }, + "depth": { + "name": "depth", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "full_path": { + "name": "full_path", + "type": "varchar(200)", + "primaryKey": false, + "notNull": false + }, + "is_number_modified": { + "name": "is_number_modified", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_category_modified": { + "name": "is_category_modified", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_subtitle_modified": { + "name": "is_subtitle_modified", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_content_modified": { + "name": "is_content_modified", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "review_status": { + "name": "review_status", + "type": "review_status", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'draft'" + }, + "negotiation_note": { + "name": "negotiation_note", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "is_excluded": { + "name": "is_excluded", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by_id": { + "name": "created_by_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_by_id": { + "name": "updated_by_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "edit_reason": { + "name": "edit_reason", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "gtc_vendor_clauses_vendor_base_idx": { + "name": "gtc_vendor_clauses_vendor_base_idx", + "columns": [ + { + "expression": "vendor_document_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "base_clause_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "gtc_vendor_clauses_vendor_document_idx": { + "name": "gtc_vendor_clauses_vendor_document_idx", + "columns": [ + { + "expression": "vendor_document_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "gtc_vendor_clauses_base_clause_idx": { + "name": "gtc_vendor_clauses_base_clause_idx", + "columns": [ + { + "expression": "base_clause_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "gtc_vendor_clauses_parent_idx": { + "name": "gtc_vendor_clauses_parent_idx", + "columns": [ + { + "expression": "parent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "gtc_vendor_clauses_review_status_idx": { + "name": "gtc_vendor_clauses_review_status_idx", + "columns": [ + { + "expression": "review_status", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "gtc_vendor_clauses_vendor_document_id_gtc_vendor_documents_id_fk": { + "name": "gtc_vendor_clauses_vendor_document_id_gtc_vendor_documents_id_fk", + "tableFrom": "gtc_vendor_clauses", + "tableTo": "gtc_vendor_documents", + "columnsFrom": [ + "vendor_document_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "gtc_vendor_clauses_base_clause_id_gtc_clauses_id_fk": { + "name": "gtc_vendor_clauses_base_clause_id_gtc_clauses_id_fk", + "tableFrom": "gtc_vendor_clauses", + "tableTo": "gtc_clauses", + "columnsFrom": [ + "base_clause_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "gtc_vendor_clauses_created_by_id_users_id_fk": { + "name": "gtc_vendor_clauses_created_by_id_users_id_fk", + "tableFrom": "gtc_vendor_clauses", + "tableTo": "users", + "columnsFrom": [ + "created_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "gtc_vendor_clauses_updated_by_id_users_id_fk": { + "name": "gtc_vendor_clauses_updated_by_id_users_id_fk", + "tableFrom": "gtc_vendor_clauses", + "tableTo": "users", + "columnsFrom": [ + "updated_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.gtc_vendor_documents": { + "name": "gtc_vendor_documents", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "base_document_id": { + "name": "base_document_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "version": { + "name": "version", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true, + "default": "'1.0'" + }, + "review_status": { + "name": "review_status", + "type": "review_status", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'draft'" + }, + "negotiation_start_date": { + "name": "negotiation_start_date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "negotiation_end_date": { + "name": "negotiation_end_date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "approval_date": { + "name": "approval_date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "final_file_name": { + "name": "final_file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "final_file_path": { + "name": "final_file_path", + "type": "varchar(500)", + "primaryKey": false, + "notNull": false + }, + "final_file_size": { + "name": "final_file_size", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by_id": { + "name": "created_by_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_by_id": { + "name": "updated_by_id", + "type": "integer", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "gtc_vendor_documents_base_vendor_idx": { + "name": "gtc_vendor_documents_base_vendor_idx", + "columns": [ + { + "expression": "base_document_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "vendor_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "gtc_vendor_documents_vendor_idx": { + "name": "gtc_vendor_documents_vendor_idx", + "columns": [ + { + "expression": "vendor_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "gtc_vendor_documents_base_document_idx": { + "name": "gtc_vendor_documents_base_document_idx", + "columns": [ + { + "expression": "base_document_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "gtc_vendor_documents_review_status_idx": { + "name": "gtc_vendor_documents_review_status_idx", + "columns": [ + { + "expression": "review_status", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "gtc_vendor_documents_base_document_id_gtc_documents_id_fk": { + "name": "gtc_vendor_documents_base_document_id_gtc_documents_id_fk", + "tableFrom": "gtc_vendor_documents", + "tableTo": "gtc_documents", + "columnsFrom": [ + "base_document_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "gtc_vendor_documents_vendor_id_vendors_id_fk": { + "name": "gtc_vendor_documents_vendor_id_vendors_id_fk", + "tableFrom": "gtc_vendor_documents", + "tableTo": "vendors", + "columnsFrom": [ + "vendor_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "gtc_vendor_documents_created_by_id_users_id_fk": { + "name": "gtc_vendor_documents_created_by_id_users_id_fk", + "tableFrom": "gtc_vendor_documents", + "tableTo": "users", + "columnsFrom": [ + "created_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "gtc_vendor_documents_updated_by_id_users_id_fk": { + "name": "gtc_vendor_documents_updated_by_id_users_id_fk", + "tableFrom": "gtc_vendor_documents", + "tableTo": "users", + "columnsFrom": [ + "updated_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.code_groups": { + "name": "code_groups", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "project_id": { + "name": "project_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "group_id": { + "name": "group_id", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "code_format": { + "name": "code_format", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "expressions": { + "name": "expressions", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "control_type": { + "name": "control_type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "code_groups_project_id_projects_id_fk": { + "name": "code_groups_project_id_projects_id_fk", + "tableFrom": "code_groups", + "tableTo": "projects", + "columnsFrom": [ + "project_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "unique_project_group_id": { + "name": "unique_project_group_id", + "nullsNotDistinct": false, + "columns": [ + "project_id", + "group_id" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.combo_box_settings": { + "name": "combo_box_settings", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "code_group_id": { + "name": "code_group_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "code": { + "name": "code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "varchar(200)", + "primaryKey": false, + "notNull": true + }, + "remark": { + "name": "remark", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "sdq": { + "name": "sdq", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "combo_box_settings_code_group_id_code_groups_id_fk": { + "name": "combo_box_settings_code_group_id_code_groups_id_fk", + "tableFrom": "combo_box_settings", + "tableTo": "code_groups", + "columnsFrom": [ + "code_group_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "unique_code_group_code": { + "name": "unique_code_group_code", + "nullsNotDistinct": false, + "columns": [ + "code_group_id", + "code" + ] + }, + "unique_code_group_sdq": { + "name": "unique_code_group_sdq", + "nullsNotDistinct": false, + "columns": [ + "code_group_id", + "sdq" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.document_class_options_new": { + "name": "document_class_options_new", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "document_class_id": { + "name": "document_class_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "option_code": { + "name": "option_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "sdq": { + "name": "sdq", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "document_class_options_new_document_class_id_document_classes_id_fk": { + "name": "document_class_options_new_document_class_id_document_classes_id_fk", + "tableFrom": "document_class_options_new", + "tableTo": "document_classes", + "columnsFrom": [ + "document_class_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "unique_document_class_option": { + "name": "unique_document_class_option", + "nullsNotDistinct": false, + "columns": [ + "document_class_id", + "option_code" + ] + }, + "unique_document_class_sdq": { + "name": "unique_document_class_sdq", + "nullsNotDistinct": false, + "columns": [ + "document_class_id", + "sdq" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.document_classes": { + "name": "document_classes", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "project_id": { + "name": "project_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "code": { + "name": "code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "value": { + "name": "value", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "description": { + "name": "description", + "type": "varchar(200)", + "primaryKey": false, + "notNull": true + }, + "code_group_id": { + "name": "code_group_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "document_classes_project_id_projects_id_fk": { + "name": "document_classes_project_id_projects_id_fk", + "tableFrom": "document_classes", + "tableTo": "projects", + "columnsFrom": [ + "project_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "document_classes_code_group_id_code_groups_id_fk": { + "name": "document_classes_code_group_id_code_groups_id_fk", + "tableFrom": "document_classes", + "tableTo": "code_groups", + "columnsFrom": [ + "code_group_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "unique_project_code": { + "name": "unique_project_code", + "nullsNotDistinct": false, + "columns": [ + "project_id", + "code" + ] + }, + "unique_project_value": { + "name": "unique_project_value", + "nullsNotDistinct": false, + "columns": [ + "project_id", + "value" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.document_number_type_configs": { + "name": "document_number_type_configs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "document_number_type_id": { + "name": "document_number_type_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "code_group_id": { + "name": "code_group_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "sdq": { + "name": "sdq", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "varchar(200)", + "primaryKey": false, + "notNull": false + }, + "remark": { + "name": "remark", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "document_number_type_configs_document_number_type_id_document_number_types_id_fk": { + "name": "document_number_type_configs_document_number_type_id_document_number_types_id_fk", + "tableFrom": "document_number_type_configs", + "tableTo": "document_number_types", + "columnsFrom": [ + "document_number_type_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "document_number_type_configs_code_group_id_code_groups_id_fk": { + "name": "document_number_type_configs_code_group_id_code_groups_id_fk", + "tableFrom": "document_number_type_configs", + "tableTo": "code_groups", + "columnsFrom": [ + "code_group_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "unique_document_number_type_sdq": { + "name": "unique_document_number_type_sdq", + "nullsNotDistinct": false, + "columns": [ + "document_number_type_id", + "sdq" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.document_number_types": { + "name": "document_number_types", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "project_id": { + "name": "project_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "varchar(200)", + "primaryKey": false, + "notNull": false + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "document_number_types_project_id_projects_id_fk": { + "name": "document_number_types_project_id_projects_id_fk", + "tableFrom": "document_number_types", + "tableTo": "projects", + "columnsFrom": [ + "project_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "unique_project_name": { + "name": "unique_project_name", + "nullsNotDistinct": false, + "columns": [ + "project_id", + "name" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.legal_work_attachments": { + "name": "legal_work_attachments", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "legal_work_id": { + "name": "legal_work_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "file_name": { + "name": "file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "original_file_name": { + "name": "original_file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "file_path": { + "name": "file_path", + "type": "varchar(500)", + "primaryKey": false, + "notNull": true + }, + "file_size": { + "name": "file_size", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "mime_type": { + "name": "mime_type", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "is_auto_generated": { + "name": "is_auto_generated", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "attachment_type": { + "name": "attachment_type", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false, + "default": "'request'" + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "legal_work_attachments_legal_work_id_legal_works_id_fk": { + "name": "legal_work_attachments_legal_work_id_legal_works_id_fk", + "tableFrom": "legal_work_attachments", + "tableTo": "legal_works", + "columnsFrom": [ + "legal_work_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.legal_work_requests": { + "name": "legal_work_requests", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "legal_work_id": { + "name": "legal_work_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "review_department": { + "name": "review_department", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "inquiry_type": { + "name": "inquiry_type", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "title": { + "name": "title", + "type": "varchar(500)", + "primaryKey": false, + "notNull": true + }, + "request_content": { + "name": "request_content", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "is_public": { + "name": "is_public", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "contract_project_name": { + "name": "contract_project_name", + "type": "varchar(300)", + "primaryKey": false, + "notNull": false + }, + "contract_type": { + "name": "contract_type", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "contract_amount": { + "name": "contract_amount", + "type": "numeric(15, 2)", + "primaryKey": false, + "notNull": false + }, + "contract_counterparty": { + "name": "contract_counterparty", + "type": "varchar(200)", + "primaryKey": false, + "notNull": false + }, + "counterparty_type": { + "name": "counterparty_type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "contract_period": { + "name": "contract_period", + "type": "varchar(200)", + "primaryKey": false, + "notNull": false + }, + "factual_relation": { + "name": "factual_relation", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "project_number": { + "name": "project_number", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "shipowner_orderer": { + "name": "shipowner_orderer", + "type": "varchar(200)", + "primaryKey": false, + "notNull": false + }, + "governing_law": { + "name": "governing_law", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "project_type": { + "name": "project_type", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "legal_work_requests_legal_work_id_legal_works_id_fk": { + "name": "legal_work_requests_legal_work_id_legal_works_id_fk", + "tableFrom": "legal_work_requests", + "tableTo": "legal_works", + "columnsFrom": [ + "legal_work_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.legal_work_responses": { + "name": "legal_work_responses", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "legal_work_id": { + "name": "legal_work_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "response_content": { + "name": "response_content", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "response_reviewer": { + "name": "response_reviewer", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "response_confirmer": { + "name": "response_confirmer", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "response_approver": { + "name": "response_approver", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "reviewed_at": { + "name": "reviewed_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "confirmed_at": { + "name": "confirmed_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "approved_at": { + "name": "approved_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "is_public": { + "name": "is_public", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_re_revision": { + "name": "is_re_revision", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "parent_response_id": { + "name": "parent_response_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "legal_work_responses_legal_work_id_legal_works_id_fk": { + "name": "legal_work_responses_legal_work_id_legal_works_id_fk", + "tableFrom": "legal_work_responses", + "tableTo": "legal_works", + "columnsFrom": [ + "legal_work_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.legal_works": { + "name": "legal_works", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "category": { + "name": "category", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "company_id": { + "name": "company_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "vendor_code": { + "name": "vendor_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "vendor_name": { + "name": "vendor_name", + "type": "varchar(200)", + "primaryKey": false, + "notNull": true + }, + "is_urgent": { + "name": "is_urgent", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "request_date": { + "name": "request_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "consultation_date": { + "name": "consultation_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "expected_answer_date": { + "name": "expected_answer_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "legal_completion_date": { + "name": "legal_completion_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "reviewer": { + "name": "reviewer", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "legal_responder": { + "name": "legal_responder", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "has_attachment": { + "name": "has_attachment", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "legal_works_company_id_vendors_id_fk": { + "name": "legal_works_company_id_vendors_id_fk", + "tableFrom": "legal_works", + "tableTo": "vendors", + "columnsFrom": [ + "company_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.consent_logs": { + "name": "consent_logs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "consent_logs_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "consent_type": { + "name": "consent_type", + "type": "consent_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "action": { + "name": "action", + "type": "consent_action", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "old_status": { + "name": "old_status", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "new_status": { + "name": "new_status", + "type": "boolean", + "primaryKey": false, + "notNull": true + }, + "policy_version": { + "name": "policy_version", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true + }, + "ip_address": { + "name": "ip_address", + "type": "varchar(45)", + "primaryKey": false, + "notNull": false + }, + "user_agent": { + "name": "user_agent", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "action_timestamp": { + "name": "action_timestamp", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "additional_data": { + "name": "additional_data", + "type": "json", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "consent_logs_user_action_timestamp_idx": { + "name": "consent_logs_user_action_timestamp_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "action_timestamp", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "consent_logs_consent_type_idx": { + "name": "consent_logs_consent_type_idx", + "columns": [ + { + "expression": "consent_type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "consent_logs_action_idx": { + "name": "consent_logs_action_idx", + "columns": [ + { + "expression": "action", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "consent_logs_user_id_users_id_fk": { + "name": "consent_logs_user_id_users_id_fk", + "tableFrom": "consent_logs", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.policy_versions": { + "name": "policy_versions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "policy_versions_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "policy_type": { + "name": "policy_type", + "type": "policy_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "version": { + "name": "version", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "effective_date": { + "name": "effective_date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "is_current": { + "name": "is_current", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "policy_versions_type_version_idx": { + "name": "policy_versions_type_version_idx", + "columns": [ + { + "expression": "policy_type", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "version", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "policy_versions_current_idx": { + "name": "policy_versions_current_idx", + "columns": [ + { + "expression": "is_current", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "policy_versions_effective_date_idx": { + "name": "policy_versions_effective_date_idx", + "columns": [ + { + "expression": "effective_date", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.user_consents": { + "name": "user_consents", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "user_consents_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "consent_type": { + "name": "consent_type", + "type": "consent_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "consent_status": { + "name": "consent_status", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "policy_version": { + "name": "policy_version", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true + }, + "consented_at": { + "name": "consented_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "ip_address": { + "name": "ip_address", + "type": "varchar(45)", + "primaryKey": false, + "notNull": false + }, + "user_agent": { + "name": "user_agent", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "revoked_at": { + "name": "revoked_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "revoke_reason": { + "name": "revoke_reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "user_consents_user_type_idx": { + "name": "user_consents_user_type_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "consent_type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "user_consents_consented_at_idx": { + "name": "user_consents_consented_at_idx", + "columns": [ + { + "expression": "consented_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "user_consents_policy_version_idx": { + "name": "user_consents_policy_version_idx", + "columns": [ + { + "expression": "policy_version", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "user_consents_user_id_users_id_fk": { + "name": "user_consents_user_id_users_id_fk", + "tableFrom": "user_consents", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.bidding_companies": { + "name": "bidding_companies", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "bidding_id": { + "name": "bidding_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "company_id": { + "name": "company_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "invitation_status": { + "name": "invitation_status", + "type": "invitation_status", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'pending'" + }, + "invited_at": { + "name": "invited_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "responded_at": { + "name": "responded_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "pre_quote_amount": { + "name": "pre_quote_amount", + "type": "numeric(15, 2)", + "primaryKey": false, + "notNull": false + }, + "pre_quote_submitted_at": { + "name": "pre_quote_submitted_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "is_pre_quote_selected": { + "name": "is_pre_quote_selected", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "final_quote_amount": { + "name": "final_quote_amount", + "type": "numeric(15, 2)", + "primaryKey": false, + "notNull": false + }, + "final_quote_submitted_at": { + "name": "final_quote_submitted_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "is_winner": { + "name": "is_winner", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "notes": { + "name": "notes", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "contact_person": { + "name": "contact_person", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "contact_email": { + "name": "contact_email", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "contact_phone": { + "name": "contact_phone", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "bidding_companies_bidding_id_biddings_id_fk": { + "name": "bidding_companies_bidding_id_biddings_id_fk", + "tableFrom": "bidding_companies", + "tableTo": "biddings", + "columnsFrom": [ + "bidding_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "bidding_companies_company_id_vendors_id_fk": { + "name": "bidding_companies_company_id_vendors_id_fk", + "tableFrom": "bidding_companies", + "tableTo": "vendors", + "columnsFrom": [ + "company_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.bidding_conditions": { + "name": "bidding_conditions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "bidding_id": { + "name": "bidding_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "payment_terms": { + "name": "payment_terms", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "tax_conditions": { + "name": "tax_conditions", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "contract_delivery_date": { + "name": "contract_delivery_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "is_price_adjustment_applicable": { + "name": "is_price_adjustment_applicable", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "incoterms": { + "name": "incoterms", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "shipping_port": { + "name": "shipping_port", + "type": "varchar(200)", + "primaryKey": false, + "notNull": false + }, + "destination_port": { + "name": "destination_port", + "type": "varchar(200)", + "primaryKey": false, + "notNull": false + }, + "spare_part_options": { + "name": "spare_part_options", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "bidding_conditions_bidding_id_biddings_id_fk": { + "name": "bidding_conditions_bidding_id_biddings_id_fk", + "tableFrom": "bidding_conditions", + "tableTo": "biddings", + "columnsFrom": [ + "bidding_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.bidding_documents": { + "name": "bidding_documents", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "bidding_id": { + "name": "bidding_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "company_id": { + "name": "company_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "pr_item_id": { + "name": "pr_item_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "specification_meeting_id": { + "name": "specification_meeting_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "document_type": { + "name": "document_type", + "type": "document_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "file_name": { + "name": "file_name", + "type": "varchar(500)", + "primaryKey": false, + "notNull": true + }, + "original_file_name": { + "name": "original_file_name", + "type": "varchar(500)", + "primaryKey": false, + "notNull": true + }, + "file_size": { + "name": "file_size", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "mime_type": { + "name": "mime_type", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "file_path": { + "name": "file_path", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "title": { + "name": "title", + "type": "varchar(300)", + "primaryKey": false, + "notNull": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_public": { + "name": "is_public", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "is_required": { + "name": "is_required", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "uploaded_by": { + "name": "uploaded_by", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "uploaded_at": { + "name": "uploaded_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "bidding_documents_bidding_id_biddings_id_fk": { + "name": "bidding_documents_bidding_id_biddings_id_fk", + "tableFrom": "bidding_documents", + "tableTo": "biddings", + "columnsFrom": [ + "bidding_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "bidding_documents_company_id_vendors_id_fk": { + "name": "bidding_documents_company_id_vendors_id_fk", + "tableFrom": "bidding_documents", + "tableTo": "vendors", + "columnsFrom": [ + "company_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "bidding_documents_pr_item_id_pr_items_for_bidding_id_fk": { + "name": "bidding_documents_pr_item_id_pr_items_for_bidding_id_fk", + "tableFrom": "bidding_documents", + "tableTo": "pr_items_for_bidding", + "columnsFrom": [ + "pr_item_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "bidding_documents_specification_meeting_id_specification_meetings_id_fk": { + "name": "bidding_documents_specification_meeting_id_specification_meetings_id_fk", + "tableFrom": "bidding_documents", + "tableTo": "specification_meetings", + "columnsFrom": [ + "specification_meeting_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.bidding_notice_template": { + "name": "bidding_notice_template", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "type": { + "name": "type", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true, + "default": "'standard'" + }, + "title": { + "name": "title", + "type": "varchar(200)", + "primaryKey": false, + "notNull": true, + "default": "'표준 입찰공고문'" + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "''" + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.biddings": { + "name": "biddings", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "bidding_number": { + "name": "bidding_number", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "revision": { + "name": "revision", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "project_id": { + "name": "project_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "project_name": { + "name": "project_name", + "type": "varchar(300)", + "primaryKey": false, + "notNull": false + }, + "item_name": { + "name": "item_name", + "type": "varchar(300)", + "primaryKey": false, + "notNull": false + }, + "title": { + "name": "title", + "type": "varchar(300)", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "contract_type": { + "name": "contract_type", + "type": "contract_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "bidding_type": { + "name": "bidding_type", + "type": "bidding_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "award_count": { + "name": "award_count", + "type": "award_count", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'single'" + }, + "contract_period": { + "name": "contract_period", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "pre_quote_date": { + "name": "pre_quote_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "bidding_registration_date": { + "name": "bidding_registration_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "submission_start_date": { + "name": "submission_start_date", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "submission_end_date": { + "name": "submission_end_date", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "evaluation_date": { + "name": "evaluation_date", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "has_specification_meeting": { + "name": "has_specification_meeting", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "currency": { + "name": "currency", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false, + "default": "'KRW'" + }, + "budget": { + "name": "budget", + "type": "numeric(15, 2)", + "primaryKey": false, + "notNull": false + }, + "target_price": { + "name": "target_price", + "type": "numeric(15, 2)", + "primaryKey": false, + "notNull": false + }, + "final_bid_price": { + "name": "final_bid_price", + "type": "numeric(15, 2)", + "primaryKey": false, + "notNull": false + }, + "pr_number": { + "name": "pr_number", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "has_pr_document": { + "name": "has_pr_document", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "status": { + "name": "status", + "type": "bidding_status", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'bidding_generated'" + }, + "is_public": { + "name": "is_public", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "manager_name": { + "name": "manager_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "manager_email": { + "name": "manager_email", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "manager_phone": { + "name": "manager_phone", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "remarks": { + "name": "remarks", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_by": { + "name": "created_by", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_by": { + "name": "updated_by", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": { + "biddings_project_id_projects_id_fk": { + "name": "biddings_project_id_projects_id_fk", + "tableFrom": "biddings", + "tableTo": "projects", + "columnsFrom": [ + "project_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "biddings_bidding_number_unique": { + "name": "biddings_bidding_number_unique", + "nullsNotDistinct": false, + "columns": [ + "bidding_number" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.company_condition_responses": { + "name": "company_condition_responses", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "bidding_company_id": { + "name": "bidding_company_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "payment_terms_response": { + "name": "payment_terms_response", + "type": "varchar(200)", + "primaryKey": false, + "notNull": false + }, + "tax_conditions_response": { + "name": "tax_conditions_response", + "type": "varchar(200)", + "primaryKey": false, + "notNull": false + }, + "proposed_contract_delivery_date": { + "name": "proposed_contract_delivery_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "price_adjustment_response": { + "name": "price_adjustment_response", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "incoterms_response": { + "name": "incoterms_response", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "proposed_shipping_port": { + "name": "proposed_shipping_port", + "type": "varchar(200)", + "primaryKey": false, + "notNull": false + }, + "proposed_destination_port": { + "name": "proposed_destination_port", + "type": "varchar(200)", + "primaryKey": false, + "notNull": false + }, + "spare_part_response": { + "name": "spare_part_response", + "type": "varchar(200)", + "primaryKey": false, + "notNull": false + }, + "additional_proposals": { + "name": "additional_proposals", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_pre_quote": { + "name": "is_pre_quote", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "submitted_at": { + "name": "submitted_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "company_condition_responses_bidding_company_id_bidding_companies_id_fk": { + "name": "company_condition_responses_bidding_company_id_bidding_companies_id_fk", + "tableFrom": "company_condition_responses", + "tableTo": "bidding_companies", + "columnsFrom": [ + "bidding_company_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.company_pr_item_bids": { + "name": "company_pr_item_bids", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "bidding_company_id": { + "name": "bidding_company_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "pr_item_id": { + "name": "pr_item_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "proposed_delivery_date": { + "name": "proposed_delivery_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "bid_unit_price": { + "name": "bid_unit_price", + "type": "numeric(15, 2)", + "primaryKey": false, + "notNull": false + }, + "bid_amount": { + "name": "bid_amount", + "type": "numeric(15, 2)", + "primaryKey": false, + "notNull": false + }, + "currency": { + "name": "currency", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false, + "default": "'KRW'" + }, + "technical_specification": { + "name": "technical_specification", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_pre_quote": { + "name": "is_pre_quote", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "submitted_at": { + "name": "submitted_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "company_pr_item_bids_bidding_company_id_bidding_companies_id_fk": { + "name": "company_pr_item_bids_bidding_company_id_bidding_companies_id_fk", + "tableFrom": "company_pr_item_bids", + "tableTo": "bidding_companies", + "columnsFrom": [ + "bidding_company_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "company_pr_item_bids_pr_item_id_pr_items_for_bidding_id_fk": { + "name": "company_pr_item_bids_pr_item_id_pr_items_for_bidding_id_fk", + "tableFrom": "company_pr_item_bids", + "tableTo": "pr_items_for_bidding", + "columnsFrom": [ + "pr_item_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pr_documents": { + "name": "pr_documents", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "bidding_id": { + "name": "bidding_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "document_name": { + "name": "document_name", + "type": "varchar(300)", + "primaryKey": false, + "notNull": true + }, + "file_name": { + "name": "file_name", + "type": "varchar(500)", + "primaryKey": false, + "notNull": true + }, + "original_file_name": { + "name": "original_file_name", + "type": "varchar(500)", + "primaryKey": false, + "notNull": true + }, + "file_size": { + "name": "file_size", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "mime_type": { + "name": "mime_type", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "file_path": { + "name": "file_path", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "registered_at": { + "name": "registered_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "registered_by": { + "name": "registered_by", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "version": { + "name": "version", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "pr_documents_bidding_id_biddings_id_fk": { + "name": "pr_documents_bidding_id_biddings_id_fk", + "tableFrom": "pr_documents", + "tableTo": "biddings", + "columnsFrom": [ + "bidding_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pr_items_for_bidding": { + "name": "pr_items_for_bidding", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "bidding_id": { + "name": "bidding_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "item_number": { + "name": "item_number", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "project_info": { + "name": "project_info", + "type": "varchar(300)", + "primaryKey": false, + "notNull": false + }, + "item_info": { + "name": "item_info", + "type": "varchar(300)", + "primaryKey": false, + "notNull": false + }, + "shi": { + "name": "shi", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "requested_delivery_date": { + "name": "requested_delivery_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "annual_unit_price": { + "name": "annual_unit_price", + "type": "numeric(15, 2)", + "primaryKey": false, + "notNull": false + }, + "currency": { + "name": "currency", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false, + "default": "'KRW'" + }, + "quantity": { + "name": "quantity", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "quantity_unit": { + "name": "quantity_unit", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "total_weight": { + "name": "total_weight", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "weight_unit": { + "name": "weight_unit", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "material_description": { + "name": "material_description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "pr_number": { + "name": "pr_number", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "has_spec_document": { + "name": "has_spec_document", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "pr_items_for_bidding_bidding_id_biddings_id_fk": { + "name": "pr_items_for_bidding_bidding_id_biddings_id_fk", + "tableFrom": "pr_items_for_bidding", + "tableTo": "biddings", + "columnsFrom": [ + "bidding_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.specification_meetings": { + "name": "specification_meetings", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "bidding_id": { + "name": "bidding_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "meeting_date": { + "name": "meeting_date", + "type": "timestamp", + "primaryKey": false, + "notNull": true + }, + "meeting_time": { + "name": "meeting_time", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "location": { + "name": "location", + "type": "varchar(500)", + "primaryKey": false, + "notNull": false + }, + "address": { + "name": "address", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "contact_person": { + "name": "contact_person", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "contact_phone": { + "name": "contact_phone", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "contact_email": { + "name": "contact_email", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "agenda": { + "name": "agenda", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "materials": { + "name": "materials", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "notes": { + "name": "notes", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_required": { + "name": "is_required", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "specification_meetings_bidding_id_biddings_id_fk": { + "name": "specification_meetings_bidding_id_biddings_id_fk", + "tableFrom": "specification_meetings", + "tableTo": "biddings", + "columnsFrom": [ + "bidding_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.vendor_selection_results": { + "name": "vendor_selection_results", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "bidding_id": { + "name": "bidding_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "selected_company_id": { + "name": "selected_company_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "selection_reason": { + "name": "selection_reason", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "evaluation_summary": { + "name": "evaluation_summary", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "has_result_documents": { + "name": "has_result_documents", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "selected_at": { + "name": "selected_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "selected_by": { + "name": "selected_by", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "remarks": { + "name": "remarks", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "vendor_selection_results_bidding_id_biddings_id_fk": { + "name": "vendor_selection_results_bidding_id_biddings_id_fk", + "tableFrom": "vendor_selection_results", + "tableTo": "biddings", + "columnsFrom": [ + "bidding_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "vendor_selection_results_selected_company_id_vendors_id_fk": { + "name": "vendor_selection_results_selected_company_id_vendors_id_fk", + "tableFrom": "vendor_selection_results", + "tableTo": "vendors", + "columnsFrom": [ + "selected_company_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.vendor_additional_info": { + "name": "vendor_additional_info", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "business_type": { + "name": "business_type", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "industry_type": { + "name": "industry_type", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "company_size": { + "name": "company_size", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "revenue": { + "name": "revenue", + "type": "numeric(15, 2)", + "primaryKey": false, + "notNull": false + }, + "factory_established_date": { + "name": "factory_established_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "preferred_contract_terms": { + "name": "preferred_contract_terms", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "vendor_additional_info_vendor_id_vendors_id_fk": { + "name": "vendor_additional_info_vendor_id_vendors_id_fk", + "tableFrom": "vendor_additional_info", + "tableTo": "vendors", + "columnsFrom": [ + "vendor_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.vendor_business_contacts": { + "name": "vendor_business_contacts", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "contact_type": { + "name": "contact_type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true + }, + "contact_name": { + "name": "contact_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "position": { + "name": "position", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "department": { + "name": "department", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "responsibility": { + "name": "responsibility", + "type": "varchar(200)", + "primaryKey": false, + "notNull": true + }, + "email": { + "name": "email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "vendor_business_contacts_vendor_id_vendors_id_fk": { + "name": "vendor_business_contacts_vendor_id_vendors_id_fk", + "tableFrom": "vendor_business_contacts", + "tableTo": "vendors", + "columnsFrom": [ + "vendor_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.vendor_regular_registrations": { + "name": "vendor_regular_registrations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true, + "default": "'audit_pass'" + }, + "potential_code": { + "name": "potential_code", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "major_items": { + "name": "major_items", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "registration_request_date": { + "name": "registration_request_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "assigned_department": { + "name": "assigned_department", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "assigned_department_code": { + "name": "assigned_department_code", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "assigned_user": { + "name": "assigned_user", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "assigned_user_code": { + "name": "assigned_user_code", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "remarks": { + "name": "remarks", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "safety_qualification_content": { + "name": "safety_qualification_content", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "gtc_skipped": { + "name": "gtc_skipped", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "vendor_regular_registrations_vendor_id_vendors_id_fk": { + "name": "vendor_regular_registrations_vendor_id_vendors_id_fk", + "tableFrom": "vendor_regular_registrations", + "tableTo": "vendors", + "columnsFrom": [ + "vendor_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.compliance_question_options": { + "name": "compliance_question_options", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "question_id": { + "name": "question_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "option_value": { + "name": "option_value", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "option_text": { + "name": "option_text", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "allows_other_input": { + "name": "allows_other_input", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "display_order": { + "name": "display_order", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "compliance_question_options_question_id_compliance_questions_id_fk": { + "name": "compliance_question_options_question_id_compliance_questions_id_fk", + "tableFrom": "compliance_question_options", + "tableTo": "compliance_questions", + "columnsFrom": [ + "question_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.compliance_questions": { + "name": "compliance_questions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "template_id": { + "name": "template_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "question_number": { + "name": "question_number", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "question_text": { + "name": "question_text", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "question_type": { + "name": "question_type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true + }, + "is_required": { + "name": "is_required", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "has_detail_text": { + "name": "has_detail_text", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "has_file_upload": { + "name": "has_file_upload", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "parent_question_id": { + "name": "parent_question_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "conditional_value": { + "name": "conditional_value", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "display_order": { + "name": "display_order", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "compliance_questions_template_id_compliance_survey_templates_id_fk": { + "name": "compliance_questions_template_id_compliance_survey_templates_id_fk", + "tableFrom": "compliance_questions", + "tableTo": "compliance_survey_templates", + "columnsFrom": [ + "template_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.compliance_response_answers": { + "name": "compliance_response_answers", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "response_id": { + "name": "response_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "question_id": { + "name": "question_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "answer_value": { + "name": "answer_value", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "detail_text": { + "name": "detail_text", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "other_text": { + "name": "other_text", + "type": "varchar(500)", + "primaryKey": false, + "notNull": false + }, + "percentage_value": { + "name": "percentage_value", + "type": "numeric(5, 2)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "compliance_response_answers_response_id_compliance_responses_id_fk": { + "name": "compliance_response_answers_response_id_compliance_responses_id_fk", + "tableFrom": "compliance_response_answers", + "tableTo": "compliance_responses", + "columnsFrom": [ + "response_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "compliance_response_answers_question_id_compliance_questions_id_fk": { + "name": "compliance_response_answers_question_id_compliance_questions_id_fk", + "tableFrom": "compliance_response_answers", + "tableTo": "compliance_questions", + "columnsFrom": [ + "question_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.compliance_response_files": { + "name": "compliance_response_files", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "answer_id": { + "name": "answer_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "file_name": { + "name": "file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "file_path": { + "name": "file_path", + "type": "varchar(1024)", + "primaryKey": false, + "notNull": true + }, + "file_size": { + "name": "file_size", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "mime_type": { + "name": "mime_type", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "uploaded_at": { + "name": "uploaded_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "compliance_response_files_answer_id_compliance_response_answers_id_fk": { + "name": "compliance_response_files_answer_id_compliance_response_answers_id_fk", + "tableFrom": "compliance_response_files", + "tableTo": "compliance_response_answers", + "columnsFrom": [ + "answer_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.compliance_responses": { + "name": "compliance_responses", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "basic_contract_id": { + "name": "basic_contract_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "template_id": { + "name": "template_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true, + "default": "'IN_PROGRESS'" + }, + "completed_at": { + "name": "completed_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "reviewed_by": { + "name": "reviewed_by", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "reviewed_at": { + "name": "reviewed_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "review_notes": { + "name": "review_notes", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "compliance_responses_basic_contract_id_basic_contract_id_fk": { + "name": "compliance_responses_basic_contract_id_basic_contract_id_fk", + "tableFrom": "compliance_responses", + "tableTo": "basic_contract", + "columnsFrom": [ + "basic_contract_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "compliance_responses_template_id_compliance_survey_templates_id_fk": { + "name": "compliance_responses_template_id_compliance_survey_templates_id_fk", + "tableFrom": "compliance_responses", + "tableTo": "compliance_survey_templates", + "columnsFrom": [ + "template_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "compliance_responses_reviewed_by_users_id_fk": { + "name": "compliance_responses_reviewed_by_users_id_fk", + "tableFrom": "compliance_responses", + "tableTo": "users", + "columnsFrom": [ + "reviewed_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.compliance_survey_templates": { + "name": "compliance_survey_templates", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "version": { + "name": "version", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true, + "default": "'1.0'" + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.department_domain_assignment_history": { + "name": "department_domain_assignment_history", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "department_domain_assignment_history_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "assignment_id": { + "name": "assignment_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "action": { + "name": "action", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true + }, + "previous_values": { + "name": "previous_values", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "new_values": { + "name": "new_values", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "changed_by": { + "name": "changed_by", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "change_reason": { + "name": "change_reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.department_domain_assignments": { + "name": "department_domain_assignments", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "department_domain_assignments_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "company_code": { + "name": "company_code", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "department_code": { + "name": "department_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "department_name": { + "name": "department_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "assigned_domain": { + "name": "assigned_domain", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_by": { + "name": "created_by", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "updated_by": { + "name": "updated_by", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.department_domain_mappings": { + "name": "department_domain_mappings", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "department_domain_mappings_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "assignment_id": { + "name": "assignment_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "old_company_code": { + "name": "old_company_code", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "old_department_code": { + "name": "old_department_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "old_department_name": { + "name": "old_department_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "new_company_code": { + "name": "new_company_code", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "new_department_code": { + "name": "new_department_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "new_department_name": { + "name": "new_department_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "mapping_status": { + "name": "mapping_status", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true, + "default": "'pending'" + }, + "mapped_by": { + "name": "mapped_by", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "mapped_at": { + "name": "mapped_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.CUSTOMER_MASTER_BP_HEADER": { + "name": "CUSTOMER_MASTER_BP_HEADER", + "schema": "mdg", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "CUSTOMER_MASTER_BP_HEADER_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "BP_HEADER": { + "name": "BP_HEADER", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "CUSTOMER_MASTER_BP_HEADER_BP_HEADER_unique": { + "name": "CUSTOMER_MASTER_BP_HEADER_BP_HEADER_unique", + "nullsNotDistinct": false, + "columns": [ + "BP_HEADER" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.CUSTOMER_MASTER_BP_HEADER_ADDRESS": { + "name": "CUSTOMER_MASTER_BP_HEADER_ADDRESS", + "schema": "mdg", + "columns": { + "BP_HEADER": { + "name": "BP_HEADER", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "CUSTOMER_MASTER_BP_HEADER_ADDRESS_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "ADDRNO": { + "name": "ADDRNO", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "CUSTOMER_MASTER_BP_HEADER_ADDRESS_BP_HEADER_CUSTOMER_MASTER_BP_HEADER_BP_HEADER_fk": { + "name": "CUSTOMER_MASTER_BP_HEADER_ADDRESS_BP_HEADER_CUSTOMER_MASTER_BP_HEADER_BP_HEADER_fk", + "tableFrom": "CUSTOMER_MASTER_BP_HEADER_ADDRESS", + "tableTo": "CUSTOMER_MASTER_BP_HEADER", + "schemaTo": "mdg", + "columnsFrom": [ + "BP_HEADER" + ], + "columnsTo": [ + "BP_HEADER" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_EMAIL": { + "name": "CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_EMAIL", + "schema": "mdg", + "columns": { + "BP_HEADER": { + "name": "BP_HEADER", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_EMAIL_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "CONSNUMBER": { + "name": "CONSNUMBER", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "DATE_FROM": { + "name": "DATE_FROM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "SMTP_ADDR": { + "name": "SMTP_ADDR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_EMAIL_BP_HEADER_CUSTOMER_MASTER_BP_HEADER_BP_HEADER_fk": { + "name": "CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_EMAIL_BP_HEADER_CUSTOMER_MASTER_BP_HEADER_BP_HEADER_fk", + "tableFrom": "CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_EMAIL", + "tableTo": "CUSTOMER_MASTER_BP_HEADER", + "schemaTo": "mdg", + "columnsFrom": [ + "BP_HEADER" + ], + "columnsTo": [ + "BP_HEADER" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_FAX": { + "name": "CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_FAX", + "schema": "mdg", + "columns": { + "BP_HEADER": { + "name": "BP_HEADER", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_FAX_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "CONSNUMBER": { + "name": "CONSNUMBER", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "COUNTRY": { + "name": "COUNTRY", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "DATE_FROM": { + "name": "DATE_FROM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "FAX_EXTENS": { + "name": "FAX_EXTENS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "FAX_NUMBER": { + "name": "FAX_NUMBER", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_FAX_BP_HEADER_CUSTOMER_MASTER_BP_HEADER_BP_HEADER_fk": { + "name": "CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_FAX_BP_HEADER_CUSTOMER_MASTER_BP_HEADER_BP_HEADER_fk", + "tableFrom": "CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_FAX", + "tableTo": "CUSTOMER_MASTER_BP_HEADER", + "schemaTo": "mdg", + "columnsFrom": [ + "BP_HEADER" + ], + "columnsTo": [ + "BP_HEADER" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_POSTAL": { + "name": "CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_POSTAL", + "schema": "mdg", + "columns": { + "BP_HEADER": { + "name": "BP_HEADER", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_POSTAL_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "CITY1": { + "name": "CITY1", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "CITY2": { + "name": "CITY2", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "COUNTRY": { + "name": "COUNTRY", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "HOUSE_NUM1": { + "name": "HOUSE_NUM1", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "LANGU": { + "name": "LANGU", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "NAME1": { + "name": "NAME1", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "NAME2": { + "name": "NAME2", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "NAME3": { + "name": "NAME3", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "NAME4": { + "name": "NAME4", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "NATION": { + "name": "NATION", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "POST_CODE1": { + "name": "POST_CODE1", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "POST_CODE2": { + "name": "POST_CODE2", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PO_BOX": { + "name": "PO_BOX", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "REGION": { + "name": "REGION", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SORT1": { + "name": "SORT1", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SORT2": { + "name": "SORT2", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "STREET": { + "name": "STREET", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "TAXJURCODE": { + "name": "TAXJURCODE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "TIME_ZONE": { + "name": "TIME_ZONE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "TITLE": { + "name": "TITLE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "TRANSPZONE": { + "name": "TRANSPZONE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_POSTAL_BP_HEADER_CUSTOMER_MASTER_BP_HEADER_BP_HEADER_fk": { + "name": "CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_POSTAL_BP_HEADER_CUSTOMER_MASTER_BP_HEADER_BP_HEADER_fk", + "tableFrom": "CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_POSTAL", + "tableTo": "CUSTOMER_MASTER_BP_HEADER", + "schemaTo": "mdg", + "columnsFrom": [ + "BP_HEADER" + ], + "columnsTo": [ + "BP_HEADER" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_TEL": { + "name": "CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_TEL", + "schema": "mdg", + "columns": { + "BP_HEADER": { + "name": "BP_HEADER", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_TEL_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "CONSNUMBER": { + "name": "CONSNUMBER", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "COUNTRY": { + "name": "COUNTRY", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "DATE_FROM": { + "name": "DATE_FROM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "R3_USER": { + "name": "R3_USER", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "TEL_EXTENS": { + "name": "TEL_EXTENS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "TEL_NUMBER": { + "name": "TEL_NUMBER", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_TEL_BP_HEADER_CUSTOMER_MASTER_BP_HEADER_BP_HEADER_fk": { + "name": "CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_TEL_BP_HEADER_CUSTOMER_MASTER_BP_HEADER_BP_HEADER_fk", + "tableFrom": "CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_TEL", + "tableTo": "CUSTOMER_MASTER_BP_HEADER", + "schemaTo": "mdg", + "columnsFrom": [ + "BP_HEADER" + ], + "columnsTo": [ + "BP_HEADER" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_URL": { + "name": "CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_URL", + "schema": "mdg", + "columns": { + "BP_HEADER": { + "name": "BP_HEADER", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_URL_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "CONSNUMBER": { + "name": "CONSNUMBER", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "DATE_FROM": { + "name": "DATE_FROM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "URI_ADDR": { + "name": "URI_ADDR", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_URL_BP_HEADER_CUSTOMER_MASTER_BP_HEADER_BP_HEADER_fk": { + "name": "CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_URL_BP_HEADER_CUSTOMER_MASTER_BP_HEADER_BP_HEADER_fk", + "tableFrom": "CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_URL", + "tableTo": "CUSTOMER_MASTER_BP_HEADER", + "schemaTo": "mdg", + "columnsFrom": [ + "BP_HEADER" + ], + "columnsTo": [ + "BP_HEADER" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN": { + "name": "CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN", + "schema": "mdg", + "columns": { + "BP_HEADER": { + "name": "BP_HEADER", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "ANRED": { + "name": "ANRED", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "AUFSD": { + "name": "AUFSD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "FAKSD": { + "name": "FAKSD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "GFORM": { + "name": "GFORM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "JMJAH": { + "name": "JMJAH", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "JMZAH": { + "name": "JMZAH", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "J_1KFREPRE": { + "name": "J_1KFREPRE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "J_1KFTBUS": { + "name": "J_1KFTBUS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "J_1KFTIND": { + "name": "J_1KFTIND", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "KATR1": { + "name": "KATR1", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "KDKG1": { + "name": "KDKG1", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "KTOKD": { + "name": "KTOKD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "KUNNR": { + "name": "KUNNR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "LIFNR": { + "name": "LIFNR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "LIFSD": { + "name": "LIFSD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "LOEVM": { + "name": "LOEVM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "NIELS": { + "name": "NIELS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "NODEL": { + "name": "NODEL", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PUGRP": { + "name": "PUGRP", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SPERR": { + "name": "SPERR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SPRAS": { + "name": "SPRAS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "STCD1": { + "name": "STCD1", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "STCD2": { + "name": "STCD2", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "STCD3": { + "name": "STCD3", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "STCD4": { + "name": "STCD4", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "STCEG": { + "name": "STCEG", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "UMJAH": { + "name": "UMJAH", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "UWAER": { + "name": "UWAER", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "VBUND": { + "name": "VBUND", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZAPPDT_C": { + "name": "ZZAPPDT_C", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZAPPTM_C": { + "name": "ZZAPPTM_C", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZAPPUS_C": { + "name": "ZZAPPUS_C", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZBA": { + "name": "ZZBA", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZBRSCH_C": { + "name": "ZZBRSCH_C", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZCRMCD": { + "name": "ZZCRMCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZDOKAR_C": { + "name": "ZZDOKAR_C", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZDOKNR_C": { + "name": "ZZDOKNR_C", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZDOKTL_C": { + "name": "ZZDOKTL_C", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZDOKVR_C": { + "name": "ZZDOKVR_C", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZDUNS": { + "name": "ZZDUNS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZFTBU": { + "name": "ZZFTBU", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZFTBUNM": { + "name": "ZZFTBUNM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZFTDT": { + "name": "ZZFTDT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZFTDTNM": { + "name": "ZZFTDTNM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZFTGT": { + "name": "ZZFTGT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZFTGTNM": { + "name": "ZZFTGTNM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZINBFLGC": { + "name": "ZZINBFLGC", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZLAMDT_C": { + "name": "ZZLAMDT_C", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZLAMTM_C": { + "name": "ZZLAMTM_C", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZLAMUS_C": { + "name": "ZZLAMUS_C", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZORT01_C": { + "name": "ZZORT01_C", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZORT02_C": { + "name": "ZZORT02_C", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZREASON": { + "name": "ZZREASON", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZREGDT_C": { + "name": "ZZREGDT_C", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZREGTM_C": { + "name": "ZZREGTM_C", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZREGUS_C": { + "name": "ZZREGUS_C", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZSTCDT_C": { + "name": "ZZSTCDT_C", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZSTRAS_C": { + "name": "ZZSTRAS_C", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZSUBSEQ_C": { + "name": "ZZSUBSEQ_C", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_BP_HEADER_CUSTOMER_MASTER_BP_HEADER_BP_HEADER_fk": { + "name": "CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_BP_HEADER_CUSTOMER_MASTER_BP_HEADER_BP_HEADER_fk", + "tableFrom": "CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN", + "tableTo": "CUSTOMER_MASTER_BP_HEADER", + "schemaTo": "mdg", + "columnsFrom": [ + "BP_HEADER" + ], + "columnsTo": [ + "BP_HEADER" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZCOMPANY": { + "name": "CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZCOMPANY", + "schema": "mdg", + "columns": { + "BP_HEADER": { + "name": "BP_HEADER", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZCOMPANY_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "AKONT": { + "name": "AKONT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "BUKRS": { + "name": "BUKRS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "FDGRV": { + "name": "FDGRV", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "LOEVM": { + "name": "LOEVM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SPERR": { + "name": "SPERR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZAHLS": { + "name": "ZAHLS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZTERM": { + "name": "ZTERM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZUAWA": { + "name": "ZUAWA", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZWELS": { + "name": "ZWELS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZCOMPANY_BP_HEADER_CUSTOMER_MASTER_BP_HEADER_BP_HEADER_fk": { + "name": "CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZCOMPANY_BP_HEADER_CUSTOMER_MASTER_BP_HEADER_BP_HEADER_fk", + "tableFrom": "CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZCOMPANY", + "tableTo": "CUSTOMER_MASTER_BP_HEADER", + "schemaTo": "mdg", + "columnsFrom": [ + "BP_HEADER" + ], + "columnsTo": [ + "BP_HEADER" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZSALES": { + "name": "CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZSALES", + "schema": "mdg", + "columns": { + "BP_HEADER": { + "name": "BP_HEADER", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZSALES_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "AUFSD": { + "name": "AUFSD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "AWAHR": { + "name": "AWAHR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "BZIRK": { + "name": "BZIRK", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "FAKSD": { + "name": "FAKSD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "INCO1": { + "name": "INCO1", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "INCO2": { + "name": "INCO2", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "KALKS": { + "name": "KALKS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "KDGRP": { + "name": "KDGRP", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "KONDA": { + "name": "KONDA", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "KTGRD": { + "name": "KTGRD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "KURST": { + "name": "KURST", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "KZAZU": { + "name": "KZAZU", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "LIFSD": { + "name": "LIFSD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "LOEVM": { + "name": "LOEVM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "LPRIO": { + "name": "LPRIO", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PLTYP": { + "name": "PLTYP", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SPART": { + "name": "SPART", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "VERSG": { + "name": "VERSG", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "VKBUR": { + "name": "VKBUR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "VKGRP": { + "name": "VKGRP", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "VKORG": { + "name": "VKORG", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "VSBED": { + "name": "VSBED", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "VTWEG": { + "name": "VTWEG", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "VWERK": { + "name": "VWERK", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "WAERS": { + "name": "WAERS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZTERM": { + "name": "ZTERM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZSALES_BP_HEADER_CUSTOMER_MASTER_BP_HEADER_BP_HEADER_fk": { + "name": "CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZSALES_BP_HEADER_CUSTOMER_MASTER_BP_HEADER_BP_HEADER_fk", + "tableFrom": "CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZSALES", + "tableTo": "CUSTOMER_MASTER_BP_HEADER", + "schemaTo": "mdg", + "columnsFrom": [ + "BP_HEADER" + ], + "columnsTo": [ + "BP_HEADER" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZSALES_ZCPFN": { + "name": "CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZSALES_ZCPFN", + "schema": "mdg", + "columns": { + "BP_HEADER": { + "name": "BP_HEADER", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZSALES_ZCPFN_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "DEFPA": { + "name": "DEFPA", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "KUNN2": { + "name": "KUNN2", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PARVW": { + "name": "PARVW", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "PARZA": { + "name": "PARZA", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZSALES_ZCPFN_BP_HEADER_CUSTOMER_MASTER_BP_HEADER_BP_HEADER_fk": { + "name": "CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZSALES_ZCPFN_BP_HEADER_CUSTOMER_MASTER_BP_HEADER_BP_HEADER_fk", + "tableFrom": "CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZSALES_ZCPFN", + "tableTo": "CUSTOMER_MASTER_BP_HEADER", + "schemaTo": "mdg", + "columnsFrom": [ + "BP_HEADER" + ], + "columnsTo": [ + "BP_HEADER" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZTAXIND": { + "name": "CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZTAXIND", + "schema": "mdg", + "columns": { + "BP_HEADER": { + "name": "BP_HEADER", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZTAXIND_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "ALAND": { + "name": "ALAND", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "TATYP": { + "name": "TATYP", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "TAXKD": { + "name": "TAXKD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZTAXIND_BP_HEADER_CUSTOMER_MASTER_BP_HEADER_BP_HEADER_fk": { + "name": "CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZTAXIND_BP_HEADER_CUSTOMER_MASTER_BP_HEADER_BP_HEADER_fk", + "tableFrom": "CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZTAXIND", + "tableTo": "CUSTOMER_MASTER_BP_HEADER", + "schemaTo": "mdg", + "columnsFrom": [ + "BP_HEADER" + ], + "columnsTo": [ + "BP_HEADER" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZVATREG": { + "name": "CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZVATREG", + "schema": "mdg", + "columns": { + "BP_HEADER": { + "name": "BP_HEADER", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZVATREG_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "LAND1": { + "name": "LAND1", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "STCEG": { + "name": "STCEG", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZVATREG_BP_HEADER_CUSTOMER_MASTER_BP_HEADER_BP_HEADER_fk": { + "name": "CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZVATREG_BP_HEADER_CUSTOMER_MASTER_BP_HEADER_BP_HEADER_fk", + "tableFrom": "CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZVATREG", + "tableTo": "CUSTOMER_MASTER_BP_HEADER", + "schemaTo": "mdg", + "columnsFrom": [ + "BP_HEADER" + ], + "columnsTo": [ + "BP_HEADER" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.CUSTOMER_MASTER_BP_HEADER_BP_TAXNUM": { + "name": "CUSTOMER_MASTER_BP_HEADER_BP_TAXNUM", + "schema": "mdg", + "columns": { + "BP_HEADER": { + "name": "BP_HEADER", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "CUSTOMER_MASTER_BP_HEADER_BP_TAXNUM_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "TAXNUM": { + "name": "TAXNUM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "TAXTYPE": { + "name": "TAXTYPE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "CUSTOMER_MASTER_BP_HEADER_BP_TAXNUM_BP_HEADER_CUSTOMER_MASTER_BP_HEADER_BP_HEADER_fk": { + "name": "CUSTOMER_MASTER_BP_HEADER_BP_TAXNUM_BP_HEADER_CUSTOMER_MASTER_BP_HEADER_BP_HEADER_fk", + "tableFrom": "CUSTOMER_MASTER_BP_HEADER_BP_TAXNUM", + "tableTo": "CUSTOMER_MASTER_BP_HEADER", + "schemaTo": "mdg", + "columnsFrom": [ + "BP_HEADER" + ], + "columnsTo": [ + "BP_HEADER" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.DEPARTMENT_CODE_CMCTB_DEPT_MDG": { + "name": "DEPARTMENT_CODE_CMCTB_DEPT_MDG", + "schema": "mdg", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "DEPARTMENT_CODE_CMCTB_DEPT_MDG_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "BICD": { + "name": "BICD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "BIZAREA": { + "name": "BIZAREA", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "CCCD": { + "name": "CCCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "COMPCD": { + "name": "COMPCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "CORPCD": { + "name": "CORPCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "DEPTCD": { + "name": "DEPTCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "DEPTLVL": { + "name": "DEPTLVL", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "DEPTPOSNO": { + "name": "DEPTPOSNO", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "DHEMPID": { + "name": "DHEMPID", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "GNCD": { + "name": "GNCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PCCD": { + "name": "PCCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PDEPTCD": { + "name": "PDEPTCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "VALIDFROMDT": { + "name": "VALIDFROMDT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "VALIDTODT": { + "name": "VALIDTODT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "WERKS": { + "name": "WERKS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "DEPARTMENT_CODE_CMCTB_DEPT_MDG_DEPTCD_unique": { + "name": "DEPARTMENT_CODE_CMCTB_DEPT_MDG_DEPTCD_unique", + "nullsNotDistinct": false, + "columns": [ + "DEPTCD" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.DEPARTMENT_CODE_CMCTB_DEPT_MDG_COMPNM": { + "name": "DEPARTMENT_CODE_CMCTB_DEPT_MDG_COMPNM", + "schema": "mdg", + "columns": { + "DEPTCD": { + "name": "DEPTCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "DEPARTMENT_CODE_CMCTB_DEPT_MDG_COMPNM_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "COMPNM": { + "name": "COMPNM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SPRAS": { + "name": "SPRAS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "DEPARTMENT_CODE_CMCTB_DEPT_MDG_COMPNM_DEPTCD_DEPARTMENT_CODE_CMCTB_DEPT_MDG_DEPTCD_fk": { + "name": "DEPARTMENT_CODE_CMCTB_DEPT_MDG_COMPNM_DEPTCD_DEPARTMENT_CODE_CMCTB_DEPT_MDG_DEPTCD_fk", + "tableFrom": "DEPARTMENT_CODE_CMCTB_DEPT_MDG_COMPNM", + "tableTo": "DEPARTMENT_CODE_CMCTB_DEPT_MDG", + "schemaTo": "mdg", + "columnsFrom": [ + "DEPTCD" + ], + "columnsTo": [ + "DEPTCD" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.DEPARTMENT_CODE_CMCTB_DEPT_MDG_CORPNM": { + "name": "DEPARTMENT_CODE_CMCTB_DEPT_MDG_CORPNM", + "schema": "mdg", + "columns": { + "DEPTCD": { + "name": "DEPTCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "DEPARTMENT_CODE_CMCTB_DEPT_MDG_CORPNM_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "CORPNM": { + "name": "CORPNM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SPRAS": { + "name": "SPRAS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "DEPARTMENT_CODE_CMCTB_DEPT_MDG_CORPNM_DEPTCD_DEPARTMENT_CODE_CMCTB_DEPT_MDG_DEPTCD_fk": { + "name": "DEPARTMENT_CODE_CMCTB_DEPT_MDG_CORPNM_DEPTCD_DEPARTMENT_CODE_CMCTB_DEPT_MDG_DEPTCD_fk", + "tableFrom": "DEPARTMENT_CODE_CMCTB_DEPT_MDG_CORPNM", + "tableTo": "DEPARTMENT_CODE_CMCTB_DEPT_MDG", + "schemaTo": "mdg", + "columnsFrom": [ + "DEPTCD" + ], + "columnsTo": [ + "DEPTCD" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.DEPARTMENT_CODE_CMCTB_DEPT_MDG_DEPTNM": { + "name": "DEPARTMENT_CODE_CMCTB_DEPT_MDG_DEPTNM", + "schema": "mdg", + "columns": { + "DEPTCD": { + "name": "DEPTCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "DEPARTMENT_CODE_CMCTB_DEPT_MDG_DEPTNM_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "DEPTNM": { + "name": "DEPTNM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SPRAS": { + "name": "SPRAS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "DEPARTMENT_CODE_CMCTB_DEPT_MDG_DEPTNM_DEPTCD_DEPARTMENT_CODE_CMCTB_DEPT_MDG_DEPTCD_fk": { + "name": "DEPARTMENT_CODE_CMCTB_DEPT_MDG_DEPTNM_DEPTCD_DEPARTMENT_CODE_CMCTB_DEPT_MDG_DEPTCD_fk", + "tableFrom": "DEPARTMENT_CODE_CMCTB_DEPT_MDG_DEPTNM", + "tableTo": "DEPARTMENT_CODE_CMCTB_DEPT_MDG", + "schemaTo": "mdg", + "columnsFrom": [ + "DEPTCD" + ], + "columnsTo": [ + "DEPTCD" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.EMPLOYEE_MASTER_CMCTB_EMP_MDG": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG", + "schema": "mdg", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "ADDRCNTRY": { + "name": "ADDRCNTRY", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "AEDAT": { + "name": "AEDAT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "AENAM": { + "name": "AENAM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "AEZET": { + "name": "AEZET", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "BICD": { + "name": "BICD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "BIZAREA": { + "name": "BIZAREA", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "BSCADDR": { + "name": "BSCADDR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "COMPCD": { + "name": "COMPCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "CORPCD": { + "name": "CORPCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "COUNTRYCD": { + "name": "COUNTRYCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "CSFROMDT": { + "name": "CSFROMDT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "CSTODT": { + "name": "CSTODT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "CTIROLE": { + "name": "CTIROLE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "DEL": { + "name": "DEL", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "DEPENDDT": { + "name": "DEPENDDT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "DEPTCD": { + "name": "DEPTCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "DHJOBGRDCD": { + "name": "DHJOBGRDCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "DHNAME": { + "name": "DHNAME", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "DHSINGLID": { + "name": "DHSINGLID", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "DISPATCH": { + "name": "DISPATCH", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "DPSTARTDT": { + "name": "DPSTARTDT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "DTLADDR": { + "name": "DTLADDR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "DTLADDR2": { + "name": "DTLADDR2", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "EMAIL": { + "name": "EMAIL", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "EMPADR": { + "name": "EMPADR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "EMPID": { + "name": "EMPID", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "EMPTYPE": { + "name": "EMPTYPE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ENGNAME": { + "name": "ENGNAME", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "EPID": { + "name": "EPID", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ERDAT": { + "name": "ERDAT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ERNAM": { + "name": "ERNAM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ERZET": { + "name": "ERZET", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "FORIGNFLG": { + "name": "FORIGNFLG", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "GJOBCD": { + "name": "GJOBCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "GJOBDUTYCD": { + "name": "GJOBDUTYCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "GJOBGRDCD": { + "name": "GJOBGRDCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "GNCD": { + "name": "GNCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "HRMANAGE": { + "name": "HRMANAGE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "IDNO": { + "name": "IDNO", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "JOBCD": { + "name": "JOBCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "JOBCLASS": { + "name": "JOBCLASS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "JOBDUTYCD": { + "name": "JOBDUTYCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "JOBGRDCD": { + "name": "JOBGRDCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "KTL_EMP": { + "name": "KTL_EMP", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "LVABSENCE": { + "name": "LVABSENCE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MBPHONE": { + "name": "MBPHONE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "NAME": { + "name": "NAME", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "OKTL_EMPL": { + "name": "OKTL_EMPL", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ORGBICD": { + "name": "ORGBICD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ORGCOMPCD": { + "name": "ORGCOMPCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ORGCORPCD": { + "name": "ORGCORPCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ORGDEPTCD": { + "name": "ORGDEPTCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ORGPDEPCD": { + "name": "ORGPDEPCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PAYPLC": { + "name": "PAYPLC", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PDEPTCD": { + "name": "PDEPTCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PSTLCODE": { + "name": "PSTLCODE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "RETIRE": { + "name": "RETIRE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SEX": { + "name": "SEX", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SINGLEID": { + "name": "SINGLEID", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SINGLRQ": { + "name": "SINGLRQ", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SOCIALID": { + "name": "SOCIALID", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SOCIALID_DECR": { + "name": "SOCIALID_DECR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SOJRNEMP": { + "name": "SOJRNEMP", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "TELNUM": { + "name": "TELNUM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "TMPJDIV": { + "name": "TMPJDIV", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "USEDSYS": { + "name": "USEDSYS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "VALFROMDT": { + "name": "VALFROMDT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "VALTODT": { + "name": "VALTODT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "WFREQUIRE": { + "name": "WFREQUIRE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "WORKPLC": { + "name": "WORKPLC", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZPRFLG": { + "name": "ZPRFLG", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZBUKRS": { + "name": "ZZBUKRS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_unique": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_unique", + "nullsNotDistinct": false, + "columns": [ + "EMPID" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.EMPLOYEE_MASTER_CMCTB_EMP_MDG_BANM": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_BANM", + "schema": "mdg", + "columns": { + "EMPID": { + "name": "EMPID", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_BANM_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "GTEXT": { + "name": "GTEXT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SPRAS": { + "name": "SPRAS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "EMPLOYEE_MASTER_CMCTB_EMP_MDG_BANM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_BANM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk", + "tableFrom": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_BANM", + "tableTo": "EMPLOYEE_MASTER_CMCTB_EMP_MDG", + "schemaTo": "mdg", + "columnsFrom": [ + "EMPID" + ], + "columnsTo": [ + "EMPID" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.EMPLOYEE_MASTER_CMCTB_EMP_MDG_BINM": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_BINM", + "schema": "mdg", + "columns": { + "EMPID": { + "name": "EMPID", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_BINM_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "BINM": { + "name": "BINM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SPRAS": { + "name": "SPRAS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "EMPLOYEE_MASTER_CMCTB_EMP_MDG_BINM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_BINM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk", + "tableFrom": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_BINM", + "tableTo": "EMPLOYEE_MASTER_CMCTB_EMP_MDG", + "schemaTo": "mdg", + "columnsFrom": [ + "EMPID" + ], + "columnsTo": [ + "EMPID" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.EMPLOYEE_MASTER_CMCTB_EMP_MDG_COMPNM": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_COMPNM", + "schema": "mdg", + "columns": { + "EMPID": { + "name": "EMPID", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_COMPNM_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "COMPNM": { + "name": "COMPNM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SPRAS": { + "name": "SPRAS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "EMPLOYEE_MASTER_CMCTB_EMP_MDG_COMPNM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_COMPNM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk", + "tableFrom": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_COMPNM", + "tableTo": "EMPLOYEE_MASTER_CMCTB_EMP_MDG", + "schemaTo": "mdg", + "columnsFrom": [ + "EMPID" + ], + "columnsTo": [ + "EMPID" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.EMPLOYEE_MASTER_CMCTB_EMP_MDG_CORPNM": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_CORPNM", + "schema": "mdg", + "columns": { + "EMPID": { + "name": "EMPID", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_CORPNM_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "CORPNM": { + "name": "CORPNM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SPRAS": { + "name": "SPRAS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "EMPLOYEE_MASTER_CMCTB_EMP_MDG_CORPNM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_CORPNM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk", + "tableFrom": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_CORPNM", + "tableTo": "EMPLOYEE_MASTER_CMCTB_EMP_MDG", + "schemaTo": "mdg", + "columnsFrom": [ + "EMPID" + ], + "columnsTo": [ + "EMPID" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.EMPLOYEE_MASTER_CMCTB_EMP_MDG_COUNTRYNM": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_COUNTRYNM", + "schema": "mdg", + "columns": { + "EMPID": { + "name": "EMPID", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_COUNTRYNM_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "COUNTRYNM": { + "name": "COUNTRYNM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SPRAS": { + "name": "SPRAS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "EMPLOYEE_MASTER_CMCTB_EMP_MDG_COUNTRYNM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_COUNTRYNM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk", + "tableFrom": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_COUNTRYNM", + "tableTo": "EMPLOYEE_MASTER_CMCTB_EMP_MDG", + "schemaTo": "mdg", + "columnsFrom": [ + "EMPID" + ], + "columnsTo": [ + "EMPID" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTCODE": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTCODE", + "schema": "mdg", + "columns": { + "EMPID": { + "name": "EMPID", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTCODE_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "PCCD": { + "name": "PCCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "WERKS": { + "name": "WERKS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTCODE_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTCODE_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk", + "tableFrom": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTCODE", + "tableTo": "EMPLOYEE_MASTER_CMCTB_EMP_MDG", + "schemaTo": "mdg", + "columnsFrom": [ + "EMPID" + ], + "columnsTo": [ + "EMPID" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTCODE_PCCDNM": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTCODE_PCCDNM", + "schema": "mdg", + "columns": { + "EMPID": { + "name": "EMPID", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTCODE_PCCDNM_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "KTEXT": { + "name": "KTEXT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "LTEXT": { + "name": "LTEXT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTCODE_PCCDNM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTCODE_PCCDNM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk", + "tableFrom": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTCODE_PCCDNM", + "tableTo": "EMPLOYEE_MASTER_CMCTB_EMP_MDG", + "schemaTo": "mdg", + "columnsFrom": [ + "EMPID" + ], + "columnsTo": [ + "EMPID" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTNM": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTNM", + "schema": "mdg", + "columns": { + "EMPID": { + "name": "EMPID", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTNM_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "DEPTNM": { + "name": "DEPTNM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SPRAS": { + "name": "SPRAS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTNM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTNM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk", + "tableFrom": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTNM", + "tableTo": "EMPLOYEE_MASTER_CMCTB_EMP_MDG", + "schemaTo": "mdg", + "columnsFrom": [ + "EMPID" + ], + "columnsTo": [ + "EMPID" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.EMPLOYEE_MASTER_CMCTB_EMP_MDG_DHJOBGDNM": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_DHJOBGDNM", + "schema": "mdg", + "columns": { + "EMPID": { + "name": "EMPID", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_DHJOBGDNM_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "JOBGRDNM": { + "name": "JOBGRDNM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SPRAS": { + "name": "SPRAS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "EMPLOYEE_MASTER_CMCTB_EMP_MDG_DHJOBGDNM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_DHJOBGDNM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk", + "tableFrom": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_DHJOBGDNM", + "tableTo": "EMPLOYEE_MASTER_CMCTB_EMP_MDG", + "schemaTo": "mdg", + "columnsFrom": [ + "EMPID" + ], + "columnsTo": [ + "EMPID" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBDUTYNM": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBDUTYNM", + "schema": "mdg", + "columns": { + "EMPID": { + "name": "EMPID", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBDUTYNM_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "GJOBDUTYNM": { + "name": "GJOBDUTYNM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SPRAS": { + "name": "SPRAS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBDUTYNM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBDUTYNM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk", + "tableFrom": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBDUTYNM", + "tableTo": "EMPLOYEE_MASTER_CMCTB_EMP_MDG", + "schemaTo": "mdg", + "columnsFrom": [ + "EMPID" + ], + "columnsTo": [ + "EMPID" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBGRDNM": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBGRDNM", + "schema": "mdg", + "columns": { + "EMPID": { + "name": "EMPID", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBGRDNM_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "GJOBGRDNM": { + "name": "GJOBGRDNM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SPRAS": { + "name": "SPRAS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBGRDNM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBGRDNM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk", + "tableFrom": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBGRDNM", + "tableTo": "EMPLOYEE_MASTER_CMCTB_EMP_MDG", + "schemaTo": "mdg", + "columnsFrom": [ + "EMPID" + ], + "columnsTo": [ + "EMPID" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBGRDTYPE": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBGRDTYPE", + "schema": "mdg", + "columns": { + "EMPID": { + "name": "EMPID", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBGRDTYPE_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "ISEXECUT": { + "name": "ISEXECUT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "JOBGRDTYPE": { + "name": "JOBGRDTYPE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBGRDTYPE_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBGRDTYPE_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk", + "tableFrom": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBGRDTYPE", + "tableTo": "EMPLOYEE_MASTER_CMCTB_EMP_MDG", + "schemaTo": "mdg", + "columnsFrom": [ + "EMPID" + ], + "columnsTo": [ + "EMPID" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBNM": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBNM", + "schema": "mdg", + "columns": { + "EMPID": { + "name": "EMPID", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBNM_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "GJOBNM": { + "name": "GJOBNM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SPRAS": { + "name": "SPRAS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBNM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBNM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk", + "tableFrom": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBNM", + "tableTo": "EMPLOYEE_MASTER_CMCTB_EMP_MDG", + "schemaTo": "mdg", + "columnsFrom": [ + "EMPID" + ], + "columnsTo": [ + "EMPID" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.EMPLOYEE_MASTER_CMCTB_EMP_MDG_GNNM": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_GNNM", + "schema": "mdg", + "columns": { + "EMPID": { + "name": "EMPID", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_GNNM_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "GNNM": { + "name": "GNNM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SPRAS": { + "name": "SPRAS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "EMPLOYEE_MASTER_CMCTB_EMP_MDG_GNNM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_GNNM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk", + "tableFrom": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_GNNM", + "tableTo": "EMPLOYEE_MASTER_CMCTB_EMP_MDG", + "schemaTo": "mdg", + "columnsFrom": [ + "EMPID" + ], + "columnsTo": [ + "EMPID" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBDUTYNM": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBDUTYNM", + "schema": "mdg", + "columns": { + "EMPID": { + "name": "EMPID", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBDUTYNM_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "JOBDUTYNM": { + "name": "JOBDUTYNM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SPRAS": { + "name": "SPRAS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBDUTYNM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBDUTYNM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk", + "tableFrom": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBDUTYNM", + "tableTo": "EMPLOYEE_MASTER_CMCTB_EMP_MDG", + "schemaTo": "mdg", + "columnsFrom": [ + "EMPID" + ], + "columnsTo": [ + "EMPID" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBGRDNM": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBGRDNM", + "schema": "mdg", + "columns": { + "EMPID": { + "name": "EMPID", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBGRDNM_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "ISEXECUT": { + "name": "ISEXECUT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "JOBGRDNM": { + "name": "JOBGRDNM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "JOBGRDTYPE": { + "name": "JOBGRDTYPE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SPRAS": { + "name": "SPRAS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBGRDNM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBGRDNM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk", + "tableFrom": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBGRDNM", + "tableTo": "EMPLOYEE_MASTER_CMCTB_EMP_MDG", + "schemaTo": "mdg", + "columnsFrom": [ + "EMPID" + ], + "columnsTo": [ + "EMPID" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBNM": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBNM", + "schema": "mdg", + "columns": { + "EMPID": { + "name": "EMPID", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBNM_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "JOBNM": { + "name": "JOBNM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SPRAS": { + "name": "SPRAS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBNM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBNM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk", + "tableFrom": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBNM", + "tableTo": "EMPLOYEE_MASTER_CMCTB_EMP_MDG", + "schemaTo": "mdg", + "columnsFrom": [ + "EMPID" + ], + "columnsTo": [ + "EMPID" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.EMPLOYEE_MASTER_CMCTB_EMP_MDG_KTLNM": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_KTLNM", + "schema": "mdg", + "columns": { + "EMPID": { + "name": "EMPID", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_KTLNM_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "LTEXT": { + "name": "LTEXT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SPRAS": { + "name": "SPRAS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "EMPLOYEE_MASTER_CMCTB_EMP_MDG_KTLNM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_KTLNM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk", + "tableFrom": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_KTLNM", + "tableTo": "EMPLOYEE_MASTER_CMCTB_EMP_MDG", + "schemaTo": "mdg", + "columnsFrom": [ + "EMPID" + ], + "columnsTo": [ + "EMPID" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.EMPLOYEE_MASTER_CMCTB_EMP_MDG_OKTLNM": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_OKTLNM", + "schema": "mdg", + "columns": { + "EMPID": { + "name": "EMPID", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_OKTLNM_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "LTEXT": { + "name": "LTEXT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SPRAS": { + "name": "SPRAS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "EMPLOYEE_MASTER_CMCTB_EMP_MDG_OKTLNM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_OKTLNM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk", + "tableFrom": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_OKTLNM", + "tableTo": "EMPLOYEE_MASTER_CMCTB_EMP_MDG", + "schemaTo": "mdg", + "columnsFrom": [ + "EMPID" + ], + "columnsTo": [ + "EMPID" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGBICDNM": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGBICDNM", + "schema": "mdg", + "columns": { + "EMPID": { + "name": "EMPID", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGBICDNM_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "BINM": { + "name": "BINM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SPRAS": { + "name": "SPRAS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGBICDNM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGBICDNM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk", + "tableFrom": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGBICDNM", + "tableTo": "EMPLOYEE_MASTER_CMCTB_EMP_MDG", + "schemaTo": "mdg", + "columnsFrom": [ + "EMPID" + ], + "columnsTo": [ + "EMPID" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGCOMPNM": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGCOMPNM", + "schema": "mdg", + "columns": { + "EMPID": { + "name": "EMPID", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGCOMPNM_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "COMPNM": { + "name": "COMPNM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SPRAS": { + "name": "SPRAS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGCOMPNM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGCOMPNM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk", + "tableFrom": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGCOMPNM", + "tableTo": "EMPLOYEE_MASTER_CMCTB_EMP_MDG", + "schemaTo": "mdg", + "columnsFrom": [ + "EMPID" + ], + "columnsTo": [ + "EMPID" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGCORPNM": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGCORPNM", + "schema": "mdg", + "columns": { + "EMPID": { + "name": "EMPID", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGCORPNM_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "CORPNM": { + "name": "CORPNM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SPRAS": { + "name": "SPRAS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGCORPNM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGCORPNM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk", + "tableFrom": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGCORPNM", + "tableTo": "EMPLOYEE_MASTER_CMCTB_EMP_MDG", + "schemaTo": "mdg", + "columnsFrom": [ + "EMPID" + ], + "columnsTo": [ + "EMPID" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGDEPTNM": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGDEPTNM", + "schema": "mdg", + "columns": { + "EMPID": { + "name": "EMPID", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGDEPTNM_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "DEPTNM": { + "name": "DEPTNM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SPRAS": { + "name": "SPRAS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGDEPTNM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGDEPTNM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk", + "tableFrom": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGDEPTNM", + "tableTo": "EMPLOYEE_MASTER_CMCTB_EMP_MDG", + "schemaTo": "mdg", + "columnsFrom": [ + "EMPID" + ], + "columnsTo": [ + "EMPID" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGPDEPNM": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGPDEPNM", + "schema": "mdg", + "columns": { + "EMPID": { + "name": "EMPID", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGPDEPNM_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "DEPTNM": { + "name": "DEPTNM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SPRAS": { + "name": "SPRAS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGPDEPNM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGPDEPNM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk", + "tableFrom": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGPDEPNM", + "tableTo": "EMPLOYEE_MASTER_CMCTB_EMP_MDG", + "schemaTo": "mdg", + "columnsFrom": [ + "EMPID" + ], + "columnsTo": [ + "EMPID" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.EMPLOYEE_MASTER_CMCTB_EMP_MDG_PDEPTNM": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_PDEPTNM", + "schema": "mdg", + "columns": { + "EMPID": { + "name": "EMPID", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_PDEPTNM_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "DEPTNM": { + "name": "DEPTNM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SPRAS": { + "name": "SPRAS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "EMPLOYEE_MASTER_CMCTB_EMP_MDG_PDEPTNM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk": { + "name": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_PDEPTNM_EMPID_EMPLOYEE_MASTER_CMCTB_EMP_MDG_EMPID_fk", + "tableFrom": "EMPLOYEE_MASTER_CMCTB_EMP_MDG_PDEPTNM", + "tableTo": "EMPLOYEE_MASTER_CMCTB_EMP_MDG", + "schemaTo": "mdg", + "columnsFrom": [ + "EMPID" + ], + "columnsTo": [ + "EMPID" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.EMPLOYEE_REFERENCE_MASTER_CMCTB_EMP_REF_MDG_IF": { + "name": "EMPLOYEE_REFERENCE_MASTER_CMCTB_EMP_REF_MDG_IF", + "schema": "mdg", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "EMPLOYEE_REFERENCE_MASTER_CMCTB_EMP_REF_MDG_IF_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "ADTL_01": { + "name": "ADTL_01", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ADTL_02": { + "name": "ADTL_02", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "CORPCD": { + "name": "CORPCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "GRPCD": { + "name": "GRPCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "MAINCD": { + "name": "MAINCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "VALIDFROMDT": { + "name": "VALIDFROMDT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "VALIDTODT": { + "name": "VALIDTODT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "EMPLOYEE_REFERENCE_MASTER_CMCTB_EMP_REF_MDG_IF_GRPCD_unique": { + "name": "EMPLOYEE_REFERENCE_MASTER_CMCTB_EMP_REF_MDG_IF_GRPCD_unique", + "nullsNotDistinct": false, + "columns": [ + "GRPCD" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.EMPLOYEE_REFERENCE_MASTER_CMCTB_EMP_REF_MDG_IF_NAME": { + "name": "EMPLOYEE_REFERENCE_MASTER_CMCTB_EMP_REF_MDG_IF_NAME", + "schema": "mdg", + "columns": { + "GRPCD": { + "name": "GRPCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "EMPLOYEE_REFERENCE_MASTER_CMCTB_EMP_REF_MDG_IF_NAME_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "NAME": { + "name": "NAME", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SPRAS": { + "name": "SPRAS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "EMPLOYEE_REFERENCE_MASTER_CMCTB_EMP_REF_MDG_IF_NAME_GRPCD_EMPLOYEE_REFERENCE_MASTER_CMCTB_EMP_REF_MDG_IF_GRPCD_fk": { + "name": "EMPLOYEE_REFERENCE_MASTER_CMCTB_EMP_REF_MDG_IF_NAME_GRPCD_EMPLOYEE_REFERENCE_MASTER_CMCTB_EMP_REF_MDG_IF_GRPCD_fk", + "tableFrom": "EMPLOYEE_REFERENCE_MASTER_CMCTB_EMP_REF_MDG_IF_NAME", + "tableTo": "EMPLOYEE_REFERENCE_MASTER_CMCTB_EMP_REF_MDG_IF", + "schemaTo": "mdg", + "columnsFrom": [ + "GRPCD" + ], + "columnsTo": [ + "GRPCD" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.EQUP_MASTER_MATL": { + "name": "EQUP_MASTER_MATL", + "schema": "mdg", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "EQUP_MASTER_MATL_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "BISMT": { + "name": "BISMT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "BRGEW": { + "name": "BRGEW", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "GEWEI": { + "name": "GEWEI", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "GROES": { + "name": "GROES", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "LVORM": { + "name": "LVORM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MAGRV": { + "name": "MAGRV", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MATKL": { + "name": "MATKL", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MATNR": { + "name": "MATNR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "MBRSH": { + "name": "MBRSH", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MEABM": { + "name": "MEABM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MEINS": { + "name": "MEINS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MSTAE": { + "name": "MSTAE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MSTDE": { + "name": "MSTDE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MTART": { + "name": "MTART", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "NTGEW": { + "name": "NTGEW", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PRDHA": { + "name": "PRDHA", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SPART": { + "name": "SPART", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "VHART": { + "name": "VHART", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "VOLEH": { + "name": "VOLEH", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZAPPDT": { + "name": "ZZAPPDT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZAPPTM": { + "name": "ZZAPPTM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZAPPUS": { + "name": "ZZAPPUS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZDESC": { + "name": "ZZDESC", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZLAMDT": { + "name": "ZZLAMDT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZLAMTM": { + "name": "ZZLAMTM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZLAMUS": { + "name": "ZZLAMUS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZNAME": { + "name": "ZZNAME", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZPRFLG": { + "name": "ZZPRFLG", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZREGDT": { + "name": "ZZREGDT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZREGTM": { + "name": "ZZREGTM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZREGUS": { + "name": "ZZREGUS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZSPEC": { + "name": "ZZSPEC", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "EQUP_MASTER_MATL_MATNR_unique": { + "name": "EQUP_MASTER_MATL_MATNR_unique", + "nullsNotDistinct": false, + "columns": [ + "MATNR" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.EQUP_MASTER_MATL_CHARASGN": { + "name": "EQUP_MASTER_MATL_CHARASGN", + "schema": "mdg", + "columns": { + "MATNR": { + "name": "MATNR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "EQUP_MASTER_MATL_CHARASGN_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "ATAW1": { + "name": "ATAW1", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ATAWE": { + "name": "ATAWE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ATBEZ": { + "name": "ATBEZ", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ATFLB": { + "name": "ATFLB", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ATFLV": { + "name": "ATFLV", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ATNAM": { + "name": "ATNAM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ATWRT": { + "name": "ATWRT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ATWTB": { + "name": "ATWTB", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "CLASS": { + "name": "CLASS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "KLART": { + "name": "KLART", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "EQUP_MASTER_MATL_CHARASGN_MATNR_EQUP_MASTER_MATL_MATNR_fk": { + "name": "EQUP_MASTER_MATL_CHARASGN_MATNR_EQUP_MASTER_MATL_MATNR_fk", + "tableFrom": "EQUP_MASTER_MATL_CHARASGN", + "tableTo": "EQUP_MASTER_MATL", + "schemaTo": "mdg", + "columnsFrom": [ + "MATNR" + ], + "columnsTo": [ + "MATNR" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.EQUP_MASTER_MATL_CLASSASGN": { + "name": "EQUP_MASTER_MATL_CLASSASGN", + "schema": "mdg", + "columns": { + "MATNR": { + "name": "MATNR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "EQUP_MASTER_MATL_CLASSASGN_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "CLASS": { + "name": "CLASS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "KLART": { + "name": "KLART", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "EQUP_MASTER_MATL_CLASSASGN_MATNR_EQUP_MASTER_MATL_MATNR_fk": { + "name": "EQUP_MASTER_MATL_CLASSASGN_MATNR_EQUP_MASTER_MATL_MATNR_fk", + "tableFrom": "EQUP_MASTER_MATL_CLASSASGN", + "tableTo": "EQUP_MASTER_MATL", + "schemaTo": "mdg", + "columnsFrom": [ + "MATNR" + ], + "columnsTo": [ + "MATNR" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.EQUP_MASTER_MATL_DESC": { + "name": "EQUP_MASTER_MATL_DESC", + "schema": "mdg", + "columns": { + "MATNR": { + "name": "MATNR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "EQUP_MASTER_MATL_DESC_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "MAKTX": { + "name": "MAKTX", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SPRAS": { + "name": "SPRAS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "EQUP_MASTER_MATL_DESC_MATNR_EQUP_MASTER_MATL_MATNR_fk": { + "name": "EQUP_MASTER_MATL_DESC_MATNR_EQUP_MASTER_MATL_MATNR_fk", + "tableFrom": "EQUP_MASTER_MATL_DESC", + "tableTo": "EQUP_MASTER_MATL", + "schemaTo": "mdg", + "columnsFrom": [ + "MATNR" + ], + "columnsTo": [ + "MATNR" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.EQUP_MASTER_MATL_PLNT": { + "name": "EQUP_MASTER_MATL_PLNT", + "schema": "mdg", + "columns": { + "MATNR": { + "name": "MATNR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "EQUP_MASTER_MATL_PLNT_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "LVORM": { + "name": "LVORM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MMSTA": { + "name": "MMSTA", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MMSTD": { + "name": "MMSTD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "WERKS": { + "name": "WERKS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZLAMDT": { + "name": "ZZLAMDT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZLAMTM": { + "name": "ZZLAMTM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZLAMUS": { + "name": "ZZLAMUS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZMTARP": { + "name": "ZZMTARP", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZPRFLG": { + "name": "ZZPRFLG", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZREGDT": { + "name": "ZZREGDT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZREGTM": { + "name": "ZZREGTM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZREGUS": { + "name": "ZZREGUS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "EQUP_MASTER_MATL_PLNT_MATNR_EQUP_MASTER_MATL_MATNR_fk": { + "name": "EQUP_MASTER_MATL_PLNT_MATNR_EQUP_MASTER_MATL_MATNR_fk", + "tableFrom": "EQUP_MASTER_MATL_PLNT", + "tableTo": "EQUP_MASTER_MATL", + "schemaTo": "mdg", + "columnsFrom": [ + "MATNR" + ], + "columnsTo": [ + "MATNR" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.EQUP_MASTER_MATL_UNIT": { + "name": "EQUP_MASTER_MATL_UNIT", + "schema": "mdg", + "columns": { + "MATNR": { + "name": "MATNR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "EQUP_MASTER_MATL_UNIT_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "GEWEI": { + "name": "GEWEI", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MEABM": { + "name": "MEABM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MEINH": { + "name": "MEINH", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "UMREN": { + "name": "UMREN", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "UMREZ": { + "name": "UMREZ", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "VOLEH": { + "name": "VOLEH", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "EQUP_MASTER_MATL_UNIT_MATNR_EQUP_MASTER_MATL_MATNR_fk": { + "name": "EQUP_MASTER_MATL_UNIT_MATNR_EQUP_MASTER_MATL_MATNR_fk", + "tableFrom": "EQUP_MASTER_MATL_UNIT", + "tableTo": "EQUP_MASTER_MATL", + "schemaTo": "mdg", + "columnsFrom": [ + "MATNR" + ], + "columnsTo": [ + "MATNR" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.MATERIAL_MASTER_PART_MATL": { + "name": "MATERIAL_MASTER_PART_MATL", + "schema": "mdg", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "MATERIAL_MASTER_PART_MATL_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "BISMT": { + "name": "BISMT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "BRGEW": { + "name": "BRGEW", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "GEWEI": { + "name": "GEWEI", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "GROES": { + "name": "GROES", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "LVORM": { + "name": "LVORM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MAGRV": { + "name": "MAGRV", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MATKL": { + "name": "MATKL", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MATNR": { + "name": "MATNR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "MBRSH": { + "name": "MBRSH", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MEABM": { + "name": "MEABM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MEINS": { + "name": "MEINS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MSTAE": { + "name": "MSTAE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MSTDE": { + "name": "MSTDE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MTART": { + "name": "MTART", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "NTGEW": { + "name": "NTGEW", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PRDHA": { + "name": "PRDHA", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SPART": { + "name": "SPART", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "VHART": { + "name": "VHART", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "VOLEH": { + "name": "VOLEH", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZACT": { + "name": "ZZACT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZAPPDT": { + "name": "ZZAPPDT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZAPPTM": { + "name": "ZZAPPTM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZAPPUS": { + "name": "ZZAPPUS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZCERT": { + "name": "ZZCERT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZDESC": { + "name": "ZZDESC", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZINSP": { + "name": "ZZINSP", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZLAMDT": { + "name": "ZZLAMDT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZLAMTM": { + "name": "ZZLAMTM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZLAMUS": { + "name": "ZZLAMUS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZMMTYP": { + "name": "ZZMMTYP", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZMRC": { + "name": "ZZMRC", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZNAME": { + "name": "ZZNAME", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZPJT": { + "name": "ZZPJT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZPLMID": { + "name": "ZZPLMID", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZPRCD_SCV_CTLP": { + "name": "ZZPRCD_SCV_CTLP", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZPRFLG": { + "name": "ZZPRFLG", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZREGDT": { + "name": "ZZREGDT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZREGTM": { + "name": "ZZREGTM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZREGUS": { + "name": "ZZREGUS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZREPMAT": { + "name": "ZZREPMAT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZREP_DIA": { + "name": "ZZREP_DIA", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZREP_DIA_UOM": { + "name": "ZZREP_DIA_UOM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZREP_ITM_MATL": { + "name": "ZZREP_ITM_MATL", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZSMID": { + "name": "ZZSMID", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZSPEC": { + "name": "ZZSPEC", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZSTL": { + "name": "ZZSTL", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "MATERIAL_MASTER_PART_MATL_MATNR_unique": { + "name": "MATERIAL_MASTER_PART_MATL_MATNR_unique", + "nullsNotDistinct": false, + "columns": [ + "MATNR" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.MATERIAL_MASTER_PART_MATL_CHARASGN": { + "name": "MATERIAL_MASTER_PART_MATL_CHARASGN", + "schema": "mdg", + "columns": { + "MATNR": { + "name": "MATNR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "MATERIAL_MASTER_PART_MATL_CHARASGN_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "ATAW1": { + "name": "ATAW1", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ATAWE": { + "name": "ATAWE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ATBEZ": { + "name": "ATBEZ", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ATFLB": { + "name": "ATFLB", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ATFLV": { + "name": "ATFLV", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ATNAM": { + "name": "ATNAM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "ATWRT": { + "name": "ATWRT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ATWTB": { + "name": "ATWTB", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "CLASS": { + "name": "CLASS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "KLART": { + "name": "KLART", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "MATERIAL_MASTER_PART_MATL_CHARASGN_MATNR_MATERIAL_MASTER_PART_MATL_MATNR_fk": { + "name": "MATERIAL_MASTER_PART_MATL_CHARASGN_MATNR_MATERIAL_MASTER_PART_MATL_MATNR_fk", + "tableFrom": "MATERIAL_MASTER_PART_MATL_CHARASGN", + "tableTo": "MATERIAL_MASTER_PART_MATL", + "schemaTo": "mdg", + "columnsFrom": [ + "MATNR" + ], + "columnsTo": [ + "MATNR" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.MATERIAL_MASTER_PART_MATL_CLASSASGN": { + "name": "MATERIAL_MASTER_PART_MATL_CLASSASGN", + "schema": "mdg", + "columns": { + "MATNR": { + "name": "MATNR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "MATERIAL_MASTER_PART_MATL_CLASSASGN_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "CLASS": { + "name": "CLASS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "KLART": { + "name": "KLART", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "MATERIAL_MASTER_PART_MATL_CLASSASGN_MATNR_MATERIAL_MASTER_PART_MATL_MATNR_fk": { + "name": "MATERIAL_MASTER_PART_MATL_CLASSASGN_MATNR_MATERIAL_MASTER_PART_MATL_MATNR_fk", + "tableFrom": "MATERIAL_MASTER_PART_MATL_CLASSASGN", + "tableTo": "MATERIAL_MASTER_PART_MATL", + "schemaTo": "mdg", + "columnsFrom": [ + "MATNR" + ], + "columnsTo": [ + "MATNR" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.MATERIAL_MASTER_PART_MATL_DESC": { + "name": "MATERIAL_MASTER_PART_MATL_DESC", + "schema": "mdg", + "columns": { + "MATNR": { + "name": "MATNR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "MATERIAL_MASTER_PART_MATL_DESC_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "MAKTX": { + "name": "MAKTX", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SPRAS": { + "name": "SPRAS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "MATERIAL_MASTER_PART_MATL_DESC_MATNR_MATERIAL_MASTER_PART_MATL_MATNR_fk": { + "name": "MATERIAL_MASTER_PART_MATL_DESC_MATNR_MATERIAL_MASTER_PART_MATL_MATNR_fk", + "tableFrom": "MATERIAL_MASTER_PART_MATL_DESC", + "tableTo": "MATERIAL_MASTER_PART_MATL", + "schemaTo": "mdg", + "columnsFrom": [ + "MATNR" + ], + "columnsTo": [ + "MATNR" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.MATERIAL_MASTER_PART_MATL_PLNT": { + "name": "MATERIAL_MASTER_PART_MATL_PLNT", + "schema": "mdg", + "columns": { + "MATNR": { + "name": "MATNR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "MATERIAL_MASTER_PART_MATL_PLNT_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "LVORM": { + "name": "LVORM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MMSTA": { + "name": "MMSTA", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MMSTD": { + "name": "MMSTD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "WERKS": { + "name": "WERKS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "ZZLAMDT": { + "name": "ZZLAMDT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZLAMTM": { + "name": "ZZLAMTM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZLAMUS": { + "name": "ZZLAMUS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZMTARP": { + "name": "ZZMTARP", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZPRFLG": { + "name": "ZZPRFLG", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZREGDT": { + "name": "ZZREGDT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZREGTM": { + "name": "ZZREGTM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZREGUS": { + "name": "ZZREGUS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "MATERIAL_MASTER_PART_MATL_PLNT_MATNR_MATERIAL_MASTER_PART_MATL_MATNR_fk": { + "name": "MATERIAL_MASTER_PART_MATL_PLNT_MATNR_MATERIAL_MASTER_PART_MATL_MATNR_fk", + "tableFrom": "MATERIAL_MASTER_PART_MATL_PLNT", + "tableTo": "MATERIAL_MASTER_PART_MATL", + "schemaTo": "mdg", + "columnsFrom": [ + "MATNR" + ], + "columnsTo": [ + "MATNR" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.MATERIAL_MASTER_PART_MATL_UNIT": { + "name": "MATERIAL_MASTER_PART_MATL_UNIT", + "schema": "mdg", + "columns": { + "MATNR": { + "name": "MATNR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "MATERIAL_MASTER_PART_MATL_UNIT_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "BREIT": { + "name": "BREIT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "BRGEW": { + "name": "BRGEW", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "GEWEI": { + "name": "GEWEI", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "HOEHE": { + "name": "HOEHE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "LAENG": { + "name": "LAENG", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MEABM": { + "name": "MEABM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MEINH": { + "name": "MEINH", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "UMREN": { + "name": "UMREN", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "UMREZ": { + "name": "UMREZ", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "VOLEH": { + "name": "VOLEH", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "VOLUM": { + "name": "VOLUM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "MATERIAL_MASTER_PART_MATL_UNIT_MATNR_MATERIAL_MASTER_PART_MATL_MATNR_fk": { + "name": "MATERIAL_MASTER_PART_MATL_UNIT_MATNR_MATERIAL_MASTER_PART_MATL_MATNR_fk", + "tableFrom": "MATERIAL_MASTER_PART_MATL_UNIT", + "tableTo": "MATERIAL_MASTER_PART_MATL", + "schemaTo": "mdg", + "columnsFrom": [ + "MATNR" + ], + "columnsTo": [ + "MATNR" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.MATERIAL_MASTER_PART_RETURN_CMCTB_MAT_BSE": { + "name": "MATERIAL_MASTER_PART_RETURN_CMCTB_MAT_BSE", + "schema": "mdg", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "MATERIAL_MASTER_PART_RETURN_CMCTB_MAT_BSE_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "IF_MSG": { + "name": "IF_MSG", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "IF_STAT": { + "name": "IF_STAT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MAT_CD": { + "name": "MAT_CD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "MAT_ID": { + "name": "MAT_ID", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "MATERIAL_MASTER_PART_RETURN_CMCTB_MAT_BSE_MAT_CD_unique": { + "name": "MATERIAL_MASTER_PART_RETURN_CMCTB_MAT_BSE_MAT_CD_unique", + "nullsNotDistinct": false, + "columns": [ + "MAT_CD" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.MODEL_MASTER_MATL": { + "name": "MODEL_MASTER_MATL", + "schema": "mdg", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "MODEL_MASTER_MATL_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "BISMT": { + "name": "BISMT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "BRGEW": { + "name": "BRGEW", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "GEWEI": { + "name": "GEWEI", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "GROES": { + "name": "GROES", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "LVORM": { + "name": "LVORM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MAGRV": { + "name": "MAGRV", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MATKL": { + "name": "MATKL", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MATNR": { + "name": "MATNR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "MBRSH": { + "name": "MBRSH", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MEABM": { + "name": "MEABM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MEINS": { + "name": "MEINS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MSTAE": { + "name": "MSTAE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MSTDE": { + "name": "MSTDE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MTART": { + "name": "MTART", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "NTGEW": { + "name": "NTGEW", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PRDHA": { + "name": "PRDHA", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SPART": { + "name": "SPART", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "VHART": { + "name": "VHART", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "VOLEH": { + "name": "VOLEH", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZAPPDT": { + "name": "ZZAPPDT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZAPPTM": { + "name": "ZZAPPTM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZAPPUS": { + "name": "ZZAPPUS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZDESC": { + "name": "ZZDESC", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZDOKAR": { + "name": "ZZDOKAR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZDOKNR": { + "name": "ZZDOKNR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZDOKTL": { + "name": "ZZDOKTL", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZDOKVR": { + "name": "ZZDOKVR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZLAMDT": { + "name": "ZZLAMDT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZLAMTM": { + "name": "ZZLAMTM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZLAMUS": { + "name": "ZZLAMUS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZMMTYP": { + "name": "ZZMMTYP", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZNAME": { + "name": "ZZNAME", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZPRFLG": { + "name": "ZZPRFLG", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZREGDT": { + "name": "ZZREGDT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZREGTM": { + "name": "ZZREGTM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZREGUS": { + "name": "ZZREGUS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZSPEC": { + "name": "ZZSPEC", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "MODEL_MASTER_MATL_MATNR_unique": { + "name": "MODEL_MASTER_MATL_MATNR_unique", + "nullsNotDistinct": false, + "columns": [ + "MATNR" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.MODEL_MASTER_MATL_CHARASGN": { + "name": "MODEL_MASTER_MATL_CHARASGN", + "schema": "mdg", + "columns": { + "MATNR": { + "name": "MATNR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "MODEL_MASTER_MATL_CHARASGN_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "ATAW1": { + "name": "ATAW1", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ATAWE": { + "name": "ATAWE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ATBEZ": { + "name": "ATBEZ", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ATFLB": { + "name": "ATFLB", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ATFLV": { + "name": "ATFLV", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ATNAM": { + "name": "ATNAM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ATWRT": { + "name": "ATWRT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ATWTB": { + "name": "ATWTB", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "CLASS": { + "name": "CLASS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "KLART": { + "name": "KLART", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "MODEL_MASTER_MATL_CHARASGN_MATNR_MODEL_MASTER_MATL_MATNR_fk": { + "name": "MODEL_MASTER_MATL_CHARASGN_MATNR_MODEL_MASTER_MATL_MATNR_fk", + "tableFrom": "MODEL_MASTER_MATL_CHARASGN", + "tableTo": "MODEL_MASTER_MATL", + "schemaTo": "mdg", + "columnsFrom": [ + "MATNR" + ], + "columnsTo": [ + "MATNR" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.MODEL_MASTER_MATL_CLASSASGN": { + "name": "MODEL_MASTER_MATL_CLASSASGN", + "schema": "mdg", + "columns": { + "MATNR": { + "name": "MATNR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "MODEL_MASTER_MATL_CLASSASGN_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "CLASS": { + "name": "CLASS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "KLART": { + "name": "KLART", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "MODEL_MASTER_MATL_CLASSASGN_MATNR_MODEL_MASTER_MATL_MATNR_fk": { + "name": "MODEL_MASTER_MATL_CLASSASGN_MATNR_MODEL_MASTER_MATL_MATNR_fk", + "tableFrom": "MODEL_MASTER_MATL_CLASSASGN", + "tableTo": "MODEL_MASTER_MATL", + "schemaTo": "mdg", + "columnsFrom": [ + "MATNR" + ], + "columnsTo": [ + "MATNR" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.MODEL_MASTER_MATL_DESC": { + "name": "MODEL_MASTER_MATL_DESC", + "schema": "mdg", + "columns": { + "MATNR": { + "name": "MATNR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "MODEL_MASTER_MATL_DESC_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "MAKTX": { + "name": "MAKTX", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SPRAS": { + "name": "SPRAS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "MODEL_MASTER_MATL_DESC_MATNR_MODEL_MASTER_MATL_MATNR_fk": { + "name": "MODEL_MASTER_MATL_DESC_MATNR_MODEL_MASTER_MATL_MATNR_fk", + "tableFrom": "MODEL_MASTER_MATL_DESC", + "tableTo": "MODEL_MASTER_MATL", + "schemaTo": "mdg", + "columnsFrom": [ + "MATNR" + ], + "columnsTo": [ + "MATNR" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.MODEL_MASTER_MATL_PLNT": { + "name": "MODEL_MASTER_MATL_PLNT", + "schema": "mdg", + "columns": { + "MATNR": { + "name": "MATNR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "MODEL_MASTER_MATL_PLNT_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "LVORM": { + "name": "LVORM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MMSTA": { + "name": "MMSTA", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MMSTD": { + "name": "MMSTD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "WERKS": { + "name": "WERKS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZLAMDT": { + "name": "ZZLAMDT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZLAMTM": { + "name": "ZZLAMTM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZLAMUS": { + "name": "ZZLAMUS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZMTARP": { + "name": "ZZMTARP", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZPRFLG": { + "name": "ZZPRFLG", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZREGDT": { + "name": "ZZREGDT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZREGTM": { + "name": "ZZREGTM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZREGUS": { + "name": "ZZREGUS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "MODEL_MASTER_MATL_PLNT_MATNR_MODEL_MASTER_MATL_MATNR_fk": { + "name": "MODEL_MASTER_MATL_PLNT_MATNR_MODEL_MASTER_MATL_MATNR_fk", + "tableFrom": "MODEL_MASTER_MATL_PLNT", + "tableTo": "MODEL_MASTER_MATL", + "schemaTo": "mdg", + "columnsFrom": [ + "MATNR" + ], + "columnsTo": [ + "MATNR" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.MODEL_MASTER_MATL_UNIT": { + "name": "MODEL_MASTER_MATL_UNIT", + "schema": "mdg", + "columns": { + "MATNR": { + "name": "MATNR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "MODEL_MASTER_MATL_UNIT_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "BREIT": { + "name": "BREIT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "BRGEW": { + "name": "BRGEW", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "GEWEI": { + "name": "GEWEI", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "HOEHE": { + "name": "HOEHE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "LAENG": { + "name": "LAENG", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MEABM": { + "name": "MEABM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MEINH": { + "name": "MEINH", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "UMREN": { + "name": "UMREN", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "UMREZ": { + "name": "UMREZ", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "VOLEH": { + "name": "VOLEH", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "VOLUM": { + "name": "VOLUM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "MODEL_MASTER_MATL_UNIT_MATNR_MODEL_MASTER_MATL_MATNR_fk": { + "name": "MODEL_MASTER_MATL_UNIT_MATNR_MODEL_MASTER_MATL_MATNR_fk", + "tableFrom": "MODEL_MASTER_MATL_UNIT", + "tableTo": "MODEL_MASTER_MATL", + "schemaTo": "mdg", + "columnsFrom": [ + "MATNR" + ], + "columnsTo": [ + "MATNR" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.ORGANIZATION_MASTER_HRHMTB_CCTR": { + "name": "ORGANIZATION_MASTER_HRHMTB_CCTR", + "schema": "mdg", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "ORGANIZATION_MASTER_HRHMTB_CCTR_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "ABTEI": { + "name": "ABTEI", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ANRED": { + "name": "ANRED", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "BKZER": { + "name": "BKZER", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "BKZKP": { + "name": "BKZKP", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "BKZKS": { + "name": "BKZKS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "BKZOB": { + "name": "BKZOB", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "BUKRS": { + "name": "BUKRS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "CCTR": { + "name": "CCTR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "DATAB": { + "name": "DATAB", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "DATBI": { + "name": "DATBI", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "DATLT": { + "name": "DATLT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "DRNAM": { + "name": "DRNAM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "FUNC_AREA": { + "name": "FUNC_AREA", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "GSBER": { + "name": "GSBER", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "KHINR": { + "name": "KHINR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "KOKRS": { + "name": "KOKRS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "KOSAR": { + "name": "KOSAR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "LAND1": { + "name": "LAND1", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MGEFL": { + "name": "MGEFL", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "NAME1": { + "name": "NAME1", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "NAME2": { + "name": "NAME2", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "NAME3": { + "name": "NAME3", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "NAME4": { + "name": "NAME4", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ORT01": { + "name": "ORT01", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ORT02": { + "name": "ORT02", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PFACH": { + "name": "PFACH", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PKZER": { + "name": "PKZER", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PKZKP": { + "name": "PKZKP", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PKZKS": { + "name": "PKZKS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PRCTR": { + "name": "PRCTR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PSTL2": { + "name": "PSTL2", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PSTLZ": { + "name": "PSTLZ", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "REGIO": { + "name": "REGIO", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SPRAS": { + "name": "SPRAS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "STRAS": { + "name": "STRAS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "TELBX": { + "name": "TELBX", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "TELF1": { + "name": "TELF1", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "TELF2": { + "name": "TELF2", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "TELFX": { + "name": "TELFX", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "TELTX": { + "name": "TELTX", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "TELX1": { + "name": "TELX1", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "TXJCD": { + "name": "TXJCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "VERAK": { + "name": "VERAK", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "VERAK_USE": { + "name": "VERAK_USE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "VMETH": { + "name": "VMETH", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "WAERS": { + "name": "WAERS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZBRANCH": { + "name": "ZZBRANCH", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZDELETE": { + "name": "ZZDELETE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZFCTRI": { + "name": "ZZFCTRI", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZSECCODE": { + "name": "ZZSECCODE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZSEGMENT": { + "name": "ZZSEGMENT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "ORGANIZATION_MASTER_HRHMTB_CCTR_CCTR_unique": { + "name": "ORGANIZATION_MASTER_HRHMTB_CCTR_CCTR_unique", + "nullsNotDistinct": false, + "columns": [ + "CCTR" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.ORGANIZATION_MASTER_HRHMTB_CCTR_TEXT": { + "name": "ORGANIZATION_MASTER_HRHMTB_CCTR_TEXT", + "schema": "mdg", + "columns": { + "CCTR": { + "name": "CCTR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "ORGANIZATION_MASTER_HRHMTB_CCTR_TEXT_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "KTEXT": { + "name": "KTEXT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "LTEXT": { + "name": "LTEXT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "ORGANIZATION_MASTER_HRHMTB_CCTR_TEXT_CCTR_ORGANIZATION_MASTER_HRHMTB_CCTR_CCTR_fk": { + "name": "ORGANIZATION_MASTER_HRHMTB_CCTR_TEXT_CCTR_ORGANIZATION_MASTER_HRHMTB_CCTR_CCTR_fk", + "tableFrom": "ORGANIZATION_MASTER_HRHMTB_CCTR_TEXT", + "tableTo": "ORGANIZATION_MASTER_HRHMTB_CCTR", + "schemaTo": "mdg", + "columnsFrom": [ + "CCTR" + ], + "columnsTo": [ + "CCTR" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "ORGANIZATION_MASTER_HRHMTB_CCTR_TEXT_CCTR_unique": { + "name": "ORGANIZATION_MASTER_HRHMTB_CCTR_TEXT_CCTR_unique", + "nullsNotDistinct": false, + "columns": [ + "CCTR" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.ORGANIZATION_MASTER_HRHMTB_PCTR": { + "name": "ORGANIZATION_MASTER_HRHMTB_PCTR", + "schema": "mdg", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "ORGANIZATION_MASTER_HRHMTB_PCTR_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "ABTEI": { + "name": "ABTEI", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "DATAB": { + "name": "DATAB", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "DATBI": { + "name": "DATBI", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "KHINR": { + "name": "KHINR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "KOKRS": { + "name": "KOKRS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "LOCK_IND": { + "name": "LOCK_IND", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PCTR": { + "name": "PCTR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "SEGMENT": { + "name": "SEGMENT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "TXJCD": { + "name": "TXJCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "VERAK": { + "name": "VERAK", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "VERAK_USE": { + "name": "VERAK_USE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZDELETE": { + "name": "ZZDELETE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "ORGANIZATION_MASTER_HRHMTB_PCTR_PCTR_unique": { + "name": "ORGANIZATION_MASTER_HRHMTB_PCTR_PCTR_unique", + "nullsNotDistinct": false, + "columns": [ + "PCTR" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.ORGANIZATION_MASTER_HRHMTB_ZBUKRS": { + "name": "ORGANIZATION_MASTER_HRHMTB_ZBUKRS", + "schema": "mdg", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "ORGANIZATION_MASTER_HRHMTB_ZBUKRS_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "CURR_BUKR": { + "name": "CURR_BUKR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZBUKRS": { + "name": "ZBUKRS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "ZZBUTXT": { + "name": "ZZBUTXT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZCITY": { + "name": "ZZCITY", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZCOUNTRY": { + "name": "ZZCOUNTRY", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZDELETE": { + "name": "ZZDELETE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZLANGU": { + "name": "ZZLANGU", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "ORGANIZATION_MASTER_HRHMTB_ZBUKRS_ZBUKRS_unique": { + "name": "ORGANIZATION_MASTER_HRHMTB_ZBUKRS_ZBUKRS_unique", + "nullsNotDistinct": false, + "columns": [ + "ZBUKRS" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.ORGANIZATION_MASTER_HRHMTB_ZEKGRP": { + "name": "ORGANIZATION_MASTER_HRHMTB_ZEKGRP", + "schema": "mdg", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "ORGANIZATION_MASTER_HRHMTB_ZEKGRP_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "ZEKGRP": { + "name": "ZEKGRP", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "ZZDELETE": { + "name": "ZZDELETE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZEKNAM": { + "name": "ZZEKNAM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZEKTEL": { + "name": "ZZEKTEL", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZEMPNUM": { + "name": "ZZEMPNUM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZSINGLE": { + "name": "ZZSINGLE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZTELFX": { + "name": "ZZTELFX", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZTEL_NUM": { + "name": "ZZTEL_NUM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "ORGANIZATION_MASTER_HRHMTB_ZEKGRP_ZEKGRP_unique": { + "name": "ORGANIZATION_MASTER_HRHMTB_ZEKGRP_ZEKGRP_unique", + "nullsNotDistinct": false, + "columns": [ + "ZEKGRP" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.ORGANIZATION_MASTER_HRHMTB_ZEKORG": { + "name": "ORGANIZATION_MASTER_HRHMTB_ZEKORG", + "schema": "mdg", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "ORGANIZATION_MASTER_HRHMTB_ZEKORG_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "ZEKORG": { + "name": "ZEKORG", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "ZZDELETE": { + "name": "ZZDELETE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZEKOTX": { + "name": "ZZEKOTX", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "ORGANIZATION_MASTER_HRHMTB_ZEKORG_ZEKORG_unique": { + "name": "ORGANIZATION_MASTER_HRHMTB_ZEKORG_ZEKORG_unique", + "nullsNotDistinct": false, + "columns": [ + "ZEKORG" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.ORGANIZATION_MASTER_HRHMTB_ZGSBER": { + "name": "ORGANIZATION_MASTER_HRHMTB_ZGSBER", + "schema": "mdg", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "ORGANIZATION_MASTER_HRHMTB_ZGSBER_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "ZGSBER": { + "name": "ZGSBER", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "ZZDELETE": { + "name": "ZZDELETE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "ORGANIZATION_MASTER_HRHMTB_ZGSBER_ZGSBER_unique": { + "name": "ORGANIZATION_MASTER_HRHMTB_ZGSBER_ZGSBER_unique", + "nullsNotDistinct": false, + "columns": [ + "ZGSBER" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.ORGANIZATION_MASTER_HRHMTB_ZGSBER_TEXT": { + "name": "ORGANIZATION_MASTER_HRHMTB_ZGSBER_TEXT", + "schema": "mdg", + "columns": { + "ZGSBER": { + "name": "ZGSBER", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "ORGANIZATION_MASTER_HRHMTB_ZGSBER_TEXT_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "LANGU": { + "name": "LANGU", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "TXTMI": { + "name": "TXTMI", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "ORGANIZATION_MASTER_HRHMTB_ZGSBER_TEXT_ZGSBER_ORGANIZATION_MASTER_HRHMTB_ZGSBER_ZGSBER_fk": { + "name": "ORGANIZATION_MASTER_HRHMTB_ZGSBER_TEXT_ZGSBER_ORGANIZATION_MASTER_HRHMTB_ZGSBER_ZGSBER_fk", + "tableFrom": "ORGANIZATION_MASTER_HRHMTB_ZGSBER_TEXT", + "tableTo": "ORGANIZATION_MASTER_HRHMTB_ZGSBER", + "schemaTo": "mdg", + "columnsFrom": [ + "ZGSBER" + ], + "columnsTo": [ + "ZGSBER" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "ORGANIZATION_MASTER_HRHMTB_ZGSBER_TEXT_ZGSBER_unique": { + "name": "ORGANIZATION_MASTER_HRHMTB_ZGSBER_TEXT_ZGSBER_unique", + "nullsNotDistinct": false, + "columns": [ + "ZGSBER" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.ORGANIZATION_MASTER_HRHMTB_ZLGORT": { + "name": "ORGANIZATION_MASTER_HRHMTB_ZLGORT", + "schema": "mdg", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "ORGANIZATION_MASTER_HRHMTB_ZLGORT_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "ZLGORT": { + "name": "ZLGORT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "ZWERKS": { + "name": "ZWERKS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "ZZDELETE": { + "name": "ZZDELETE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZLGOBE": { + "name": "ZZLGOBE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "ORGANIZATION_MASTER_HRHMTB_ZLGORT_ZLGORT_unique": { + "name": "ORGANIZATION_MASTER_HRHMTB_ZLGORT_ZLGORT_unique", + "nullsNotDistinct": false, + "columns": [ + "ZLGORT" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.ORGANIZATION_MASTER_HRHMTB_ZSPART": { + "name": "ORGANIZATION_MASTER_HRHMTB_ZSPART", + "schema": "mdg", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "ORGANIZATION_MASTER_HRHMTB_ZSPART_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "ZSPART": { + "name": "ZSPART", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "ZZDELETE": { + "name": "ZZDELETE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "ORGANIZATION_MASTER_HRHMTB_ZSPART_ZSPART_unique": { + "name": "ORGANIZATION_MASTER_HRHMTB_ZSPART_ZSPART_unique", + "nullsNotDistinct": false, + "columns": [ + "ZSPART" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.ORGANIZATION_MASTER_HRHMTB_ZVKBUR": { + "name": "ORGANIZATION_MASTER_HRHMTB_ZVKBUR", + "schema": "mdg", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "ORGANIZATION_MASTER_HRHMTB_ZVKBUR_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "CTRY_SOFF": { + "name": "CTRY_SOFF", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "LANG_SOFF": { + "name": "LANG_SOFF", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZVKBUR": { + "name": "ZVKBUR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "ZZDELETE": { + "name": "ZZDELETE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "ORGANIZATION_MASTER_HRHMTB_ZVKBUR_ZVKBUR_unique": { + "name": "ORGANIZATION_MASTER_HRHMTB_ZVKBUR_ZVKBUR_unique", + "nullsNotDistinct": false, + "columns": [ + "ZVKBUR" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.ORGANIZATION_MASTER_HRHMTB_ZVKGRP": { + "name": "ORGANIZATION_MASTER_HRHMTB_ZVKGRP", + "schema": "mdg", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "ORGANIZATION_MASTER_HRHMTB_ZVKGRP_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "ZVKGRP": { + "name": "ZVKGRP", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "ZZDELETE": { + "name": "ZZDELETE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "ORGANIZATION_MASTER_HRHMTB_ZVKGRP_ZVKGRP_unique": { + "name": "ORGANIZATION_MASTER_HRHMTB_ZVKGRP_ZVKGRP_unique", + "nullsNotDistinct": false, + "columns": [ + "ZVKGRP" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.ORGANIZATION_MASTER_HRHMTB_ZVKORG": { + "name": "ORGANIZATION_MASTER_HRHMTB_ZVKORG", + "schema": "mdg", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "ORGANIZATION_MASTER_HRHMTB_ZVKORG_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "ZVKORG": { + "name": "ZVKORG", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "ZZBOAVO": { + "name": "ZZBOAVO", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZDELETE": { + "name": "ZZDELETE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZKUNNR": { + "name": "ZZKUNNR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZVKOKL": { + "name": "ZZVKOKL", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZWAERS": { + "name": "ZZWAERS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "ORGANIZATION_MASTER_HRHMTB_ZVKORG_ZVKORG_unique": { + "name": "ORGANIZATION_MASTER_HRHMTB_ZVKORG_ZVKORG_unique", + "nullsNotDistinct": false, + "columns": [ + "ZVKORG" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.ORGANIZATION_MASTER_HRHMTB_ZVSTEL": { + "name": "ORGANIZATION_MASTER_HRHMTB_ZVSTEL", + "schema": "mdg", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "ORGANIZATION_MASTER_HRHMTB_ZVSTEL_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "ALAN_VSTE": { + "name": "ALAN_VSTE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "AZON_VSTE": { + "name": "AZON_VSTE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "CTRY_SHPT": { + "name": "CTRY_SHPT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "LANG_SHPT": { + "name": "LANG_SHPT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZVSTEL": { + "name": "ZVSTEL", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "ZZDELETE": { + "name": "ZZDELETE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZFABKL": { + "name": "ZZFABKL", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZLAZBS": { + "name": "ZZLAZBS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZRIZBS": { + "name": "ZZRIZBS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "ORGANIZATION_MASTER_HRHMTB_ZVSTEL_ZVSTEL_unique": { + "name": "ORGANIZATION_MASTER_HRHMTB_ZVSTEL_ZVSTEL_unique", + "nullsNotDistinct": false, + "columns": [ + "ZVSTEL" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.ORGANIZATION_MASTER_HRHMTB_ZVTWEG": { + "name": "ORGANIZATION_MASTER_HRHMTB_ZVTWEG", + "schema": "mdg", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "ORGANIZATION_MASTER_HRHMTB_ZVTWEG_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "ZVTWEG": { + "name": "ZVTWEG", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "ZZDELETE": { + "name": "ZZDELETE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "ORGANIZATION_MASTER_HRHMTB_ZVTWEG_ZVTWEG_unique": { + "name": "ORGANIZATION_MASTER_HRHMTB_ZVTWEG_ZVTWEG_unique", + "nullsNotDistinct": false, + "columns": [ + "ZVTWEG" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.ORGANIZATION_MASTER_HRHMTB_ZWERKS": { + "name": "ORGANIZATION_MASTER_HRHMTB_ZWERKS", + "schema": "mdg", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "ORGANIZATION_MASTER_HRHMTB_ZWERKS_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "CTRY_PLNT": { + "name": "CTRY_PLNT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "LANG_PLNT": { + "name": "LANG_PLNT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZWERKS": { + "name": "ZWERKS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "ZZDELETE": { + "name": "ZZDELETE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZFABKL": { + "name": "ZZFABKL", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZNAME1": { + "name": "ZZNAME1", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ZZNAME2": { + "name": "ZZNAME2", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "ORGANIZATION_MASTER_HRHMTB_ZWERKS_ZWERKS_unique": { + "name": "ORGANIZATION_MASTER_HRHMTB_ZWERKS_ZWERKS_unique", + "nullsNotDistinct": false, + "columns": [ + "ZWERKS" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.PROJECT_MASTER_CMCTB_PROJ_MAST": { + "name": "PROJECT_MASTER_CMCTB_PROJ_MAST", + "schema": "mdg", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "PROJECT_MASTER_CMCTB_PROJ_MAST_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "AS_GRNT_PRD": { + "name": "AS_GRNT_PRD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "BIZCLS": { + "name": "BIZCLS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "BIZLOC_CD": { + "name": "BIZLOC_CD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "BIZ_DMN": { + "name": "BIZ_DMN", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "BP_DL_DT": { + "name": "BP_DL_DT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "CHN_PROJ_TP": { + "name": "CHN_PROJ_TP", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "CLS_1": { + "name": "CLS_1", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "CLS_2": { + "name": "CLS_2", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "CNRT_CNTN_YN": { + "name": "CNRT_CNTN_YN", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "CNRT_DL_DT": { + "name": "CNRT_DL_DT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "CNRT_DT": { + "name": "CNRT_DT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "CNRT_RESV_YN": { + "name": "CNRT_RESV_YN", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "CO_CD": { + "name": "CO_CD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "CSTM_PO_NO": { + "name": "CSTM_PO_NO", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "DEL_YN": { + "name": "DEL_YN", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "DIGT_PDT_GRP": { + "name": "DIGT_PDT_GRP", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "DIST_PATH": { + "name": "DIST_PATH", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "DL_BF_PROJ_NM": { + "name": "DL_BF_PROJ_NM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "DL_CSTM_CD": { + "name": "DL_CSTM_CD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "DOCK_CD": { + "name": "DOCK_CD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "DSN_CHRGR": { + "name": "DSN_CHRGR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "FIN_GRNT_FN_DT": { + "name": "FIN_GRNT_FN_DT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "GENT_CNT": { + "name": "GENT_CNT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "GOV": { + "name": "GOV", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "GRNT_STDT": { + "name": "GRNT_STDT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "IF_STAT": { + "name": "IF_STAT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "IMO_NO": { + "name": "IMO_NO", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "INQY_NO": { + "name": "INQY_NO", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "INQY_SEQ": { + "name": "INQY_SEQ", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "IO_GB": { + "name": "IO_GB", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MNG_ACOT_DMN": { + "name": "MNG_ACOT_DMN", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MN_ENGN_TP_CD": { + "name": "MN_ENGN_TP_CD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MSHIP_NO": { + "name": "MSHIP_NO", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "NEW_MC_YN": { + "name": "NEW_MC_YN", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "NTTP": { + "name": "NTTP", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ORDR_GRNT_FN_DT": { + "name": "ORDR_GRNT_FN_DT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ORDR_GRNT_PRD": { + "name": "ORDR_GRNT_PRD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "OWN_1": { + "name": "OWN_1", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "OWN_AB": { + "name": "OWN_AB", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "OWN_NM": { + "name": "OWN_NM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PDT_LVL_4": { + "name": "PDT_LVL_4", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PLNT_CD": { + "name": "PLNT_CD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PRCTR": { + "name": "PRCTR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PRGS_STAT": { + "name": "PRGS_STAT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PROJ_CRTE_REQ_DT": { + "name": "PROJ_CRTE_REQ_DT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PROJ_CRTE_REQ_EMPNO": { + "name": "PROJ_CRTE_REQ_EMPNO", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PROJ_DL_PLN_DT": { + "name": "PROJ_DL_PLN_DT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PROJ_DL_RT_DT": { + "name": "PROJ_DL_RT_DT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PROJ_DSC": { + "name": "PROJ_DSC", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PROJ_DTL_TP": { + "name": "PROJ_DTL_TP", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PROJ_ETC_TP": { + "name": "PROJ_ETC_TP", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PROJ_GB": { + "name": "PROJ_GB", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PROJ_NO": { + "name": "PROJ_NO", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "PROJ_PRGS_YN": { + "name": "PROJ_PRGS_YN", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PROJ_PROF": { + "name": "PROJ_PROF", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PROJ_SCP": { + "name": "PROJ_SCP", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PROJ_WBS_TP": { + "name": "PROJ_WBS_TP", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PRO_PROJ_NO": { + "name": "PRO_PROJ_NO", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "QM_CLS": { + "name": "QM_CLS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "REF_NO": { + "name": "REF_NO", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "RLTD_PROJ": { + "name": "RLTD_PROJ", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "RL_DL_DT": { + "name": "RL_DL_DT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SALE_GRP": { + "name": "SALE_GRP", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SALE_ORG_CD": { + "name": "SALE_ORG_CD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SA_DT": { + "name": "SA_DT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SERS_NO": { + "name": "SERS_NO", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SERS_YN": { + "name": "SERS_YN", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SHTYPE": { + "name": "SHTYPE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SHTYPE_CD": { + "name": "SHTYPE_CD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SHTYPE_GRP": { + "name": "SHTYPE_GRP", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SHTYPE_UOM": { + "name": "SHTYPE_UOM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SKND": { + "name": "SKND", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SRC_SYS_ID": { + "name": "SRC_SYS_ID", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "STDT": { + "name": "STDT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SYS_ACOT_CLSD_DT": { + "name": "SYS_ACOT_CLSD_DT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "TOT_CNRT_CNT": { + "name": "TOT_CNRT_CNT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "TYPE": { + "name": "TYPE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "WP_PROJ_TP": { + "name": "WP_PROJ_TP", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "PROJECT_MASTER_CMCTB_PROJ_MAST_PROJ_NO_unique": { + "name": "PROJECT_MASTER_CMCTB_PROJ_MAST_PROJ_NO_unique", + "nullsNotDistinct": false, + "columns": [ + "PROJ_NO" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.VENDOR_MASTER_BP_HEADER": { + "name": "VENDOR_MASTER_BP_HEADER", + "schema": "mdg", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "VENDOR_MASTER_BP_HEADER_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "VNDRCD": { + "name": "VNDRCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "VENDOR_MASTER_BP_HEADER_VNDRCD_unique": { + "name": "VENDOR_MASTER_BP_HEADER_VNDRCD_unique", + "nullsNotDistinct": false, + "columns": [ + "VNDRCD" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.VENDOR_MASTER_BP_HEADER_ADDRESS": { + "name": "VENDOR_MASTER_BP_HEADER_ADDRESS", + "schema": "mdg", + "columns": { + "VNDRCD": { + "name": "VNDRCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "VENDOR_MASTER_BP_HEADER_ADDRESS_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "ADDRNO": { + "name": "ADDRNO", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "VENDOR_MASTER_BP_HEADER_ADDRESS_VNDRCD_VENDOR_MASTER_BP_HEADER_VNDRCD_fk": { + "name": "VENDOR_MASTER_BP_HEADER_ADDRESS_VNDRCD_VENDOR_MASTER_BP_HEADER_VNDRCD_fk", + "tableFrom": "VENDOR_MASTER_BP_HEADER_ADDRESS", + "tableTo": "VENDOR_MASTER_BP_HEADER", + "schemaTo": "mdg", + "columnsFrom": [ + "VNDRCD" + ], + "columnsTo": [ + "VNDRCD" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.VENDOR_MASTER_BP_HEADER_ADDRESS_AD_EMAIL": { + "name": "VENDOR_MASTER_BP_HEADER_ADDRESS_AD_EMAIL", + "schema": "mdg", + "columns": { + "VNDRCD": { + "name": "VNDRCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "VENDOR_MASTER_BP_HEADER_ADDRESS_AD_EMAIL_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "EMAIL_ADR": { + "name": "EMAIL_ADR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "REPR_SER": { + "name": "REPR_SER", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "VLD_ST_DT": { + "name": "VLD_ST_DT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "VENDOR_MASTER_BP_HEADER_ADDRESS_AD_EMAIL_VNDRCD_VENDOR_MASTER_BP_HEADER_VNDRCD_fk": { + "name": "VENDOR_MASTER_BP_HEADER_ADDRESS_AD_EMAIL_VNDRCD_VENDOR_MASTER_BP_HEADER_VNDRCD_fk", + "tableFrom": "VENDOR_MASTER_BP_HEADER_ADDRESS_AD_EMAIL", + "tableTo": "VENDOR_MASTER_BP_HEADER", + "schemaTo": "mdg", + "columnsFrom": [ + "VNDRCD" + ], + "columnsTo": [ + "VNDRCD" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.VENDOR_MASTER_BP_HEADER_ADDRESS_AD_FAX": { + "name": "VENDOR_MASTER_BP_HEADER_ADDRESS_AD_FAX", + "schema": "mdg", + "columns": { + "VNDRCD": { + "name": "VNDRCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "VENDOR_MASTER_BP_HEADER_ADDRESS_AD_FAX_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "FAXNO": { + "name": "FAXNO", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "FAX_ETS_NO": { + "name": "FAX_ETS_NO", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "NTN_CD": { + "name": "NTN_CD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "REPR_SER": { + "name": "REPR_SER", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "VLD_ST_DT": { + "name": "VLD_ST_DT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "VENDOR_MASTER_BP_HEADER_ADDRESS_AD_FAX_VNDRCD_VENDOR_MASTER_BP_HEADER_VNDRCD_fk": { + "name": "VENDOR_MASTER_BP_HEADER_ADDRESS_AD_FAX_VNDRCD_VENDOR_MASTER_BP_HEADER_VNDRCD_fk", + "tableFrom": "VENDOR_MASTER_BP_HEADER_ADDRESS_AD_FAX", + "tableTo": "VENDOR_MASTER_BP_HEADER", + "schemaTo": "mdg", + "columnsFrom": [ + "VNDRCD" + ], + "columnsTo": [ + "VNDRCD" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.VENDOR_MASTER_BP_HEADER_ADDRESS_AD_POSTAL": { + "name": "VENDOR_MASTER_BP_HEADER_ADDRESS_AD_POSTAL", + "schema": "mdg", + "columns": { + "VNDRCD": { + "name": "VNDRCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "VENDOR_MASTER_BP_HEADER_ADDRESS_AD_POSTAL_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "ADR_1": { + "name": "ADR_1", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ADR_2": { + "name": "ADR_2", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ADR_TMZ": { + "name": "ADR_TMZ", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "CITY_ZIP_NO": { + "name": "CITY_ZIP_NO", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ETC_ADR_1": { + "name": "ETC_ADR_1", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ETC_ADR_2": { + "name": "ETC_ADR_2", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "INTL_ADR_VER_ID": { + "name": "INTL_ADR_VER_ID", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "LANG_KEY": { + "name": "LANG_KEY", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "NTN_CD": { + "name": "NTN_CD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "POBX": { + "name": "POBX", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "POBX_ZIP_NO": { + "name": "POBX_ZIP_NO", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "REGN_CD": { + "name": "REGN_CD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "TAX_JRDT_ZONE_CD": { + "name": "TAX_JRDT_ZONE_CD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "TRANS_ZONE": { + "name": "TRANS_ZONE", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "TTL": { + "name": "TTL", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "VNDRNM_1": { + "name": "VNDRNM_1", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "VNDRNM_2": { + "name": "VNDRNM_2", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "VNDRNM_3": { + "name": "VNDRNM_3", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "VNDRNM_4": { + "name": "VNDRNM_4", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "VNDRNM_ABRV_1": { + "name": "VNDRNM_ABRV_1", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "VNDRNM_ABRV_2": { + "name": "VNDRNM_ABRV_2", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "VENDOR_MASTER_BP_HEADER_ADDRESS_AD_POSTAL_VNDRCD_VENDOR_MASTER_BP_HEADER_VNDRCD_fk": { + "name": "VENDOR_MASTER_BP_HEADER_ADDRESS_AD_POSTAL_VNDRCD_VENDOR_MASTER_BP_HEADER_VNDRCD_fk", + "tableFrom": "VENDOR_MASTER_BP_HEADER_ADDRESS_AD_POSTAL", + "tableTo": "VENDOR_MASTER_BP_HEADER", + "schemaTo": "mdg", + "columnsFrom": [ + "VNDRCD" + ], + "columnsTo": [ + "VNDRCD" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.VENDOR_MASTER_BP_HEADER_ADDRESS_AD_TEL": { + "name": "VENDOR_MASTER_BP_HEADER_ADDRESS_AD_TEL", + "schema": "mdg", + "columns": { + "VNDRCD": { + "name": "VNDRCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "VENDOR_MASTER_BP_HEADER_ADDRESS_AD_TEL_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "ETX_NO": { + "name": "ETX_NO", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "HP_ORDR": { + "name": "HP_ORDR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "NTN_CD": { + "name": "NTN_CD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "REPR_SER": { + "name": "REPR_SER", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "TELNO": { + "name": "TELNO", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "VLD_ST_DT": { + "name": "VLD_ST_DT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "VENDOR_MASTER_BP_HEADER_ADDRESS_AD_TEL_VNDRCD_VENDOR_MASTER_BP_HEADER_VNDRCD_fk": { + "name": "VENDOR_MASTER_BP_HEADER_ADDRESS_AD_TEL_VNDRCD_VENDOR_MASTER_BP_HEADER_VNDRCD_fk", + "tableFrom": "VENDOR_MASTER_BP_HEADER_ADDRESS_AD_TEL", + "tableTo": "VENDOR_MASTER_BP_HEADER", + "schemaTo": "mdg", + "columnsFrom": [ + "VNDRCD" + ], + "columnsTo": [ + "VNDRCD" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.VENDOR_MASTER_BP_HEADER_ADDRESS_AD_URL": { + "name": "VENDOR_MASTER_BP_HEADER_ADDRESS_AD_URL", + "schema": "mdg", + "columns": { + "VNDRCD": { + "name": "VNDRCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "VENDOR_MASTER_BP_HEADER_ADDRESS_AD_URL_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "REPR_SER": { + "name": "REPR_SER", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "URL": { + "name": "URL", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "VLD_ST_DT": { + "name": "VLD_ST_DT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "VENDOR_MASTER_BP_HEADER_ADDRESS_AD_URL_VNDRCD_VENDOR_MASTER_BP_HEADER_VNDRCD_fk": { + "name": "VENDOR_MASTER_BP_HEADER_ADDRESS_AD_URL_VNDRCD_VENDOR_MASTER_BP_HEADER_VNDRCD_fk", + "tableFrom": "VENDOR_MASTER_BP_HEADER_ADDRESS_AD_URL", + "tableTo": "VENDOR_MASTER_BP_HEADER", + "schemaTo": "mdg", + "columnsFrom": [ + "VNDRCD" + ], + "columnsTo": [ + "VNDRCD" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.VENDOR_MASTER_BP_HEADER_BP_TAXNUM": { + "name": "VENDOR_MASTER_BP_HEADER_BP_TAXNUM", + "schema": "mdg", + "columns": { + "VNDRCD": { + "name": "VNDRCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "VENDOR_MASTER_BP_HEADER_BP_TAXNUM_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "BIZ_PTNR_TX_NO": { + "name": "BIZ_PTNR_TX_NO", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "TX_NO_CTG": { + "name": "TX_NO_CTG", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "VENDOR_MASTER_BP_HEADER_BP_TAXNUM_VNDRCD_VENDOR_MASTER_BP_HEADER_VNDRCD_fk": { + "name": "VENDOR_MASTER_BP_HEADER_BP_TAXNUM_VNDRCD_VENDOR_MASTER_BP_HEADER_VNDRCD_fk", + "tableFrom": "VENDOR_MASTER_BP_HEADER_BP_TAXNUM", + "tableTo": "VENDOR_MASTER_BP_HEADER", + "schemaTo": "mdg", + "columnsFrom": [ + "VNDRCD" + ], + "columnsTo": [ + "VNDRCD" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.VENDOR_MASTER_BP_HEADER_BP_VENGEN": { + "name": "VENDOR_MASTER_BP_HEADER_BP_VENGEN", + "schema": "mdg", + "columns": { + "VNDRCD": { + "name": "VNDRCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "VENDOR_MASTER_BP_HEADER_BP_VENGEN_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "ACNT_GRP": { + "name": "ACNT_GRP", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ACNT_GRP_TP": { + "name": "ACNT_GRP_TP", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ADR_1": { + "name": "ADR_1", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ADR_2": { + "name": "ADR_2", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "AGR_DT": { + "name": "AGR_DT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "AGR_R_ID": { + "name": "AGR_R_ID", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "AGR_TM": { + "name": "AGR_TM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "BIZCON": { + "name": "BIZCON", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "BIZR_NO": { + "name": "BIZR_NO", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "BIZTP": { + "name": "BIZTP", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "BIZ_UOM_CD": { + "name": "BIZ_UOM_CD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "BIZ_UOM_NM": { + "name": "BIZ_UOM_NM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "CHGR_ID": { + "name": "CHGR_ID", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "CHG_DT": { + "name": "CHG_DT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "CHG_TM": { + "name": "CHG_TM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "CO_ID": { + "name": "CO_ID", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "CO_REG_NO": { + "name": "CO_REG_NO", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "CO_VLM": { + "name": "CO_VLM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "CSTM_CD": { + "name": "CSTM_CD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "DEL_HOLD_ORDR": { + "name": "DEL_HOLD_ORDR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "DEL_ORDR": { + "name": "DEL_ORDR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "DMST_TOP_CD": { + "name": "DMST_TOP_CD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "DMST_TOP_NM": { + "name": "DMST_TOP_NM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "DNS_NO": { + "name": "DNS_NO", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "DOC_NO": { + "name": "DOC_NO", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "DOC_TP": { + "name": "DOC_TP", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "DOC_VER": { + "name": "DOC_VER", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "FIR_NM": { + "name": "FIR_NM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "GBL_TOP_CD": { + "name": "GBL_TOP_CD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "GBL_TOP_NM": { + "name": "GBL_TOP_NM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "GIRO_VNDR_ORDR": { + "name": "GIRO_VNDR_ORDR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "HOLD_CAUS": { + "name": "HOLD_CAUS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "INB_FLAG": { + "name": "INB_FLAG", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "INTL_LCTN_CHK_NUM": { + "name": "INTL_LCTN_CHK_NUM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "OVLAP_CAUS_CD": { + "name": "OVLAP_CAUS_CD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PST_HOLD_ORDR": { + "name": "PST_HOLD_ORDR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PTNT_VNDRCD": { + "name": "PTNT_VNDRCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PTN_DOC": { + "name": "PTN_DOC", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PUR_HOLD_DT": { + "name": "PUR_HOLD_DT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PUR_HOLD_ORDR": { + "name": "PUR_HOLD_ORDR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "QLT_CHRGR_EMAIL": { + "name": "QLT_CHRGR_EMAIL", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "QLT_CHRGR_NM": { + "name": "QLT_CHRGR_NM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "QLT_CHRGR_TELNO": { + "name": "QLT_CHRGR_TELNO", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "REGR_ID": { + "name": "REGR_ID", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "REG_DT": { + "name": "REG_DT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "REG_TM": { + "name": "REG_TM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "REPR_NM": { + "name": "REPR_NM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "REPR_RESNO": { + "name": "REPR_RESNO", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "REP_TEL_NO": { + "name": "REP_TEL_NO", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SB_WKA_SEQ": { + "name": "SB_WKA_SEQ", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SRCETX_RP_SEX_KEY": { + "name": "SRCETX_RP_SEX_KEY", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "TTL": { + "name": "TTL", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "TX_CD_4": { + "name": "TX_CD_4", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "VAT_REG_NO": { + "name": "VAT_REG_NO", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "VNDRNM_1": { + "name": "VNDRNM_1", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "VNDRNO": { + "name": "VNDRNO", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "VENDOR_MASTER_BP_HEADER_BP_VENGEN_VNDRCD_VENDOR_MASTER_BP_HEADER_VNDRCD_fk": { + "name": "VENDOR_MASTER_BP_HEADER_BP_VENGEN_VNDRCD_VENDOR_MASTER_BP_HEADER_VNDRCD_fk", + "tableFrom": "VENDOR_MASTER_BP_HEADER_BP_VENGEN", + "tableTo": "VENDOR_MASTER_BP_HEADER", + "schemaTo": "mdg", + "columnsFrom": [ + "VNDRCD" + ], + "columnsTo": [ + "VNDRCD" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_COMPNY": { + "name": "VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_COMPNY", + "schema": "mdg", + "columns": { + "VNDRCD": { + "name": "VNDRCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_COMPNY_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "ACOT_CHRGR_FAXNO": { + "name": "ACOT_CHRGR_FAXNO", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ACOT_CHRGR_TELNO": { + "name": "ACOT_CHRGR_TELNO", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "AUTH_GRP": { + "name": "AUTH_GRP", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "BF_VNDRCD": { + "name": "BF_VNDRCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "CO_CD": { + "name": "CO_CD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "CSTM_VNDR_CLR_ORDR": { + "name": "CSTM_VNDR_CLR_ORDR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "CTL_ACNT": { + "name": "CTL_ACNT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "DEL_ORDR": { + "name": "DEL_ORDR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "FIN_IR_ACT_DT": { + "name": "FIN_IR_ACT_DT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "FIN_IR_CALC_DT": { + "name": "FIN_IR_CALC_DT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "IATA_BIC_GB": { + "name": "IATA_BIC_GB", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "LOGST_VNDR_TP": { + "name": "LOGST_VNDR_TP", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MEMO": { + "name": "MEMO", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MIN_ORDR": { + "name": "MIN_ORDR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MK_CHRGR_EMAIL": { + "name": "MK_CHRGR_EMAIL", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "MOFFC_ACNT_NO": { + "name": "MOFFC_ACNT_NO", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "OVLAP_INVC_ORDR": { + "name": "OVLAP_INVC_ORDR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PLN_GRP": { + "name": "PLN_GRP", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PST_HOLD_ORDR": { + "name": "PST_HOLD_ORDR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "REP_TP": { + "name": "REP_TP", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SPLY_COND": { + "name": "SPLY_COND", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SPLY_HOLD_ORDR": { + "name": "SPLY_HOLD_ORDR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SPLY_MTHD": { + "name": "SPLY_MTHD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SPRT_SPLY_ORDR": { + "name": "SPRT_SPLY_ORDR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SRCE_TX_CD": { + "name": "SRCE_TX_CD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SRCE_TX_NTN_CD": { + "name": "SRCE_TX_NTN_CD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SRT_KEY": { + "name": "SRT_KEY", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "TRD_BANK_SHRT_KEY": { + "name": "TRD_BANK_SHRT_KEY", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "VNDR_ACNT_NO": { + "name": "VNDR_ACNT_NO", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "VNDR_CHRGR_NM": { + "name": "VNDR_CHRGR_NM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_COMPNY_VNDRCD_VENDOR_MASTER_BP_HEADER_VNDRCD_fk": { + "name": "VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_COMPNY_VNDRCD_VENDOR_MASTER_BP_HEADER_VNDRCD_fk", + "tableFrom": "VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_COMPNY", + "tableTo": "VENDOR_MASTER_BP_HEADER", + "schemaTo": "mdg", + "columnsFrom": [ + "VNDRCD" + ], + "columnsTo": [ + "VNDRCD" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_COMPNY_BP_WHTAX": { + "name": "VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_COMPNY_BP_WHTAX", + "schema": "mdg", + "columns": { + "VNDRCD": { + "name": "VNDRCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_COMPNY_BP_WHTAX_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "DCHAG_CAUS": { + "name": "DCHAG_CAUS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "DCHAG_CERT_NO": { + "name": "DCHAG_CERT_NO", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "DCHAG_ED_DT": { + "name": "DCHAG_ED_DT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "DCHAG_ST_DT": { + "name": "DCHAG_ST_DT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "RECIP_TP": { + "name": "RECIP_TP", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SRCE_TX_IDENT_NO": { + "name": "SRCE_TX_IDENT_NO", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SRCE_TX_NO": { + "name": "SRCE_TX_NO", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SRCE_TX_REL_ORDR": { + "name": "SRCE_TX_REL_ORDR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SRCE_TX_TP": { + "name": "SRCE_TX_TP", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_COMPNY_BP_WHTAX_VNDRCD_VENDOR_MASTER_BP_HEADER_VNDRCD_fk": { + "name": "VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_COMPNY_BP_WHTAX_VNDRCD_VENDOR_MASTER_BP_HEADER_VNDRCD_fk", + "tableFrom": "VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_COMPNY_BP_WHTAX", + "tableTo": "VENDOR_MASTER_BP_HEADER", + "schemaTo": "mdg", + "columnsFrom": [ + "VNDRCD" + ], + "columnsTo": [ + "VNDRCD" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_PORG": { + "name": "VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_PORG", + "schema": "mdg", + "columns": { + "VNDRCD": { + "name": "VNDRCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_PORG_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "AT_PUR_ORD_ORDR": { + "name": "AT_PUR_ORD_ORDR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "CALC_SHM_GRP": { + "name": "CALC_SHM_GRP", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "CNFM_CTL_KEY": { + "name": "CNFM_CTL_KEY", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "DEL_ORDR": { + "name": "DEL_ORDR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "DL_COND_1": { + "name": "DL_COND_1", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "DL_COND_2": { + "name": "DL_COND_2", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "GR_BSE_INVC_VR": { + "name": "GR_BSE_INVC_VR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ORD_CNFM_REQ_ORDR": { + "name": "ORD_CNFM_REQ_ORDR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PUR_HOLD_CAUS": { + "name": "PUR_HOLD_CAUS", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PUR_HOLD_DT": { + "name": "PUR_HOLD_DT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PUR_HOLD_ORDR": { + "name": "PUR_HOLD_ORDR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PUR_ORD_CUR": { + "name": "PUR_ORD_CUR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PUR_ORG_CD": { + "name": "PUR_ORG_CD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "SALE_CHRGR_NM": { + "name": "SALE_CHRGR_NM", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "SPLY_COND": { + "name": "SPLY_COND", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "VNDR_TELNO": { + "name": "VNDR_TELNO", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_PORG_VNDRCD_VENDOR_MASTER_BP_HEADER_VNDRCD_fk": { + "name": "VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_PORG_VNDRCD_VENDOR_MASTER_BP_HEADER_VNDRCD_fk", + "tableFrom": "VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_PORG", + "tableTo": "VENDOR_MASTER_BP_HEADER", + "schemaTo": "mdg", + "columnsFrom": [ + "VNDRCD" + ], + "columnsTo": [ + "VNDRCD" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "mdg.VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_PORG_ZVPFN": { + "name": "VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_PORG_ZVPFN", + "schema": "mdg", + "columns": { + "VNDRCD": { + "name": "VNDRCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_PORG_ZVPFN_id_seq", + "schema": "mdg", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "BSE_PTNR_ORDR": { + "name": "BSE_PTNR_ORDR", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "ETC_REF_VNDRCD": { + "name": "ETC_REF_VNDRCD", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PLNT_NO": { + "name": "PLNT_NO", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "PTNR_CNT": { + "name": "PTNR_CNT", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "PTNR_SKL": { + "name": "PTNR_SKL", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": true + }, + "VNDR_SUB_NO": { + "name": "VNDR_SUB_NO", + "type": "varchar(1000)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_PORG_ZVPFN_VNDRCD_VENDOR_MASTER_BP_HEADER_VNDRCD_fk": { + "name": "VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_PORG_ZVPFN_VNDRCD_VENDOR_MASTER_BP_HEADER_VNDRCD_fk", + "tableFrom": "VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_PORG_ZVPFN", + "tableTo": "VENDOR_MASTER_BP_HEADER", + "schemaTo": "mdg", + "columnsFrom": [ + "VNDRCD" + ], + "columnsTo": [ + "VNDRCD" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "soap.soap_logs": { + "name": "soap_logs", + "schema": "soap", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "direction": { + "name": "direction", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true + }, + "system": { + "name": "system", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "interface": { + "name": "interface", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "startedAt": { + "name": "startedAt", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "endedAt": { + "name": "endedAt", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "isSuccess": { + "name": "isSuccess", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "requestData": { + "name": "requestData", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "responseData": { + "name": "responseData", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "errorMessage": { + "name": "errorMessage", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "nonsap.cmctb_cd": { + "name": "cmctb_cd", + "schema": "nonsap", + "columns": { + "CD_CLF": { + "name": "CD_CLF", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "CD": { + "name": "CD", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "CD2": { + "name": "CD2", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "CD3": { + "name": "CD3", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "USR_DF_CHAR_1": { + "name": "USR_DF_CHAR_1", + "type": "varchar(60)", + "primaryKey": false, + "notNull": false + }, + "USR_DF_CHAR_2": { + "name": "USR_DF_CHAR_2", + "type": "varchar(60)", + "primaryKey": false, + "notNull": false + }, + "USR_DF_CHAR_3": { + "name": "USR_DF_CHAR_3", + "type": "varchar(60)", + "primaryKey": false, + "notNull": false + }, + "USR_DF_CHAR_4": { + "name": "USR_DF_CHAR_4", + "type": "varchar(60)", + "primaryKey": false, + "notNull": false + }, + "USR_DF_CHAR_5": { + "name": "USR_DF_CHAR_5", + "type": "varchar(60)", + "primaryKey": false, + "notNull": false + }, + "USR_DF_CHAR_6": { + "name": "USR_DF_CHAR_6", + "type": "varchar(60)", + "primaryKey": false, + "notNull": false + }, + "USR_DF_CHAR_7": { + "name": "USR_DF_CHAR_7", + "type": "varchar(60)", + "primaryKey": false, + "notNull": false + }, + "USR_DF_CHAR_8": { + "name": "USR_DF_CHAR_8", + "type": "varchar(60)", + "primaryKey": false, + "notNull": false + }, + "USR_DF_CHAR_9": { + "name": "USR_DF_CHAR_9", + "type": "varchar(60)", + "primaryKey": false, + "notNull": false + }, + "USR_DF_CHAR_10": { + "name": "USR_DF_CHAR_10", + "type": "varchar(60)", + "primaryKey": false, + "notNull": false + }, + "USR_DF_CHAR_11": { + "name": "USR_DF_CHAR_11", + "type": "varchar(60)", + "primaryKey": false, + "notNull": false + }, + "USR_DF_CHAR_12": { + "name": "USR_DF_CHAR_12", + "type": "varchar(60)", + "primaryKey": false, + "notNull": false + }, + "USR_DF_CHAR_13": { + "name": "USR_DF_CHAR_13", + "type": "varchar(60)", + "primaryKey": false, + "notNull": false + }, + "USR_DF_CHAR_14": { + "name": "USR_DF_CHAR_14", + "type": "varchar(60)", + "primaryKey": false, + "notNull": false + }, + "USR_DF_CHAR_15": { + "name": "USR_DF_CHAR_15", + "type": "varchar(60)", + "primaryKey": false, + "notNull": false + }, + "USR_DF_CHAR_16": { + "name": "USR_DF_CHAR_16", + "type": "varchar(60)", + "primaryKey": false, + "notNull": false + }, + "USR_DF_CHAR_17": { + "name": "USR_DF_CHAR_17", + "type": "varchar(120)", + "primaryKey": false, + "notNull": false + }, + "USR_DF_CHAR_18": { + "name": "USR_DF_CHAR_18", + "type": "varchar(120)", + "primaryKey": false, + "notNull": false + }, + "USR_DF_CHAR_19": { + "name": "USR_DF_CHAR_19", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "USR_DF_CHAR_20": { + "name": "USR_DF_CHAR_20", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "USR_DF_CHK_1": { + "name": "USR_DF_CHK_1", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "USR_DF_CHK_2": { + "name": "USR_DF_CHK_2", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "USR_DF_CHK_3": { + "name": "USR_DF_CHK_3", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "USR_DF_CHK_4": { + "name": "USR_DF_CHK_4", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "USR_DF_CHK_5": { + "name": "USR_DF_CHK_5", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "USR_DF_CHK_6": { + "name": "USR_DF_CHK_6", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "USR_DF_CHK_7": { + "name": "USR_DF_CHK_7", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "USR_DF_CHK_8": { + "name": "USR_DF_CHK_8", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "USR_DF_DT_1": { + "name": "USR_DF_DT_1", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "USR_DF_DT_2": { + "name": "USR_DF_DT_2", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "USR_DF_DT_3": { + "name": "USR_DF_DT_3", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "USR_DF_DT_4": { + "name": "USR_DF_DT_4", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "USR_DF_TM_1": { + "name": "USR_DF_TM_1", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "USR_DF_TM_2": { + "name": "USR_DF_TM_2", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "USR_DF_TM_3": { + "name": "USR_DF_TM_3", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "USR_DF_TM_4": { + "name": "USR_DF_TM_4", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "CRTER": { + "name": "CRTER", + "type": "varchar(13)", + "primaryKey": false, + "notNull": false + }, + "CRTE_DT": { + "name": "CRTE_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "CRTE_TM": { + "name": "CRTE_TM", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "CHGR": { + "name": "CHGR", + "type": "varchar(13)", + "primaryKey": false, + "notNull": false + }, + "CHG_DT": { + "name": "CHG_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "CHG_TM": { + "name": "CHG_TM", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "DEL_YN": { + "name": "DEL_YN", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "nonsap.cmctb_cd_clf": { + "name": "cmctb_cd_clf", + "schema": "nonsap", + "columns": { + "CD_CLF": { + "name": "CD_CLF", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "CRTER": { + "name": "CRTER", + "type": "varchar(13)", + "primaryKey": false, + "notNull": false + }, + "CRTE_DT": { + "name": "CRTE_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "CRTE_TM": { + "name": "CRTE_TM", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "CHGR": { + "name": "CHGR", + "type": "varchar(13)", + "primaryKey": false, + "notNull": false + }, + "CHG_DT": { + "name": "CHG_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "CHG_TM": { + "name": "CHG_TM", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "DEL_YN": { + "name": "DEL_YN", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "XSTAT": { + "name": "XSTAT", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "XMSGS": { + "name": "XMSGS", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "XDATS": { + "name": "XDATS", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "XTIMS": { + "name": "XTIMS", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "nonsap.cmctb_cd_clf_nm": { + "name": "cmctb_cd_clf_nm", + "schema": "nonsap", + "columns": { + "LANG_KEY": { + "name": "LANG_KEY", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true + }, + "CD_CLF": { + "name": "CD_CLF", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "CD_CLF_NM": { + "name": "CD_CLF_NM", + "type": "varchar(120)", + "primaryKey": false, + "notNull": false + }, + "GRP_DSC": { + "name": "GRP_DSC", + "type": "varchar(120)", + "primaryKey": false, + "notNull": false + }, + "CRTER": { + "name": "CRTER", + "type": "varchar(13)", + "primaryKey": false, + "notNull": false + }, + "CRTE_DT": { + "name": "CRTE_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "CRTE_TM": { + "name": "CRTE_TM", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "CHGR": { + "name": "CHGR", + "type": "varchar(13)", + "primaryKey": false, + "notNull": false + }, + "CHG_DT": { + "name": "CHG_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "CHG_TM": { + "name": "CHG_TM", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "DEL_YN": { + "name": "DEL_YN", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "nonsap.cmctb_cdnm": { + "name": "cmctb_cdnm", + "schema": "nonsap", + "columns": { + "LANG_KEY": { + "name": "LANG_KEY", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true + }, + "CD_CLF": { + "name": "CD_CLF", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "CD": { + "name": "CD", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "CD2": { + "name": "CD2", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "CD3": { + "name": "CD3", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "CDNM": { + "name": "CDNM", + "type": "varchar(120)", + "primaryKey": false, + "notNull": false + }, + "GRP_DSC": { + "name": "GRP_DSC", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "CRTER": { + "name": "CRTER", + "type": "varchar(13)", + "primaryKey": false, + "notNull": false + }, + "CRTE_DT": { + "name": "CRTE_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "CRTE_TM": { + "name": "CRTE_TM", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "CHGR": { + "name": "CHGR", + "type": "varchar(13)", + "primaryKey": false, + "notNull": false + }, + "CHG_DT": { + "name": "CHG_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "CHG_TM": { + "name": "CHG_TM", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "DEL_YN": { + "name": "DEL_YN", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "nonsap.cmctb_customer_addr": { + "name": "cmctb_customer_addr", + "schema": "nonsap", + "columns": { + "CSTM_CD": { + "name": "CSTM_CD", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "ADR_NO": { + "name": "ADR_NO", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "INTL_ADR_VER_ID": { + "name": "INTL_ADR_VER_ID", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true + }, + "NTN_CD": { + "name": "NTN_CD", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "CITY_ZIP_NO": { + "name": "CITY_ZIP_NO", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "POBX_ZIP_NO": { + "name": "POBX_ZIP_NO", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "ADR_1": { + "name": "ADR_1", + "type": "varchar(120)", + "primaryKey": false, + "notNull": false + }, + "ADR_2": { + "name": "ADR_2", + "type": "varchar(120)", + "primaryKey": false, + "notNull": false + }, + "REGN_CD": { + "name": "REGN_CD", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "ETC_ADR_1": { + "name": "ETC_ADR_1", + "type": "varchar(180)", + "primaryKey": false, + "notNull": false + }, + "ETC_ADR_2": { + "name": "ETC_ADR_2", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "HOUSE_NR1": { + "name": "HOUSE_NR1", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "POBX": { + "name": "POBX", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "LANG_KEY": { + "name": "LANG_KEY", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "VNDRNM_1": { + "name": "VNDRNM_1", + "type": "varchar(120)", + "primaryKey": false, + "notNull": false + }, + "VNDRNM_2": { + "name": "VNDRNM_2", + "type": "varchar(120)", + "primaryKey": false, + "notNull": false + }, + "IF_DT": { + "name": "IF_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "IF_TM": { + "name": "IF_TM", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "IF_STAT": { + "name": "IF_STAT", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "IF_MSG": { + "name": "IF_MSG", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "TRANS_ZONE": { + "name": "TRANS_ZONE", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "nonsap.cmctb_customer_cfpn": { + "name": "cmctb_customer_cfpn", + "schema": "nonsap", + "columns": { + "CSTM_CD": { + "name": "CSTM_CD", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "SALE_ORG_CD": { + "name": "SALE_ORG_CD", + "type": "varchar(4)", + "primaryKey": false, + "notNull": true + }, + "DIST_PATH": { + "name": "DIST_PATH", + "type": "varchar(2)", + "primaryKey": false, + "notNull": true + }, + "PDT_GRP": { + "name": "PDT_GRP", + "type": "varchar(2)", + "primaryKey": false, + "notNull": true + }, + "PTNR_SKL": { + "name": "PTNR_SKL", + "type": "varchar(2)", + "primaryKey": false, + "notNull": true + }, + "PTNR_CNT": { + "name": "PTNR_CNT", + "type": "varchar(3)", + "primaryKey": false, + "notNull": true + }, + "BSE_PTNR_ORDR": { + "name": "BSE_PTNR_ORDR", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "IF_DT": { + "name": "IF_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "IF_TM": { + "name": "IF_TM", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "IF_STAT": { + "name": "IF_STAT", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "IF_MSG": { + "name": "IF_MSG", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "nonsap.cmctb_customer_compny": { + "name": "cmctb_customer_compny", + "schema": "nonsap", + "columns": { + "CSTM_CD": { + "name": "CSTM_CD", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "CO_ID": { + "name": "CO_ID", + "type": "varchar(4)", + "primaryKey": false, + "notNull": true + }, + "AR_ACNT_HDL_GB": { + "name": "AR_ACNT_HDL_GB", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "SRT_KEY": { + "name": "SRT_KEY", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "AMT_RNE_GB": { + "name": "AMT_RNE_GB", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "VNDR_PAY_FRM": { + "name": "VNDR_PAY_FRM", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "BILL_PAY_COND_CD": { + "name": "BILL_PAY_COND_CD", + "type": "varchar(4)", + "primaryKey": false, + "notNull": false + }, + "BILL_PAY_BLOC_CD": { + "name": "BILL_PAY_BLOC_CD", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "PST_HOLD_ORDR": { + "name": "PST_HOLD_ORDR", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "DEL_ORDR": { + "name": "DEL_ORDR", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "IF_DT": { + "name": "IF_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "IF_TM": { + "name": "IF_TM", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "IF_STAT": { + "name": "IF_STAT", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "IF_MSG": { + "name": "IF_MSG", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "nonsap.cmctb_customer_general": { + "name": "cmctb_customer_general", + "schema": "nonsap", + "columns": { + "CSTM_CD": { + "name": "CSTM_CD", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "ADR_NO": { + "name": "ADR_NO", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "REPR_SER": { + "name": "REPR_SER", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "ACNT_GRP": { + "name": "ACNT_GRP", + "type": "varchar(4)", + "primaryKey": false, + "notNull": false + }, + "OVLAP_CAUS": { + "name": "OVLAP_CAUS", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "CSTM_TP": { + "name": "CSTM_TP", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "DEL_ORDR": { + "name": "DEL_ORDR", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "DEL_BLOCK": { + "name": "DEL_BLOCK", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "PST_HOLD_ORDR": { + "name": "PST_HOLD_ORDR", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "CO_ID": { + "name": "CO_ID", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "TTL": { + "name": "TTL", + "type": "varchar(45)", + "primaryKey": false, + "notNull": false + }, + "COND_GRP_1": { + "name": "COND_GRP_1", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "CSTM_GRP_NM": { + "name": "CSTM_GRP_NM", + "type": "varchar(60)", + "primaryKey": false, + "notNull": false + }, + "REPR_NM": { + "name": "REPR_NM", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "BIZTP": { + "name": "BIZTP", + "type": "varchar(90)", + "primaryKey": false, + "notNull": false + }, + "BIZCON": { + "name": "BIZCON", + "type": "varchar(90)", + "primaryKey": false, + "notNull": false + }, + "TX_NO_2": { + "name": "TX_NO_2", + "type": "varchar(11)", + "primaryKey": false, + "notNull": false + }, + "TX_NO_3": { + "name": "TX_NO_3", + "type": "varchar(18)", + "primaryKey": false, + "notNull": false + }, + "TX_NO_4": { + "name": "TX_NO_4", + "type": "varchar(18)", + "primaryKey": false, + "notNull": false + }, + "TX_REG_NO": { + "name": "TX_REG_NO", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "BA_CD": { + "name": "BA_CD", + "type": "varchar(4)", + "primaryKey": false, + "notNull": false + }, + "VNDRCD": { + "name": "VNDRCD", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "SRCH_COND_1": { + "name": "SRCH_COND_1", + "type": "varchar(60)", + "primaryKey": false, + "notNull": false + }, + "SRCH_COND_2": { + "name": "SRCH_COND_2", + "type": "varchar(60)", + "primaryKey": false, + "notNull": false + }, + "CITY_DISP_NM": { + "name": "CITY_DISP_NM", + "type": "varchar(105)", + "primaryKey": false, + "notNull": false + }, + "CRM_CD": { + "name": "CRM_CD", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "IN_FLAG": { + "name": "IN_FLAG", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "INDST_CD": { + "name": "INDST_CD", + "type": "varchar(4)", + "primaryKey": false, + "notNull": false + }, + "TX_NO_TP": { + "name": "TX_NO_TP", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "LANG_KEY": { + "name": "LANG_KEY", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "REG_DT": { + "name": "REG_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "REG_DTM": { + "name": "REG_DTM", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "REGR_ID": { + "name": "REGR_ID", + "type": "varchar(13)", + "primaryKey": false, + "notNull": false + }, + "AGR_DT": { + "name": "AGR_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "AGR_TM": { + "name": "AGR_TM", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "AGR_R_ID": { + "name": "AGR_R_ID", + "type": "varchar(13)", + "primaryKey": false, + "notNull": false + }, + "CHG_DT": { + "name": "CHG_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "CHG_TM": { + "name": "CHG_TM", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "CHGR_ID": { + "name": "CHGR_ID", + "type": "varchar(13)", + "primaryKey": false, + "notNull": false + }, + "FTGT_CD": { + "name": "FTGT_CD", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "FTGT_NM": { + "name": "FTGT_NM", + "type": "varchar(120)", + "primaryKey": false, + "notNull": false + }, + "FTDT_CD": { + "name": "FTDT_CD", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "FTDT_NM": { + "name": "FTDT_NM", + "type": "varchar(120)", + "primaryKey": false, + "notNull": false + }, + "FTBU_CD": { + "name": "FTBU_CD", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "FTBU_NM": { + "name": "FTBU_NM", + "type": "varchar(120)", + "primaryKey": false, + "notNull": false + }, + "IF_DT": { + "name": "IF_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "IF_TM": { + "name": "IF_TM", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "IF_STAT": { + "name": "IF_STAT", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "IF_MSG": { + "name": "IF_MSG", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "nonsap.cmctb_customer_repremail": { + "name": "cmctb_customer_repremail", + "schema": "nonsap", + "columns": { + "CSTM_CD": { + "name": "CSTM_CD", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "ADR_NO": { + "name": "ADR_NO", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "REPR_SER": { + "name": "REPR_SER", + "type": "varchar(3)", + "primaryKey": false, + "notNull": true + }, + "VLD_ST_DT": { + "name": "VLD_ST_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": true + }, + "EMAIL_ADR": { + "name": "EMAIL_ADR", + "type": "varchar(241)", + "primaryKey": false, + "notNull": false + }, + "IF_DT": { + "name": "IF_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "IF_TM": { + "name": "IF_TM", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "IF_STAT": { + "name": "IF_STAT", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "IF_MSG": { + "name": "IF_MSG", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "nonsap.cmctb_customer_reprfax": { + "name": "cmctb_customer_reprfax", + "schema": "nonsap", + "columns": { + "CSTM_CD": { + "name": "CSTM_CD", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "ADR_NO": { + "name": "ADR_NO", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "REPR_SER": { + "name": "REPR_SER", + "type": "varchar(3)", + "primaryKey": false, + "notNull": true + }, + "VLD_ST_DT": { + "name": "VLD_ST_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": true + }, + "NTN_CD": { + "name": "NTN_CD", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "FAXNO": { + "name": "FAXNO", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "FAX_ETS_NO": { + "name": "FAX_ETS_NO", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "IF_DT": { + "name": "IF_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "IF_TM": { + "name": "IF_TM", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "IF_STAT": { + "name": "IF_STAT", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "IF_MSG": { + "name": "IF_MSG", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "nonsap.cmctb_customer_reprtel": { + "name": "cmctb_customer_reprtel", + "schema": "nonsap", + "columns": { + "CSTM_CD": { + "name": "CSTM_CD", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "ADR_NO": { + "name": "ADR_NO", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "REPR_SER": { + "name": "REPR_SER", + "type": "varchar(3)", + "primaryKey": false, + "notNull": true + }, + "VLD_ST_DT": { + "name": "VLD_ST_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": true + }, + "NTN_CD": { + "name": "NTN_CD", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "TELNO": { + "name": "TELNO", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "ETX_NO": { + "name": "ETX_NO", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "HP_ORDR": { + "name": "HP_ORDR", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "IF_DT": { + "name": "IF_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "IF_TM": { + "name": "IF_TM", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "IF_STAT": { + "name": "IF_STAT", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "IF_MSG": { + "name": "IF_MSG", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "nonsap.cmctb_customer_reprurl": { + "name": "cmctb_customer_reprurl", + "schema": "nonsap", + "columns": { + "CSTM_CD": { + "name": "CSTM_CD", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "ADR_NO": { + "name": "ADR_NO", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "REPR_SER": { + "name": "REPR_SER", + "type": "varchar(3)", + "primaryKey": false, + "notNull": true + }, + "VLD_ST_DT": { + "name": "VLD_ST_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": true + }, + "URL": { + "name": "URL", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "IF_DT": { + "name": "IF_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "IF_TM": { + "name": "IF_TM", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "IF_STAT": { + "name": "IF_STAT", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "IF_MSG": { + "name": "IF_MSG", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "nonsap.cmctb_customer_sorg": { + "name": "cmctb_customer_sorg", + "schema": "nonsap", + "columns": { + "CSTM_CD": { + "name": "CSTM_CD", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "SALE_ORG_CD": { + "name": "SALE_ORG_CD", + "type": "varchar(4)", + "primaryKey": false, + "notNull": true + }, + "DIST_PATH": { + "name": "DIST_PATH", + "type": "varchar(2)", + "primaryKey": false, + "notNull": true + }, + "PDT_GRP": { + "name": "PDT_GRP", + "type": "varchar(2)", + "primaryKey": false, + "notNull": true + }, + "SALE_REGN": { + "name": "SALE_REGN", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "SALE_OFC": { + "name": "SALE_OFC", + "type": "varchar(4)", + "primaryKey": false, + "notNull": false + }, + "SALE_GRP": { + "name": "SALE_GRP", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "CSTM_GRP": { + "name": "CSTM_GRP", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "PSBL": { + "name": "PSBL", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "TRD_CUR": { + "name": "TRD_CUR", + "type": "varchar(5)", + "primaryKey": false, + "notNull": false + }, + "EXRAT_TP": { + "name": "EXRAT_TP", + "type": "varchar(4)", + "primaryKey": false, + "notNull": false + }, + "PRC_PRCS_DSC_CD": { + "name": "PRC_PRCS_DSC_CD", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "CSTM_STAT_GRP": { + "name": "CSTM_STAT_GRP", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "SHIPMT_COND": { + "name": "SHIPMT_COND", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "MAX_TRD_QTY": { + "name": "MAX_TRD_QTY", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "DL_COND_1": { + "name": "DL_COND_1", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "DL_COND_2": { + "name": "DL_COND_2", + "type": "varchar(84)", + "primaryKey": false, + "notNull": false + }, + "SPLY_COND": { + "name": "SPLY_COND", + "type": "varchar(4)", + "primaryKey": false, + "notNull": false + }, + "ACNT_ASGN_GRP": { + "name": "ACNT_ASGN_GRP", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "IF_DT": { + "name": "IF_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "IF_TM": { + "name": "IF_TM", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "IF_STAT": { + "name": "IF_STAT", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "IF_MSG": { + "name": "IF_MSG", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "nonsap.cmctb_customer_taxcd": { + "name": "cmctb_customer_taxcd", + "schema": "nonsap", + "columns": { + "CSTM_CD": { + "name": "CSTM_CD", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "DPRT_NTN": { + "name": "DPRT_NTN", + "type": "varchar(3)", + "primaryKey": false, + "notNull": true + }, + "TX_CTG": { + "name": "TX_CTG", + "type": "varchar(4)", + "primaryKey": false, + "notNull": true + }, + "CSTM_TX_CLF": { + "name": "CSTM_TX_CLF", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "IF_DT": { + "name": "IF_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "IF_TM": { + "name": "IF_TM", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "IF_STAT": { + "name": "IF_STAT", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "IF_MSG": { + "name": "IF_MSG", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "nonsap.cmctb_customer_taxnum": { + "name": "cmctb_customer_taxnum", + "schema": "nonsap", + "columns": { + "CSTM_CD": { + "name": "CSTM_CD", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "TX_NO_CTG": { + "name": "TX_NO_CTG", + "type": "varchar(4)", + "primaryKey": false, + "notNull": true + }, + "BIZ_PTNR_TX_NO": { + "name": "BIZ_PTNR_TX_NO", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "IF_DT": { + "name": "IF_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "IF_TM": { + "name": "IF_TM", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "IF_STAT": { + "name": "IF_STAT", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "IF_MSG": { + "name": "IF_MSG", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "nonsap.cmctb_mat_bse": { + "name": "cmctb_mat_bse", + "schema": "nonsap", + "columns": { + "MAT_NO": { + "name": "MAT_NO", + "type": "varchar(18)", + "primaryKey": false, + "notNull": true + }, + "SM_CD": { + "name": "SM_CD", + "type": "varchar(18)", + "primaryKey": false, + "notNull": false + }, + "MAT_ID": { + "name": "MAT_ID", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "CLAS_CD": { + "name": "CLAS_CD", + "type": "varchar(18)", + "primaryKey": false, + "notNull": false + }, + "MAT_TP": { + "name": "MAT_TP", + "type": "varchar(4)", + "primaryKey": false, + "notNull": false + }, + "MAT_GB": { + "name": "MAT_GB", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "MAT_DTL": { + "name": "MAT_DTL", + "type": "varchar(120)", + "primaryKey": false, + "notNull": false + }, + "MAT_DTL_SPEC": { + "name": "MAT_DTL_SPEC", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "MATL": { + "name": "MATL", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "OLD_MAT_NO": { + "name": "OLD_MAT_NO", + "type": "varchar(18)", + "primaryKey": false, + "notNull": false + }, + "SBST_MAT_NO": { + "name": "SBST_MAT_NO", + "type": "varchar(18)", + "primaryKey": false, + "notNull": false + }, + "UOM": { + "name": "UOM", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "PDT_GRP": { + "name": "PDT_GRP", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "MRC": { + "name": "MRC", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "STOR_MAT_ORDR": { + "name": "STOR_MAT_ORDR", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "STYPE": { + "name": "STYPE", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "CLS": { + "name": "CLS", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "WGT": { + "name": "WGT", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "NET_WGT": { + "name": "NET_WGT", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "WGT_UOM": { + "name": "WGT_UOM", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "LTH": { + "name": "LTH", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "LTH_2": { + "name": "LTH_2", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "WTH": { + "name": "WTH", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "WTH_2": { + "name": "WTH_2", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "THK": { + "name": "THK", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "STD": { + "name": "STD", + "type": "varchar(70)", + "primaryKey": false, + "notNull": false + }, + "PROF_STD": { + "name": "PROF_STD", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "CBL_OUT_DIA": { + "name": "CBL_OUT_DIA", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "LTRM_MAT_YN": { + "name": "LTRM_MAT_YN", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "PNT_AREA": { + "name": "PNT_AREA", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "PNTIN_AREA": { + "name": "PNTIN_AREA", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "PNTIN_SPEC": { + "name": "PNTIN_SPEC", + "type": "varchar(5)", + "primaryKey": false, + "notNull": false + }, + "PNTOUT_AREA": { + "name": "PNTOUT_AREA", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "PNTOUT_SPEC_1": { + "name": "PNTOUT_SPEC_1", + "type": "varchar(5)", + "primaryKey": false, + "notNull": false + }, + "PNTOUT_SPEC_2": { + "name": "PNTOUT_SPEC_2", + "type": "varchar(5)", + "primaryKey": false, + "notNull": false + }, + "PNTOUT_SPEC_3": { + "name": "PNTOUT_SPEC_3", + "type": "varchar(5)", + "primaryKey": false, + "notNull": false + }, + "RT_INSPEC": { + "name": "RT_INSPEC", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "UT_INSPEC": { + "name": "UT_INSPEC", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "MT_INSPEC": { + "name": "MT_INSPEC", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "PT_INSPEC": { + "name": "PT_INSPEC", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "MK_DWG_NO": { + "name": "MK_DWG_NO", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "CUT_DWG_NO": { + "name": "CUT_DWG_NO", + "type": "varchar(120)", + "primaryKey": false, + "notNull": false + }, + "PIPE_SPL_NO": { + "name": "PIPE_SPL_NO", + "type": "varchar(40)", + "primaryKey": false, + "notNull": false + }, + "PIPE_LINE_NO": { + "name": "PIPE_LINE_NO", + "type": "varchar(40)", + "primaryKey": false, + "notNull": false + }, + "PIPE_CLAS": { + "name": "PIPE_CLAS", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "FLUID_KND": { + "name": "FLUID_KND", + "type": "varchar(5)", + "primaryKey": false, + "notNull": false + }, + "REP_ITM_MATL": { + "name": "REP_ITM_MATL", + "type": "varchar(60)", + "primaryKey": false, + "notNull": false + }, + "REP_DIA": { + "name": "REP_DIA", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "REP_DIA_UOM": { + "name": "REP_DIA_UOM", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "REP_SCH": { + "name": "REP_SCH", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "REP_DIA_LTH": { + "name": "REP_DIA_LTH", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "DBLN_GB": { + "name": "DBLN_GB", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "PIPE_GRD": { + "name": "PIPE_GRD", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "HTRET_YN": { + "name": "HTRET_YN", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "BA_GALV_SPEC": { + "name": "BA_GALV_SPEC", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "SSIDE_YN": { + "name": "SSIDE_YN", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "PNTR_PIPE_YN": { + "name": "PNTR_PIPE_YN", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "UBOLT_YN": { + "name": "UBOLT_YN", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "CTLP_PRCD_PNT": { + "name": "CTLP_PRCD_PNT", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "PRCD_SCV_CTLP": { + "name": "PRCD_SCV_CTLP", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "PMI_INSPEC": { + "name": "PMI_INSPEC", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "WTRPRS": { + "name": "WTRPRS", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "VLV_FIT_NO": { + "name": "VLV_FIT_NO", + "type": "varchar(18)", + "primaryKey": false, + "notNull": false + }, + "TAG_NO": { + "name": "TAG_NO", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "TAG_SB_NO": { + "name": "TAG_SB_NO", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "NM_PLATE_TP": { + "name": "NM_PLATE_TP", + "type": "varchar(5)", + "primaryKey": false, + "notNull": false + }, + "NM_PLATE_SVC_NM": { + "name": "NM_PLATE_SVC_NM", + "type": "varchar(60)", + "primaryKey": false, + "notNull": false + }, + "VRCS_MAT_NO": { + "name": "VRCS_MAT_NO", + "type": "varchar(18)", + "primaryKey": false, + "notNull": false + }, + "TRSM_FIT_NO": { + "name": "TRSM_FIT_NO", + "type": "varchar(7)", + "primaryKey": false, + "notNull": false + }, + "VLV_OPT_CD_LIST": { + "name": "VLV_OPT_CD_LIST", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "PUR_REQ_NO": { + "name": "PUR_REQ_NO", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "ITM_NO": { + "name": "ITM_NO", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "MDL_NO": { + "name": "MDL_NO", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "BL_NO": { + "name": "BL_NO", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "VNDR_EQP_NO": { + "name": "VNDR_EQP_NO", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "BOX_NO": { + "name": "BOX_NO", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "MMT_NO": { + "name": "MMT_NO", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "INSTL_LOC": { + "name": "INSTL_LOC", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "MN_EQP_YN": { + "name": "MN_EQP_YN", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "FIXED_MAT_YN": { + "name": "FIXED_MAT_YN", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "SPRE_YN": { + "name": "SPRE_YN", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "TOOL_YN": { + "name": "TOOL_YN", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "CBL_YN": { + "name": "CBL_YN", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "OWN_INSTL_MAT_YN": { + "name": "OWN_INSTL_MAT_YN", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "NONINSTL_MAT_YN": { + "name": "NONINSTL_MAT_YN", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "BLK_NO": { + "name": "BLK_NO", + "type": "varchar(5)", + "primaryKey": false, + "notNull": false + }, + "GYEL": { + "name": "GYEL", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "LNK_PTLST_NO": { + "name": "LNK_PTLST_NO", + "type": "varchar(40)", + "primaryKey": false, + "notNull": false + }, + "AREA": { + "name": "AREA", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "STOR_LOC": { + "name": "STOR_LOC", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "SGUB_WGT": { + "name": "SGUB_WGT", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "DGUB_WGT": { + "name": "DGUB_WGT", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "PROJ_NO": { + "name": "PROJ_NO", + "type": "varchar(24)", + "primaryKey": false, + "notNull": false + }, + "DSN_SKL": { + "name": "DSN_SKL", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "RMK": { + "name": "RMK", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "DEL_ORDR": { + "name": "DEL_ORDR", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "DEL_DT": { + "name": "DEL_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "MAT_STAT": { + "name": "MAT_STAT", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "IF_SYS_NO": { + "name": "IF_SYS_NO", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "IF_STAT": { + "name": "IF_STAT", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "IF_MSG": { + "name": "IF_MSG", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "IF_DT": { + "name": "IF_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "IF_TM": { + "name": "IF_TM", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "GLAND_SPEC_1": { + "name": "GLAND_SPEC_1", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "GLAND_SPEC_2": { + "name": "GLAND_SPEC_2", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "GLAND_SPEC_3": { + "name": "GLAND_SPEC_3", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "MCT_MDLE_STD_1": { + "name": "MCT_MDLE_STD_1", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "MCT_MDLE_STD_2": { + "name": "MCT_MDLE_STD_2", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "BEELE_RISE": { + "name": "BEELE_RISE", + "type": "varchar(12)", + "primaryKey": false, + "notNull": false + }, + "MAX_DRUM_LTH": { + "name": "MAX_DRUM_LTH", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "AGR_DTM": { + "name": "AGR_DTM", + "type": "varchar(14)", + "primaryKey": false, + "notNull": false + }, + "AGR_R_ID": { + "name": "AGR_R_ID", + "type": "varchar(13)", + "primaryKey": false, + "notNull": false + }, + "DISPLN": { + "name": "DISPLN", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "LRG_KWK": { + "name": "LRG_KWK", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "DTL_KWK": { + "name": "DTL_KWK", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "SP_INSP_GB": { + "name": "SP_INSP_GB", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "PNTOUT_SPEC_4": { + "name": "PNTOUT_SPEC_4", + "type": "varchar(5)", + "primaryKey": false, + "notNull": false + }, + "OFE_MAT_NO": { + "name": "OFE_MAT_NO", + "type": "varchar(18)", + "primaryKey": false, + "notNull": false + }, + "OFE_CAB_YN": { + "name": "OFE_CAB_YN", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "INSTL_PSB_CNT": { + "name": "INSTL_PSB_CNT", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "CUTL_ML_GB": { + "name": "CUTL_ML_GB", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "FCM_INSP": { + "name": "FCM_INSP", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "DOC_NO": { + "name": "DOC_NO", + "type": "varchar(25)", + "primaryKey": false, + "notNull": false + }, + "HOLD_CAUS": { + "name": "HOLD_CAUS", + "type": "varchar(200)", + "primaryKey": false, + "notNull": false + }, + "HOLD_DT": { + "name": "HOLD_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "HOLD_LIFT_DT": { + "name": "HOLD_LIFT_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "MAT_KND_GB": { + "name": "MAT_KND_GB", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "BATCH_MNG_ORDR": { + "name": "BATCH_MNG_ORDR", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "FS_INPR_ID": { + "name": "FS_INPR_ID", + "type": "varchar(13)", + "primaryKey": false, + "notNull": false + }, + "FS_INP_DTM": { + "name": "FS_INP_DTM", + "type": "varchar(14)", + "primaryKey": false, + "notNull": false + }, + "FIN_CHGR_ID": { + "name": "FIN_CHGR_ID", + "type": "varchar(13)", + "primaryKey": false, + "notNull": false + }, + "FIN_CHG_DTM": { + "name": "FIN_CHG_DTM", + "type": "varchar(14)", + "primaryKey": false, + "notNull": false + }, + "DWG_FILE_NM": { + "name": "DWG_FILE_NM", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "TAG_NO_CHG_DT": { + "name": "TAG_NO_CHG_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "SUB_EQP_YN": { + "name": "SUB_EQP_YN", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "ATT_MAT_YN": { + "name": "ATT_MAT_YN", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "DSN_REV_NO": { + "name": "DSN_REV_NO", + "type": "varchar(4)", + "primaryKey": false, + "notNull": false + }, + "USR_DF_CHAR1": { + "name": "USR_DF_CHAR1", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "USR_DF_CHAR2": { + "name": "USR_DF_CHAR2", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "USR_DF_CHAR3": { + "name": "USR_DF_CHAR3", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "USR_DF_CHAR4": { + "name": "USR_DF_CHAR4", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "USR_DF_CHAR5": { + "name": "USR_DF_CHAR5", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "nonsap.cmctb_mat_clas": { + "name": "cmctb_mat_clas", + "schema": "nonsap", + "columns": { + "CLAS_CD": { + "name": "CLAS_CD", + "type": "varchar(18)", + "primaryKey": false, + "notNull": true + }, + "CLAS_NM": { + "name": "CLAS_NM", + "type": "varchar(60)", + "primaryKey": false, + "notNull": false + }, + "CLAS_DTL": { + "name": "CLAS_DTL", + "type": "varchar(180)", + "primaryKey": false, + "notNull": false + }, + "PRNT_CLAS_CD": { + "name": "PRNT_CLAS_CD", + "type": "varchar(18)", + "primaryKey": false, + "notNull": false + }, + "CLAS_LVL": { + "name": "CLAS_LVL", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "DEL_ORDR": { + "name": "DEL_ORDR", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "UOM": { + "name": "UOM", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "STYPE": { + "name": "STYPE", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "GRD_MATL": { + "name": "GRD_MATL", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "CHG_DT": { + "name": "CHG_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "BSE_UOM": { + "name": "BSE_UOM", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "nonsap.cmctb_mat_clas_spchar": { + "name": "cmctb_mat_clas_spchar", + "schema": "nonsap", + "columns": { + "CLAS_CD": { + "name": "CLAS_CD", + "type": "varchar(18)", + "primaryKey": false, + "notNull": true + }, + "SPCHAR_CD": { + "name": "SPCHAR_CD", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true + }, + "SPCHAR_SEQ": { + "name": "SPCHAR_SEQ", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "MNDT_YN": { + "name": "MNDT_YN", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "CHG_DT": { + "name": "CHG_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "DEL_ORDR": { + "name": "DEL_ORDR", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "cmctb_mat_clas_spchar_CLAS_CD_SPCHAR_CD_pk": { + "name": "cmctb_mat_clas_spchar_CLAS_CD_SPCHAR_CD_pk", + "columns": [ + "CLAS_CD", + "SPCHAR_CD" + ] + } + }, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "nonsap.cmctb_mat_dsc": { + "name": "cmctb_mat_dsc", + "schema": "nonsap", + "columns": { + "MAT_NO": { + "name": "MAT_NO", + "type": "varchar(18)", + "primaryKey": false, + "notNull": true + }, + "LANG_KEY": { + "name": "LANG_KEY", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true + }, + "MAT_DTL": { + "name": "MAT_DTL", + "type": "varchar(120)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "nonsap.cmctb_mat_plnt": { + "name": "cmctb_mat_plnt", + "schema": "nonsap", + "columns": { + "MAT_NO": { + "name": "MAT_NO", + "type": "varchar(18)", + "primaryKey": false, + "notNull": true + }, + "PLNT": { + "name": "PLNT", + "type": "varchar(4)", + "primaryKey": false, + "notNull": true + }, + "DELV_UOM": { + "name": "DELV_UOM", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "EA_BTCH_ND_GB": { + "name": "EA_BTCH_ND_GB", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "PRCR_CLF": { + "name": "PRCR_CLF", + "type": "varchar(4)", + "primaryKey": false, + "notNull": false + }, + "PUR_CHRGR_CD": { + "name": "PUR_CHRGR_CD", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "PRCR_CHRGR_CD": { + "name": "PRCR_CHRGR_CD", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "GOODS_CHRGR_CD": { + "name": "GOODS_CHRGR_CD", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "PUR_LT": { + "name": "PUR_LT", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "MRP_TP": { + "name": "MRP_TP", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "MAT_STAT": { + "name": "MAT_STAT", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "BULK_MAT_ORDR": { + "name": "BULK_MAT_ORDR", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "PRCR_TP": { + "name": "PRCR_TP", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "SFTY_STCK_QTY": { + "name": "SFTY_STCK_QTY", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "SER_PROF": { + "name": "SER_PROF", + "type": "varchar(4)", + "primaryKey": false, + "notNull": false + }, + "DEL_ORDR": { + "name": "DEL_ORDR", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "BATCH_MNG_ORDR": { + "name": "BATCH_MNG_ORDR", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "IF_STAT": { + "name": "IF_STAT", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "IF_MSG": { + "name": "IF_MSG", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "IF_DT": { + "name": "IF_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "IF_TM": { + "name": "IF_TM", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "SP_PRCR_TP": { + "name": "SP_PRCR_TP", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "nonsap.cmctb_mat_spchar": { + "name": "cmctb_mat_spchar", + "schema": "nonsap", + "columns": { + "MAT_NO": { + "name": "MAT_NO", + "type": "varchar(18)", + "primaryKey": false, + "notNull": true + }, + "SPCHAR_CD": { + "name": "SPCHAR_CD", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true + }, + "SPCHAR_DTL": { + "name": "SPCHAR_DTL", + "type": "varchar(90)", + "primaryKey": false, + "notNull": false + }, + "SPCHAR_VAL_CD": { + "name": "SPCHAR_VAL_CD", + "type": "varchar(90)", + "primaryKey": false, + "notNull": false + }, + "SPCHAR_VAL_DTL": { + "name": "SPCHAR_VAL_DTL", + "type": "varchar(90)", + "primaryKey": false, + "notNull": false + }, + "SPCHAR_VAL_NUM": { + "name": "SPCHAR_VAL_NUM", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "SPCHAR_VAL_UOM": { + "name": "SPCHAR_VAL_UOM", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "nonsap.cmctb_mat_spchar_mast": { + "name": "cmctb_mat_spchar_mast", + "schema": "nonsap", + "columns": { + "SPCHAR_CD": { + "name": "SPCHAR_CD", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true + }, + "SPCHAR_DTL": { + "name": "SPCHAR_DTL", + "type": "varchar(90)", + "primaryKey": false, + "notNull": false + }, + "SPCHAR_TP": { + "name": "SPCHAR_TP", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "SPCHAR_VAL_UOM": { + "name": "SPCHAR_VAL_UOM", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "SPCHAR_VAL_YN": { + "name": "SPCHAR_VAL_YN", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "SPCHAR_GRP": { + "name": "SPCHAR_GRP", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "CHG_DT": { + "name": "CHG_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "DEL_ORDR": { + "name": "DEL_ORDR", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "cmctb_mat_spchar_mast_SPCHAR_CD_pk": { + "name": "cmctb_mat_spchar_mast_SPCHAR_CD_pk", + "columns": [ + "SPCHAR_CD" + ] + } + }, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "nonsap.cmctb_mat_spchar_val": { + "name": "cmctb_mat_spchar_val", + "schema": "nonsap", + "columns": { + "SPCHAR_CD": { + "name": "SPCHAR_CD", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true + }, + "SPCHAR_VAL_CD": { + "name": "SPCHAR_VAL_CD", + "type": "varchar(90)", + "primaryKey": false, + "notNull": true + }, + "SPCHAR_VAL_DTL": { + "name": "SPCHAR_VAL_DTL", + "type": "varchar(90)", + "primaryKey": false, + "notNull": false + }, + "CHG_DT": { + "name": "CHG_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "DEL_ORDR": { + "name": "DEL_ORDR", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "cmctb_mat_spchar_val_SPCHAR_CD_SPCHAR_VAL_CD_pk": { + "name": "cmctb_mat_spchar_val_SPCHAR_CD_SPCHAR_VAL_CD_pk", + "columns": [ + "SPCHAR_CD", + "SPCHAR_VAL_CD" + ] + } + }, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "nonsap.cmctb_mat_uom": { + "name": "cmctb_mat_uom", + "schema": "nonsap", + "columns": { + "MAT_NO": { + "name": "MAT_NO", + "type": "varchar(18)", + "primaryKey": false, + "notNull": true + }, + "SBST_UOM": { + "name": "SBST_UOM", + "type": "varchar(3)", + "primaryKey": false, + "notNull": true + }, + "CNVRT_FCTR_1": { + "name": "CNVRT_FCTR_1", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "CNVRT_FCTR_2": { + "name": "CNVRT_FCTR_2", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "LTH": { + "name": "LTH", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "WTH": { + "name": "WTH", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "HGT": { + "name": "HGT", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "SZ_UOM": { + "name": "SZ_UOM", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "nonsap.cmctb_proj_bizcls": { + "name": "cmctb_proj_bizcls", + "schema": "nonsap", + "columns": { + "PROJ_NO": { + "name": "PROJ_NO", + "type": "varchar(24)", + "primaryKey": false, + "notNull": true + }, + "TYPE": { + "name": "TYPE", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true + }, + "BIZCLS": { + "name": "BIZCLS", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "QM_CLS": { + "name": "QM_CLS", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "NEW_MC_YN": { + "name": "NEW_MC_YN", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "nonsap.cmctb_proj_mast": { + "name": "cmctb_proj_mast", + "schema": "nonsap", + "columns": { + "PROJ_NO": { + "name": "PROJ_NO", + "type": "varchar(24)", + "primaryKey": false, + "notNull": true + }, + "MSHIP_NO": { + "name": "MSHIP_NO", + "type": "varchar(24)", + "primaryKey": false, + "notNull": false + }, + "SERS_NO": { + "name": "SERS_NO", + "type": "varchar(24)", + "primaryKey": false, + "notNull": false + }, + "REF_NO": { + "name": "REF_NO", + "type": "varchar(5)", + "primaryKey": false, + "notNull": false + }, + "SKND": { + "name": "SKND", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "SHTYPE": { + "name": "SHTYPE", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "SHTYPE_UOM": { + "name": "SHTYPE_UOM", + "type": "varchar(5)", + "primaryKey": false, + "notNull": false + }, + "DOCK_CD": { + "name": "DOCK_CD", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "OWN_1": { + "name": "OWN_1", + "type": "varchar(32)", + "primaryKey": false, + "notNull": false + }, + "CLS_1": { + "name": "CLS_1", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "CNRT_DT": { + "name": "CNRT_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "CNRT_DL_DT": { + "name": "CNRT_DL_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "PROJ_DSC": { + "name": "PROJ_DSC", + "type": "varchar(120)", + "primaryKey": false, + "notNull": false + }, + "PROJ_GB": { + "name": "PROJ_GB", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "OWN_NM": { + "name": "OWN_NM", + "type": "varchar(120)", + "primaryKey": false, + "notNull": false + }, + "NEW_SKND2": { + "name": "NEW_SKND2", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "OWN_AB": { + "name": "OWN_AB", + "type": "varchar(60)", + "primaryKey": false, + "notNull": false + }, + "CHINA_YN": { + "name": "CHINA_YN", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "PROJ_DTL_TP": { + "name": "PROJ_DTL_TP", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "PROJ_PROF": { + "name": "PROJ_PROF", + "type": "varchar(7)", + "primaryKey": false, + "notNull": false + }, + "INQY_NO": { + "name": "INQY_NO", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "INQY_SEQ": { + "name": "INQY_SEQ", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "NTTP": { + "name": "NTTP", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "RLTD_PROJ": { + "name": "RLTD_PROJ", + "type": "varchar(40)", + "primaryKey": false, + "notNull": false + }, + "DIGT_PDT_GRP": { + "name": "DIGT_PDT_GRP", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "WP_PROJ_TP": { + "name": "WP_PROJ_TP", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "TOT_CNRT_CNT": { + "name": "TOT_CNRT_CNT", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "PROJ_ETC_TP": { + "name": "PROJ_ETC_TP", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "IF_STAT": { + "name": "IF_STAT", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "SRC_SYS_ID": { + "name": "SRC_SYS_ID", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "PRGS_STAT": { + "name": "PRGS_STAT", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "DEL_YN": { + "name": "DEL_YN", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "DL_CSTM_CD": { + "name": "DL_CSTM_CD", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "PDT_LVL_4": { + "name": "PDT_LVL_4", + "type": "varchar(14)", + "primaryKey": false, + "notNull": false + }, + "AS_GRNT_PRD": { + "name": "AS_GRNT_PRD", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "RL_DL_DT": { + "name": "RL_DL_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "SA_DT": { + "name": "SA_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "GOV": { + "name": "GOV", + "type": "varchar(60)", + "primaryKey": false, + "notNull": false + }, + "DL_BF_PROJ_NM": { + "name": "DL_BF_PROJ_NM", + "type": "varchar(120)", + "primaryKey": false, + "notNull": false + }, + "IMO_NO": { + "name": "IMO_NO", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "DIST_PATH": { + "name": "DIST_PATH", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "SALE_ORG_CD": { + "name": "SALE_ORG_CD", + "type": "varchar(4)", + "primaryKey": false, + "notNull": false + }, + "SALE_GRP": { + "name": "SALE_GRP", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "BIZLOC_CD": { + "name": "BIZLOC_CD", + "type": "varchar(4)", + "primaryKey": false, + "notNull": false + }, + "MNG_ACOT_DMN": { + "name": "MNG_ACOT_DMN", + "type": "varchar(4)", + "primaryKey": false, + "notNull": false + }, + "CO_CD": { + "name": "CO_CD", + "type": "varchar(4)", + "primaryKey": false, + "notNull": false + }, + "BIZ_DMN": { + "name": "BIZ_DMN", + "type": "varchar(4)", + "primaryKey": false, + "notNull": false + }, + "PLNT_CD": { + "name": "PLNT_CD", + "type": "varchar(4)", + "primaryKey": false, + "notNull": false + }, + "PRCTR": { + "name": "PRCTR", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "CNRT_CNTN_YN": { + "name": "CNRT_CNTN_YN", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "CNRT_RESV_YN": { + "name": "CNRT_RESV_YN", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "PROJ_PRGS_YN": { + "name": "PROJ_PRGS_YN", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "SYS_ACOT_CLSD_DT": { + "name": "SYS_ACOT_CLSD_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "PROJ_SCP": { + "name": "PROJ_SCP", + "type": "varchar(5)", + "primaryKey": false, + "notNull": false + }, + "LOA": { + "name": "LOA", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "MN_ENGN_TP_CD": { + "name": "MN_ENGN_TP_CD", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "SPD": { + "name": "SPD", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "GT": { + "name": "GT", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "BP_DL_DT": { + "name": "BP_DL_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "SHTYPE_GRP": { + "name": "SHTYPE_GRP", + "type": "varchar(4)", + "primaryKey": false, + "notNull": false + }, + "PROJ_CRTE_REQ_EMPNO": { + "name": "PROJ_CRTE_REQ_EMPNO", + "type": "varchar(13)", + "primaryKey": false, + "notNull": false + }, + "PROJ_CRTE_REQ_DT": { + "name": "PROJ_CRTE_REQ_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "IO_GB": { + "name": "IO_GB", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "CSTM_PO_NO": { + "name": "CSTM_PO_NO", + "type": "varchar(35)", + "primaryKey": false, + "notNull": false + }, + "GENT_CNT": { + "name": "GENT_CNT", + "type": "varchar(5)", + "primaryKey": false, + "notNull": false + }, + "ORDR_GRNT_PRD": { + "name": "ORDR_GRNT_PRD", + "type": "varchar(5)", + "primaryKey": false, + "notNull": false + }, + "ORDR_GRNT_FN_DT": { + "name": "ORDR_GRNT_FN_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "DSN_CHRGR": { + "name": "DSN_CHRGR", + "type": "varchar(13)", + "primaryKey": false, + "notNull": false + }, + "DL_AF_PROJ_NM": { + "name": "DL_AF_PROJ_NM", + "type": "varchar(120)", + "primaryKey": false, + "notNull": false + }, + "DL_AF_RL_CLNT": { + "name": "DL_AF_RL_CLNT", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "DL_AF_SHPSRV_SCP": { + "name": "DL_AF_SHPSRV_SCP", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "DL_AF_NTTP": { + "name": "DL_AF_NTTP", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "DL_AF_CLS": { + "name": "DL_AF_CLS", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "DL_AF_CALL_SIGN": { + "name": "DL_AF_CALL_SIGN", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "DL_AF_TEL_NO": { + "name": "DL_AF_TEL_NO", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "DL_AF_FAX_NO": { + "name": "DL_AF_FAX_NO", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "DL_AF_EMAIL_ADR": { + "name": "DL_AF_EMAIL_ADR", + "type": "varchar(60)", + "primaryKey": false, + "notNull": false + }, + "PROJ_WBS_TP": { + "name": "PROJ_WBS_TP", + "type": "varchar(7)", + "primaryKey": false, + "notNull": false + }, + "XSTAT": { + "name": "XSTAT", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "XMSGS": { + "name": "XMSGS", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "XDATS": { + "name": "XDATS", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "XTIMS": { + "name": "XTIMS", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "CHN_PROJ_TP": { + "name": "CHN_PROJ_TP", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "FIN_GRNT_FN_DT": { + "name": "FIN_GRNT_FN_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "STDT": { + "name": "STDT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "SERS_YN": { + "name": "SERS_YN", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "TYPE": { + "name": "TYPE", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "PRO_PROJ_NO": { + "name": "PRO_PROJ_NO", + "type": "varchar(24)", + "primaryKey": false, + "notNull": false + }, + "PBSD_PROJ_NO": { + "name": "PBSD_PROJ_NO", + "type": "varchar(24)", + "primaryKey": false, + "notNull": false + }, + "PBSD_SHIP_NM": { + "name": "PBSD_SHIP_NM", + "type": "varchar(150)", + "primaryKey": false, + "notNull": false + }, + "BIZCLS": { + "name": "BIZCLS", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "CLS_2": { + "name": "CLS_2", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "SHTYPE_CD": { + "name": "SHTYPE_CD", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "PROJ_DL_PLN_DT": { + "name": "PROJ_DL_PLN_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "PROJ_DL_RT_DT": { + "name": "PROJ_DL_RT_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "TOT_AREA": { + "name": "TOT_AREA", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "EXMPT_AREA": { + "name": "EXMPT_AREA", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "EXMPT_RAT": { + "name": "EXMPT_RAT", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "QM_CLS": { + "name": "QM_CLS", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "CNCT_PROJ_NO": { + "name": "CNCT_PROJ_NO", + "type": "varchar(24)", + "primaryKey": false, + "notNull": false + }, + "EQP_DTL_YN": { + "name": "EQP_DTL_YN", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "EXP_YN": { + "name": "EXP_YN", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "ACT_MH_YN": { + "name": "ACT_MH_YN", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "SPEC": { + "name": "SPEC", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "DSGN_LIFE": { + "name": "DSGN_LIFE", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "NEW_MC_YN": { + "name": "NEW_MC_YN", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "WK_ENV_WT_VAL_YN": { + "name": "WK_ENV_WT_VAL_YN", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "GRNT_STDT": { + "name": "GRNT_STDT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "TMH_ADPT_YN": { + "name": "TMH_ADPT_YN", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "ZV_YN": { + "name": "ZV_YN", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "SEC_YN": { + "name": "SEC_YN", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "nonsap.cmctb_proj_wbs": { + "name": "cmctb_proj_wbs", + "schema": "nonsap", + "columns": { + "PROJ_NO": { + "name": "PROJ_NO", + "type": "varchar(24)", + "primaryKey": false, + "notNull": true + }, + "WBS_ELMT": { + "name": "WBS_ELMT", + "type": "varchar(24)", + "primaryKey": false, + "notNull": true + }, + "WBS_ELMT_NM": { + "name": "WBS_ELMT_NM", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "WBS_LVL": { + "name": "WBS_LVL", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "FLAG": { + "name": "FLAG", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "WBS_INSD_ELMT": { + "name": "WBS_INSD_ELMT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "HGRK_WBS_ELMT": { + "name": "HGRK_WBS_ELMT", + "type": "varchar(24)", + "primaryKey": false, + "notNull": false + }, + "XSTAT": { + "name": "XSTAT", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "XMSGS": { + "name": "XMSGS", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "XDATS": { + "name": "XDATS", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "XTIMS": { + "name": "XTIMS", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "SYS_STAT": { + "name": "SYS_STAT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "WBS_ELMT_1": { + "name": "WBS_ELMT_1", + "type": "varchar(24)", + "primaryKey": false, + "notNull": false + }, + "WBS_ELMT_2": { + "name": "WBS_ELMT_2", + "type": "varchar(24)", + "primaryKey": false, + "notNull": false + }, + "WBS_ELMT_3": { + "name": "WBS_ELMT_3", + "type": "varchar(24)", + "primaryKey": false, + "notNull": false + }, + "WBS_ELMT_4": { + "name": "WBS_ELMT_4", + "type": "varchar(24)", + "primaryKey": false, + "notNull": false + }, + "WBS_ELMT_5": { + "name": "WBS_ELMT_5", + "type": "varchar(24)", + "primaryKey": false, + "notNull": false + }, + "WBS_ELMT_6": { + "name": "WBS_ELMT_6", + "type": "varchar(24)", + "primaryKey": false, + "notNull": false + }, + "WBS_ELMT_7": { + "name": "WBS_ELMT_7", + "type": "varchar(24)", + "primaryKey": false, + "notNull": false + }, + "WBS_ELMT_8": { + "name": "WBS_ELMT_8", + "type": "varchar(24)", + "primaryKey": false, + "notNull": false + }, + "WBS_ELMT_9": { + "name": "WBS_ELMT_9", + "type": "varchar(24)", + "primaryKey": false, + "notNull": false + }, + "WBS_ELMT_10": { + "name": "WBS_ELMT_10", + "type": "varchar(24)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "nonsap.cmctb_vendor_addr": { + "name": "cmctb_vendor_addr", + "schema": "nonsap", + "columns": { + "VNDRCD": { + "name": "VNDRCD", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "ADR_NO": { + "name": "ADR_NO", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "INTL_ADR_VER_ID": { + "name": "INTL_ADR_VER_ID", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true + }, + "CITY_ZIP_NO": { + "name": "CITY_ZIP_NO", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "POBX_ZIP_NO": { + "name": "POBX_ZIP_NO", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "ADR_1": { + "name": "ADR_1", + "type": "varchar(120)", + "primaryKey": false, + "notNull": false + }, + "ADR_2": { + "name": "ADR_2", + "type": "varchar(120)", + "primaryKey": false, + "notNull": false + }, + "REGN_CD": { + "name": "REGN_CD", + "type": "varchar(5)", + "primaryKey": false, + "notNull": false + }, + "TTL": { + "name": "TTL", + "type": "varchar(90)", + "primaryKey": false, + "notNull": false + }, + "VNDRNM_ABRV_1": { + "name": "VNDRNM_ABRV_1", + "type": "varchar(60)", + "primaryKey": false, + "notNull": false + }, + "VNDRNM_ABRV_2": { + "name": "VNDRNM_ABRV_2", + "type": "varchar(60)", + "primaryKey": false, + "notNull": false + }, + "VNDRNM_1": { + "name": "VNDRNM_1", + "type": "varchar(120)", + "primaryKey": false, + "notNull": false + }, + "VNDRNM_2": { + "name": "VNDRNM_2", + "type": "varchar(120)", + "primaryKey": false, + "notNull": false + }, + "LANG_KEY": { + "name": "LANG_KEY", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "ETC_ADR_1": { + "name": "ETC_ADR_1", + "type": "varchar(180)", + "primaryKey": false, + "notNull": false + }, + "ETC_ADR_2": { + "name": "ETC_ADR_2", + "type": "varchar(180)", + "primaryKey": false, + "notNull": false + }, + "NTN_CD": { + "name": "NTN_CD", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "POBX": { + "name": "POBX", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "TRANS_ZONE": { + "name": "TRANS_ZONE", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "IF_DT": { + "name": "IF_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "IF_TM": { + "name": "IF_TM", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "IF_STAT": { + "name": "IF_STAT", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "IF_MSG": { + "name": "IF_MSG", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "VNDRNM_3": { + "name": "VNDRNM_3", + "type": "varchar(120)", + "primaryKey": false, + "notNull": false + }, + "VNDRNM_4": { + "name": "VNDRNM_4", + "type": "varchar(120)", + "primaryKey": false, + "notNull": false + }, + "TAX_JRDT_ZONE_CD": { + "name": "TAX_JRDT_ZONE_CD", + "type": "varchar(15)", + "primaryKey": false, + "notNull": false + }, + "ADR_TMZ": { + "name": "ADR_TMZ", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "nonsap.cmctb_vendor_compny": { + "name": "cmctb_vendor_compny", + "schema": "nonsap", + "columns": { + "VNDRCD": { + "name": "VNDRCD", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "CO_CD": { + "name": "CO_CD", + "type": "varchar(4)", + "primaryKey": false, + "notNull": true + }, + "CTL_ACNT": { + "name": "CTL_ACNT", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "SRT_KEY": { + "name": "SRT_KEY", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "PLN_GRP": { + "name": "PLN_GRP", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "BF_VNDRCD": { + "name": "BF_VNDRCD", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "SPLY_COND": { + "name": "SPLY_COND", + "type": "varchar(4)", + "primaryKey": false, + "notNull": false + }, + "OVLAP_INVC_ORDR": { + "name": "OVLAP_INVC_ORDR", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "SPLY_MTHD": { + "name": "SPLY_MTHD", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "SPLY_HOLD_ORDR": { + "name": "SPLY_HOLD_ORDR", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "TRD_BANK_SHRT_KEY": { + "name": "TRD_BANK_SHRT_KEY", + "type": "varchar(5)", + "primaryKey": false, + "notNull": false + }, + "PST_HOLD_ORDR": { + "name": "PST_HOLD_ORDR", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "HOLD_CAUS": { + "name": "HOLD_CAUS", + "type": "varchar(200)", + "primaryKey": false, + "notNull": false + }, + "DEL_ORDR": { + "name": "DEL_ORDR", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "SRCE_TX_NTN_CD": { + "name": "SRCE_TX_NTN_CD", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "IF_DT": { + "name": "IF_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "IF_TM": { + "name": "IF_TM", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "IF_STAT": { + "name": "IF_STAT", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "IF_MSG": { + "name": "IF_MSG", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "MIN_ORDR": { + "name": "MIN_ORDR", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "SPRT_SPLY_ORDR": { + "name": "SPRT_SPLY_ORDR", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "CSTM_VNDR_CLR_ORDR": { + "name": "CSTM_VNDR_CLR_ORDR", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "SRCE_TX_CD": { + "name": "SRCE_TX_CD", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "IATA_BIC_GB": { + "name": "IATA_BIC_GB", + "type": "varchar(4)", + "primaryKey": false, + "notNull": false + }, + "REP_TP": { + "name": "REP_TP", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "LOGST_VNDR_TP": { + "name": "LOGST_VNDR_TP", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "VNDR_ACNT_NO": { + "name": "VNDR_ACNT_NO", + "type": "varchar(12)", + "primaryKey": false, + "notNull": false + }, + "VNDR_CHRGR_NM": { + "name": "VNDR_CHRGR_NM", + "type": "varchar(45)", + "primaryKey": false, + "notNull": false + }, + "ACOT_CHRGR_TELNO": { + "name": "ACOT_CHRGR_TELNO", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "AUTH_GRP": { + "name": "AUTH_GRP", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "FIN_IR_CALC_DT": { + "name": "FIN_IR_CALC_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "FIN_IR_ACT_DT": { + "name": "FIN_IR_ACT_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "ACOT_CHRGR_FAXNO": { + "name": "ACOT_CHRGR_FAXNO", + "type": "varchar(31)", + "primaryKey": false, + "notNull": false + }, + "MK_CHRGR_EMAIL": { + "name": "MK_CHRGR_EMAIL", + "type": "varchar(241)", + "primaryKey": false, + "notNull": false + }, + "MEMO": { + "name": "MEMO", + "type": "varchar(120)", + "primaryKey": false, + "notNull": false + }, + "MOFFC_ACNT_NO": { + "name": "MOFFC_ACNT_NO", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "cmctb_vendor_compny_VNDRCD_CO_CD_pk": { + "name": "cmctb_vendor_compny_VNDRCD_CO_CD_pk", + "columns": [ + "VNDRCD", + "CO_CD" + ] + } + }, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "nonsap.cmctb_vendor_general": { + "name": "cmctb_vendor_general", + "schema": "nonsap", + "columns": { + "VNDRCD": { + "name": "VNDRCD", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "ACNT_GRP": { + "name": "ACNT_GRP", + "type": "varchar(4)", + "primaryKey": false, + "notNull": false + }, + "ACNT_GRP_TP": { + "name": "ACNT_GRP_TP", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "CSTM_CD": { + "name": "CSTM_CD", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "PST_HOLD_ORDR": { + "name": "PST_HOLD_ORDR", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "PUR_HOLD_ORDR": { + "name": "PUR_HOLD_ORDR", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "HOLD_CAUS": { + "name": "HOLD_CAUS", + "type": "varchar(200)", + "primaryKey": false, + "notNull": false + }, + "DEL_ORDR": { + "name": "DEL_ORDR", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "CO_ID": { + "name": "CO_ID", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "REPR_NM": { + "name": "REPR_NM", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "BIZTP": { + "name": "BIZTP", + "type": "varchar(90)", + "primaryKey": false, + "notNull": false + }, + "BIZCON": { + "name": "BIZCON", + "type": "varchar(90)", + "primaryKey": false, + "notNull": false + }, + "REG_DT": { + "name": "REG_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "REG_DTM": { + "name": "REG_DTM", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "REGR_ID": { + "name": "REGR_ID", + "type": "varchar(13)", + "primaryKey": false, + "notNull": false + }, + "AGR_DT": { + "name": "AGR_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "AGR_TM": { + "name": "AGR_TM", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "AGR_R_ID": { + "name": "AGR_R_ID", + "type": "varchar(13)", + "primaryKey": false, + "notNull": false + }, + "CHG_DT": { + "name": "CHG_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "CHG_TM": { + "name": "CHG_TM", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "CHGR_ID": { + "name": "CHGR_ID", + "type": "varchar(13)", + "primaryKey": false, + "notNull": false + }, + "NTN_CD": { + "name": "NTN_CD", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "REP_TEL_NO": { + "name": "REP_TEL_NO", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "REP_FAX_NO": { + "name": "REP_FAX_NO", + "type": "varchar(31)", + "primaryKey": false, + "notNull": false + }, + "BIZR_NO": { + "name": "BIZR_NO", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "CO_REG_NO": { + "name": "CO_REG_NO", + "type": "varchar(18)", + "primaryKey": false, + "notNull": false + }, + "TX_CD_4": { + "name": "TX_CD_4", + "type": "varchar(54)", + "primaryKey": false, + "notNull": false + }, + "CO_INST_DT": { + "name": "CO_INST_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "VNDR_TP": { + "name": "VNDR_TP", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "GBL_TOP_CD": { + "name": "GBL_TOP_CD", + "type": "varchar(11)", + "primaryKey": false, + "notNull": false + }, + "GBL_TOP_NM": { + "name": "GBL_TOP_NM", + "type": "varchar(120)", + "primaryKey": false, + "notNull": false + }, + "DMST_TOP_CD": { + "name": "DMST_TOP_CD", + "type": "varchar(11)", + "primaryKey": false, + "notNull": false + }, + "DMST_TOP_NM": { + "name": "DMST_TOP_NM", + "type": "varchar(120)", + "primaryKey": false, + "notNull": false + }, + "BIZ_UOM_CD": { + "name": "BIZ_UOM_CD", + "type": "varchar(11)", + "primaryKey": false, + "notNull": false + }, + "BIZ_UOM_NM": { + "name": "BIZ_UOM_NM", + "type": "varchar(120)", + "primaryKey": false, + "notNull": false + }, + "DNS_NO": { + "name": "DNS_NO", + "type": "varchar(11)", + "primaryKey": false, + "notNull": false + }, + "IF_DT": { + "name": "IF_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "IF_TM": { + "name": "IF_TM", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "IF_STAT": { + "name": "IF_STAT", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "IF_MSG": { + "name": "IF_MSG", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "TTL": { + "name": "TTL", + "type": "varchar(45)", + "primaryKey": false, + "notNull": false + }, + "VAT_REG_NO": { + "name": "VAT_REG_NO", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "GIRO_VNDR_ORDR": { + "name": "GIRO_VNDR_ORDR", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "VNDRNM_1": { + "name": "VNDRNM_1", + "type": "varchar(120)", + "primaryKey": false, + "notNull": false + }, + "VNDRNM_2": { + "name": "VNDRNM_2", + "type": "varchar(120)", + "primaryKey": false, + "notNull": false + }, + "VNDRNM_3": { + "name": "VNDRNM_3", + "type": "varchar(120)", + "primaryKey": false, + "notNull": false + }, + "VNDRNM_4": { + "name": "VNDRNM_4", + "type": "varchar(120)", + "primaryKey": false, + "notNull": false + }, + "VNDRNM_ABRV_1": { + "name": "VNDRNM_ABRV_1", + "type": "varchar(60)", + "primaryKey": false, + "notNull": false + }, + "VNDRNM_ABRV_2": { + "name": "VNDRNM_ABRV_2", + "type": "varchar(60)", + "primaryKey": false, + "notNull": false + }, + "PTNT_VNDRCD": { + "name": "PTNT_VNDRCD", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "ADR_1": { + "name": "ADR_1", + "type": "varchar(120)", + "primaryKey": false, + "notNull": false + }, + "ADR_2": { + "name": "ADR_2", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "QLT_CHRGR_NM": { + "name": "QLT_CHRGR_NM", + "type": "varchar(60)", + "primaryKey": false, + "notNull": false + }, + "QLT_CHRGR_TELNO": { + "name": "QLT_CHRGR_TELNO", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "QLT_CHRGR_EMAIL": { + "name": "QLT_CHRGR_EMAIL", + "type": "varchar(241)", + "primaryKey": false, + "notNull": false + }, + "SB_WKA_SEQ": { + "name": "SB_WKA_SEQ", + "type": "varchar(16)", + "primaryKey": false, + "notNull": false + }, + "OVLAP_CAUS_CD": { + "name": "OVLAP_CAUS_CD", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "DOC_TP": { + "name": "DOC_TP", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "DOC_NO": { + "name": "DOC_NO", + "type": "varchar(25)", + "primaryKey": false, + "notNull": false + }, + "PTN_DOC": { + "name": "PTN_DOC", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "DOC_VER": { + "name": "DOC_VER", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "INB_FLAG": { + "name": "INB_FLAG", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "DEL_HOLD_ORDR": { + "name": "DEL_HOLD_ORDR", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "PUR_HOLD_DT": { + "name": "PUR_HOLD_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "POBX": { + "name": "POBX", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "INTL_LCTN_CHK_NUM": { + "name": "INTL_LCTN_CHK_NUM", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "SRCETX_RP_SEX_KEY": { + "name": "SRCETX_RP_SEX_KEY", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "VNDR_CNRT_CHRGR_1": { + "name": "VNDR_CNRT_CHRGR_1", + "type": "varchar(105)", + "primaryKey": false, + "notNull": false + }, + "VNDR_CNRT_CHRGR_2": { + "name": "VNDR_CNRT_CHRGR_2", + "type": "varchar(105)", + "primaryKey": false, + "notNull": false + }, + "REPR_RESNO": { + "name": "REPR_RESNO", + "type": "varchar(13)", + "primaryKey": false, + "notNull": false + }, + "CO_VLM": { + "name": "CO_VLM", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "nonsap.cmctb_vendor_grp": { + "name": "cmctb_vendor_grp", + "schema": "nonsap", + "columns": { + "VNDRCD": { + "name": "VNDRCD", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "BIZ_GRP_CD": { + "name": "BIZ_GRP_CD", + "type": "varchar(3)", + "primaryKey": false, + "notNull": true + }, + "CRTE_DT": { + "name": "CRTE_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "CRTE_TM": { + "name": "CRTE_TM", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "CRTER_ID": { + "name": "CRTER_ID", + "type": "varchar(13)", + "primaryKey": false, + "notNull": false + }, + "CHG_DT": { + "name": "CHG_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "CHG_TM": { + "name": "CHG_TM", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "CHGR_ID": { + "name": "CHGR_ID", + "type": "varchar(13)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "nonsap.cmctb_vendor_inco": { + "name": "cmctb_vendor_inco", + "schema": "nonsap", + "columns": { + "VNDRCD": { + "name": "VNDRCD", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "VNDRNM": { + "name": "VNDRNM", + "type": "varchar(120)", + "primaryKey": false, + "notNull": false + }, + "REPR_NM": { + "name": "REPR_NM", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "PRTNR_GB": { + "name": "PRTNR_GB", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "INCO_PRTNR_CD": { + "name": "INCO_PRTNR_CD", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "INCO_PRTNR_WKA_1": { + "name": "INCO_PRTNR_WKA_1", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "INCO_PRTNR_WKA_2": { + "name": "INCO_PRTNR_WKA_2", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "INCO_PRTNR_WKA_3": { + "name": "INCO_PRTNR_WKA_3", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "JBTYPE_CD": { + "name": "JBTYPE_CD", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "JBTYPE_CD_2": { + "name": "JBTYPE_CD_2", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "INDV_CO_GB": { + "name": "INDV_CO_GB", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "INCO_FOND_YN": { + "name": "INCO_FOND_YN", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "DOCK_NO": { + "name": "DOCK_NO", + "type": "varchar(25)", + "primaryKey": false, + "notNull": false + }, + "OCMP_INP_DT": { + "name": "OCMP_INP_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "INCO_DUSE_DT": { + "name": "INCO_DUSE_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "INDST_INS_PMRAT": { + "name": "INDST_INS_PMRAT", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "CNRT_PFRM_GRAMT": { + "name": "CNRT_PFRM_GRAMT", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "WGE_RAT": { + "name": "WGE_RAT", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "CRSPD_DEPTCD_1": { + "name": "CRSPD_DEPTCD_1", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "CRSPD_DEPTCD_2": { + "name": "CRSPD_DEPTCD_2", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "CRSPD_TEAM_BLNG": { + "name": "CRSPD_TEAM_BLNG", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "INCO_PRTNR_ITM_1": { + "name": "INCO_PRTNR_ITM_1", + "type": "varchar(120)", + "primaryKey": false, + "notNull": false + }, + "INCO_PRTNR_ITM_2": { + "name": "INCO_PRTNR_ITM_2", + "type": "varchar(120)", + "primaryKey": false, + "notNull": false + }, + "OFC_LOC": { + "name": "OFC_LOC", + "type": "varchar(240)", + "primaryKey": false, + "notNull": false + }, + "REP_OCMP_CARR": { + "name": "REP_OCMP_CARR", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "INCO_DUSE_CAUS": { + "name": "INCO_DUSE_CAUS", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "TEL_NO": { + "name": "TEL_NO", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "ADR1": { + "name": "ADR1", + "type": "varchar(200)", + "primaryKey": false, + "notNull": false + }, + "ADR2": { + "name": "ADR2", + "type": "varchar(200)", + "primaryKey": false, + "notNull": false + }, + "OLD_VNDRCD": { + "name": "OLD_VNDRCD", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "TREE_NUM": { + "name": "TREE_NUM", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "CRTE_DT": { + "name": "CRTE_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "CRTE_TM": { + "name": "CRTE_TM", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "CRTE_USR_ID": { + "name": "CRTE_USR_ID", + "type": "varchar(13)", + "primaryKey": false, + "notNull": false + }, + "CHG_DT": { + "name": "CHG_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "CHG_TM": { + "name": "CHG_TM", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "CHG_USR_ID": { + "name": "CHG_USR_ID", + "type": "varchar(13)", + "primaryKey": false, + "notNull": false + }, + "UPR_JBTYPE": { + "name": "UPR_JBTYPE", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "ZBYBP": { + "name": "ZBYBP", + "type": "varchar(4)", + "primaryKey": false, + "notNull": false + }, + "RMK": { + "name": "RMK", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "WDL_PLN_YN": { + "name": "WDL_PLN_YN", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "WGE_DELY_DVL": { + "name": "WGE_DELY_DVL", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "ESCROW_YN": { + "name": "ESCROW_YN", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "nonsap.cmctb_vendor_porg": { + "name": "cmctb_vendor_porg", + "schema": "nonsap", + "columns": { + "VNDRCD": { + "name": "VNDRCD", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "PUR_ORG_CD": { + "name": "PUR_ORG_CD", + "type": "varchar(4)", + "primaryKey": false, + "notNull": true + }, + "PUR_ORD_CUR": { + "name": "PUR_ORD_CUR", + "type": "varchar(5)", + "primaryKey": false, + "notNull": false + }, + "SPLY_COND": { + "name": "SPLY_COND", + "type": "varchar(4)", + "primaryKey": false, + "notNull": false + }, + "DL_COND_1": { + "name": "DL_COND_1", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "DL_COND_2": { + "name": "DL_COND_2", + "type": "varchar(90)", + "primaryKey": false, + "notNull": false + }, + "CALC_SHM_GRP": { + "name": "CALC_SHM_GRP", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "GR_BSE_INVC_VR": { + "name": "GR_BSE_INVC_VR", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "AT_PUR_ORD_ORDR": { + "name": "AT_PUR_ORD_ORDR", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "PUR_HOLD_ORDR": { + "name": "PUR_HOLD_ORDR", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "DEL_ORDR": { + "name": "DEL_ORDR", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "IF_DT": { + "name": "IF_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "IF_TM": { + "name": "IF_TM", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "IF_STAT": { + "name": "IF_STAT", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "IF_MSG": { + "name": "IF_MSG", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "ORD_CNFM_REQ_ORDR": { + "name": "ORD_CNFM_REQ_ORDR", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "SALE_CHRGR_NM": { + "name": "SALE_CHRGR_NM", + "type": "varchar(120)", + "primaryKey": false, + "notNull": false + }, + "VNDR_TELNO": { + "name": "VNDR_TELNO", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "CNFM_CTL_KEY": { + "name": "CNFM_CTL_KEY", + "type": "varchar(4)", + "primaryKey": false, + "notNull": false + }, + "PUR_HOLD_DT": { + "name": "PUR_HOLD_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "PUR_HOLD_CAUS": { + "name": "PUR_HOLD_CAUS", + "type": "varchar(120)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "nonsap.cmctb_vendor_repremail": { + "name": "cmctb_vendor_repremail", + "schema": "nonsap", + "columns": { + "VNDRCD": { + "name": "VNDRCD", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "ADR_NO": { + "name": "ADR_NO", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "REPR_SER": { + "name": "REPR_SER", + "type": "varchar(3)", + "primaryKey": false, + "notNull": true + }, + "VLD_ST_DT": { + "name": "VLD_ST_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": true + }, + "EMAIL_ADR": { + "name": "EMAIL_ADR", + "type": "varchar(241)", + "primaryKey": false, + "notNull": false + }, + "IF_DT": { + "name": "IF_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "IF_TM": { + "name": "IF_TM", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "IF_STAT": { + "name": "IF_STAT", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "IF_MSG": { + "name": "IF_MSG", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "nonsap.cmctb_vendor_reprfax": { + "name": "cmctb_vendor_reprfax", + "schema": "nonsap", + "columns": { + "VNDRCD": { + "name": "VNDRCD", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "ADR_NO": { + "name": "ADR_NO", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "REPR_SER": { + "name": "REPR_SER", + "type": "varchar(3)", + "primaryKey": false, + "notNull": true + }, + "VLD_ST_DT": { + "name": "VLD_ST_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": true + }, + "NTN_CD": { + "name": "NTN_CD", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "FAXNO": { + "name": "FAXNO", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "FAX_ETS_NO": { + "name": "FAX_ETS_NO", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "IF_DT": { + "name": "IF_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "IF_TM": { + "name": "IF_TM", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "IF_STAT": { + "name": "IF_STAT", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "IF_MSG": { + "name": "IF_MSG", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "nonsap.cmctb_vendor_reprtel": { + "name": "cmctb_vendor_reprtel", + "schema": "nonsap", + "columns": { + "VNDRCD": { + "name": "VNDRCD", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "ADR_NO": { + "name": "ADR_NO", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "REPR_SER": { + "name": "REPR_SER", + "type": "varchar(3)", + "primaryKey": false, + "notNull": true + }, + "VLD_ST_DT": { + "name": "VLD_ST_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": true + }, + "NTN_CD": { + "name": "NTN_CD", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "TELNO": { + "name": "TELNO", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "ETX_NO": { + "name": "ETX_NO", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "HP_ORDR": { + "name": "HP_ORDR", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "IF_DT": { + "name": "IF_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "IF_TM": { + "name": "IF_TM", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "IF_STAT": { + "name": "IF_STAT", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "IF_MSG": { + "name": "IF_MSG", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "nonsap.cmctb_vendor_reprurl": { + "name": "cmctb_vendor_reprurl", + "schema": "nonsap", + "columns": { + "VNDRCD": { + "name": "VNDRCD", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "ADR_NO": { + "name": "ADR_NO", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "REPR_SER": { + "name": "REPR_SER", + "type": "varchar(3)", + "primaryKey": false, + "notNull": true + }, + "VLD_ST_DT": { + "name": "VLD_ST_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": true + }, + "URL": { + "name": "URL", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "IF_DT": { + "name": "IF_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "IF_TM": { + "name": "IF_TM", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "IF_STAT": { + "name": "IF_STAT", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "IF_MSG": { + "name": "IF_MSG", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "nonsap.cmctb_vendor_taxnum": { + "name": "cmctb_vendor_taxnum", + "schema": "nonsap", + "columns": { + "VNDRCD": { + "name": "VNDRCD", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "TX_NO_CTG": { + "name": "TX_NO_CTG", + "type": "varchar(4)", + "primaryKey": false, + "notNull": true + }, + "BIZ_PTNR_TX_NO": { + "name": "BIZ_PTNR_TX_NO", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "IF_DT": { + "name": "IF_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "IF_TM": { + "name": "IF_TM", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "IF_STAT": { + "name": "IF_STAT", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "IF_MSG": { + "name": "IF_MSG", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "nonsap.cmctb_vendor_vfpn": { + "name": "cmctb_vendor_vfpn", + "schema": "nonsap", + "columns": { + "VNDRCD": { + "name": "VNDRCD", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "PUR_ORG_CD": { + "name": "PUR_ORG_CD", + "type": "varchar(4)", + "primaryKey": false, + "notNull": true + }, + "VNDR_SUB_NO": { + "name": "VNDR_SUB_NO", + "type": "varchar(6)", + "primaryKey": false, + "notNull": true + }, + "PLNT_CD": { + "name": "PLNT_CD", + "type": "varchar(4)", + "primaryKey": false, + "notNull": true + }, + "PTNR_SKL": { + "name": "PTNR_SKL", + "type": "varchar(2)", + "primaryKey": false, + "notNull": true + }, + "PTNR_CNT": { + "name": "PTNR_CNT", + "type": "varchar(3)", + "primaryKey": false, + "notNull": true + }, + "ETC_REF_VNDRCD": { + "name": "ETC_REF_VNDRCD", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "BSE_PTNR_ORDR": { + "name": "BSE_PTNR_ORDR", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "IF_DT": { + "name": "IF_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "IF_TM": { + "name": "IF_TM", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "IF_STAT": { + "name": "IF_STAT", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "IF_MSG": { + "name": "IF_MSG", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "nonsap.cmctb_vendor_whthx": { + "name": "cmctb_vendor_whthx", + "schema": "nonsap", + "columns": { + "VNDRCD": { + "name": "VNDRCD", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "CO_CD": { + "name": "CO_CD", + "type": "varchar(4)", + "primaryKey": false, + "notNull": true + }, + "SRCE_TX_TP": { + "name": "SRCE_TX_TP", + "type": "varchar(2)", + "primaryKey": false, + "notNull": true + }, + "SRCE_TX_REL_ORDR": { + "name": "SRCE_TX_REL_ORDR", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "RECIP_TP": { + "name": "RECIP_TP", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "SRCE_TX_IDENT_NO": { + "name": "SRCE_TX_IDENT_NO", + "type": "varchar(16)", + "primaryKey": false, + "notNull": false + }, + "SRCE_TX_NO": { + "name": "SRCE_TX_NO", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "DCHAG_CERT_NO": { + "name": "DCHAG_CERT_NO", + "type": "varchar(15)", + "primaryKey": false, + "notNull": false + }, + "DCHAG_RAT": { + "name": "DCHAG_RAT", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "DCHAG_ST_DT": { + "name": "DCHAG_ST_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "DCHAG_ED_DT": { + "name": "DCHAG_ED_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "DCHAG_CAUS": { + "name": "DCHAG_CAUS", + "type": "varchar(200)", + "primaryKey": false, + "notNull": false + }, + "IF_DT": { + "name": "IF_DT", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "IF_TM": { + "name": "IF_TM", + "type": "varchar(6)", + "primaryKey": false, + "notNull": false + }, + "IF_STAT": { + "name": "IF_STAT", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "IF_MSG": { + "name": "IF_MSG", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "nonsap.plftb_estm_proj_mast": { + "name": "plftb_estm_proj_mast", + "schema": "nonsap", + "columns": { + "ESTM_PROJ_NO": { + "name": "ESTM_PROJ_NO", + "type": "varchar(24)", + "primaryKey": false, + "notNull": true + }, + "AGND_NO": { + "name": "AGND_NO", + "type": "varchar(8)", + "primaryKey": false, + "notNull": false + }, + "ESTM_PROJ_NM": { + "name": "ESTM_PROJ_NM", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "BIZ_CLS": { + "name": "BIZ_CLS", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "REV_NO": { + "name": "REV_NO", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "ESTM_TYPE": { + "name": "ESTM_TYPE", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "OWNER_CD": { + "name": "OWNER_CD", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "SERS_CNT": { + "name": "SERS_CNT", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "SKND_CD": { + "name": "SKND_CD", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "SHTYPE_CD": { + "name": "SHTYPE_CD", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "SHTYPE_SIZE": { + "name": "SHTYPE_SIZE", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "SHTYPE_UOM": { + "name": "SHTYPE_UOM", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "CHRTR_CD": { + "name": "CHRTR_CD", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "NATN_CD": { + "name": "NATN_CD", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "CLS_1": { + "name": "CLS_1", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "CLS_2": { + "name": "CLS_2", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "CLS_3": { + "name": "CLS_3", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "DATA_CRTE_GB": { + "name": "DATA_CRTE_GB", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "FS_INPR_ID": { + "name": "FS_INPR_ID", + "type": "varchar(13)", + "primaryKey": false, + "notNull": false + }, + "FS_INP_DTM": { + "name": "FS_INP_DTM", + "type": "varchar(14)", + "primaryKey": false, + "notNull": false + }, + "FIN_CHGR_ID": { + "name": "FIN_CHGR_ID", + "type": "varchar(13)", + "primaryKey": false, + "notNull": false + }, + "FIN_CHG_DTM": { + "name": "FIN_CHG_DTM", + "type": "varchar(14)", + "primaryKey": false, + "notNull": false + }, + "VSL_VAG_1": { + "name": "VSL_VAG_1", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "VSL_VAG_2": { + "name": "VSL_VAG_2", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "VSL_VAG_3": { + "name": "VSL_VAG_3", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "VSL_VAG_4": { + "name": "VSL_VAG_4", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "ESTM_AOM_APP_ID": { + "name": "ESTM_AOM_APP_ID", + "type": "varchar(32)", + "primaryKey": false, + "notNull": false + }, + "ESTM_AOM_STAT": { + "name": "ESTM_AOM_STAT", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + }, + "ESTM_AOM_STAT_CHGR_ID": { + "name": "ESTM_AOM_STAT_CHGR_ID", + "type": "varchar(13)", + "primaryKey": false, + "notNull": false + }, + "ESTM_AOM_STAT_CHG_DTM": { + "name": "ESTM_AOM_STAT_CHG_DTM", + "type": "varchar(14)", + "primaryKey": false, + "notNull": false + }, + "IF_TRGT_YN": { + "name": "IF_TRGT_YN", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "plftb_estm_proj_mast_ESTM_PROJ_NO_pk": { + "name": "plftb_estm_proj_mast_ESTM_PROJ_NO_pk", + "columns": [ + "ESTM_PROJ_NO" + ] + } + }, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "nonsap.nonsap_user": { + "name": "nonsap_user", + "schema": "nonsap", + "columns": { + "USR_ID": { + "name": "USR_ID", + "type": "varchar(255)", + "primaryKey": true, + "notNull": true + }, + "USR_NM": { + "name": "USR_NM", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "USR_ENM": { + "name": "USR_ENM", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "EMPNO": { + "name": "EMPNO", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "CO_CD": { + "name": "CO_CD", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "CO_NM": { + "name": "CO_NM", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "DEPTCD": { + "name": "DEPTCD", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "DEPTNM": { + "name": "DEPTNM", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "MAST_DEPTCD": { + "name": "MAST_DEPTCD", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "MAST_DEPTNM": { + "name": "MAST_DEPTNM", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "VNDRCD": { + "name": "VNDRCD", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "VNDRNM": { + "name": "VNDRNM", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "REGL_ORORD_GB": { + "name": "REGL_ORORD_GB", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "JG_CD": { + "name": "JG_CD", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "JG_NM": { + "name": "JG_NM", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "JK_CD": { + "name": "JK_CD", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "JK_NM": { + "name": "JK_NM", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "EMAIL_ADR": { + "name": "EMAIL_ADR", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "TELNO": { + "name": "TELNO", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "HP_NO": { + "name": "HP_NO", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ADR": { + "name": "ADR", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "MYSNG_ID": { + "name": "MYSNG_ID", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "MYSNG_USR_ID": { + "name": "MYSNG_USR_ID", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "MYSNG_USE_YN": { + "name": "MYSNG_USE_YN", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "CHRG_BIZ_NM": { + "name": "CHRG_BIZ_NM", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "FIN_PWD_CHG_DTM": { + "name": "FIN_PWD_CHG_DTM", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "FIN_LGN_DTM": { + "name": "FIN_LGN_DTM", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "FIN_LOGOUT_DTM": { + "name": "FIN_LOGOUT_DTM", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "FIN_LGN_FAIL_TMS": { + "name": "FIN_LGN_FAIL_TMS", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "FIN_USEIP": { + "name": "FIN_USEIP", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "UNLOCK_DTM": { + "name": "UNLOCK_DTM", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "LOCK_YN": { + "name": "LOCK_YN", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "AGR_YN": { + "name": "AGR_YN", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "DEL_YN": { + "name": "DEL_YN", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "BIZLOC_GB_CD": { + "name": "BIZLOC_GB_CD", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "BIZLOC_GB_NM": { + "name": "BIZLOC_GB_NM", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "GRD_NM": { + "name": "GRD_NM", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "CH_DEPTCD": { + "name": "CH_DEPTCD", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "CH_DEPTNM": { + "name": "CH_DEPTNM", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ORG_OTHER_NAME": { + "name": "ORG_OTHER_NAME", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "GRADE_OTHER_NAME": { + "name": "GRADE_OTHER_NAME", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "FAX_NO": { + "name": "FAX_NO", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "FS_INPR_ID": { + "name": "FS_INPR_ID", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "FS_INP_DTM": { + "name": "FS_INP_DTM", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "FIN_CHGR_ID": { + "name": "FIN_CHGR_ID", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "FIN_CHG_DTM": { + "name": "FIN_CHG_DTM", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "LOFF_GB": { + "name": "LOFF_GB", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "DEL_DTM": { + "name": "DEL_DTM", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "ecc.PR_INFORMATION_T_BID_HEADER": { + "name": "PR_INFORMATION_T_BID_HEADER", + "schema": "ecc", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "PR_INFORMATION_T_BID_HEADER_id_seq", + "schema": "ecc", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "ANFNR": { + "name": "ANFNR", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "EKGRP": { + "name": "EKGRP", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "EKORG": { + "name": "EKORG", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "WERKS": { + "name": "WERKS", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "ZBSART": { + "name": "ZBSART", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "ZRFQ_TRS_DT": { + "name": "ZRFQ_TRS_DT", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "ZRFQ_TRS_TM": { + "name": "ZRFQ_TRS_TM", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "PR_INFORMATION_T_BID_HEADER_ANFNR_unique": { + "name": "PR_INFORMATION_T_BID_HEADER_ANFNR_unique", + "nullsNotDistinct": false, + "columns": [ + "ANFNR" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "ecc.PR_INFORMATION_T_BID_ITEM": { + "name": "PR_INFORMATION_T_BID_ITEM", + "schema": "ecc", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "PR_INFORMATION_T_BID_ITEM_id_seq", + "schema": "ecc", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "ANFNR": { + "name": "ANFNR", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "ANFPS": { + "name": "ANFPS", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "AUFNR": { + "name": "AUFNR", + "type": "varchar(12)", + "primaryKey": false, + "notNull": false + }, + "BANFN": { + "name": "BANFN", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "BANPO": { + "name": "BANPO", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "BPRME": { + "name": "BPRME", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "BRGEW": { + "name": "BRGEW", + "type": "numeric(15, 3)", + "primaryKey": false, + "notNull": false + }, + "DISMM": { + "name": "DISMM", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "EBELP": { + "name": "EBELP", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "GEWEI": { + "name": "GEWEI", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "KNTTP": { + "name": "KNTTP", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "KOSTL": { + "name": "KOSTL", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "LFDAT": { + "name": "LFDAT", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "MATKL": { + "name": "MATKL", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "MATNR": { + "name": "MATNR", + "type": "varchar(18)", + "primaryKey": false, + "notNull": false + }, + "MEINS": { + "name": "MEINS", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "MENGE": { + "name": "MENGE", + "type": "numeric(15, 3)", + "primaryKey": false, + "notNull": false + }, + "PEINH": { + "name": "PEINH", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "PERNR": { + "name": "PERNR", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "POSID": { + "name": "POSID", + "type": "varchar(24)", + "primaryKey": false, + "notNull": false + }, + "PREIS": { + "name": "PREIS", + "type": "numeric(15, 2)", + "primaryKey": false, + "notNull": false + }, + "PSPID": { + "name": "PSPID", + "type": "varchar(24)", + "primaryKey": false, + "notNull": false + }, + "SAKTO": { + "name": "SAKTO", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "TXZ01": { + "name": "TXZ01", + "type": "varchar(40)", + "primaryKey": false, + "notNull": false + }, + "WAERS1": { + "name": "WAERS1", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "WAERS2": { + "name": "WAERS2", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "ZCON_NO_PO": { + "name": "ZCON_NO_PO", + "type": "varchar(15)", + "primaryKey": false, + "notNull": false + }, + "ZREQ_FN": { + "name": "ZREQ_FN", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "ZREQ_PO": { + "name": "ZREQ_PO", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "ZRSLT_AMT": { + "name": "ZRSLT_AMT", + "type": "numeric(17, 2)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "PR_INFORMATION_T_BID_ITEM_ANFNR_PR_INFORMATION_T_BID_HEADER_ANFNR_fk": { + "name": "PR_INFORMATION_T_BID_ITEM_ANFNR_PR_INFORMATION_T_BID_HEADER_ANFNR_fk", + "tableFrom": "PR_INFORMATION_T_BID_ITEM", + "tableTo": "PR_INFORMATION_T_BID_HEADER", + "schemaTo": "ecc", + "columnsFrom": [ + "ANFNR" + ], + "columnsTo": [ + "ANFNR" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "ecc.T_CHANGE_PR": { + "name": "T_CHANGE_PR", + "schema": "ecc", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "T_CHANGE_PR_id_seq", + "schema": "ecc", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "BANFN": { + "name": "BANFN", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "BANPO": { + "name": "BANPO", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "ZCHG_NO": { + "name": "ZCHG_NO", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "ZACC_IND": { + "name": "ZACC_IND", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "PCR_REQ": { + "name": "PCR_REQ", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "PCR_REQ_SEQ": { + "name": "PCR_REQ_SEQ", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "ecc.ZMM_DT": { + "name": "ZMM_DT", + "schema": "ecc", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "ZMM_DT_id_seq", + "schema": "ecc", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "EBELN": { + "name": "EBELN", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "EBELP": { + "name": "EBELP", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "LOEKZ": { + "name": "LOEKZ", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "AEDAT": { + "name": "AEDAT", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "MAKTX": { + "name": "MAKTX", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "MATKL": { + "name": "MATKL", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "MATNR": { + "name": "MATNR", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "WERKS": { + "name": "WERKS", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "LGORT": { + "name": "LGORT", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "BEDNR": { + "name": "BEDNR", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "MENGE": { + "name": "MENGE", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "NETPR": { + "name": "NETPR", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "PEINH": { + "name": "PEINH", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "NETWR": { + "name": "NETWR", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "BRTWR": { + "name": "BRTWR", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "WEBAZ": { + "name": "WEBAZ", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "MWSKZ": { + "name": "MWSKZ", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "INSMK": { + "name": "INSMK", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "BWTAR": { + "name": "BWTAR", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "BWTTY": { + "name": "BWTTY", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ELIKZ": { + "name": "ELIKZ", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "EREKZ": { + "name": "EREKZ", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "TWRKZ": { + "name": "TWRKZ", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "REPOS": { + "name": "REPOS", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "WEBRE": { + "name": "WEBRE", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "KNTTP": { + "name": "KNTTP", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "NTGEW": { + "name": "NTGEW", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "GEWEI": { + "name": "GEWEI", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "BRGEW": { + "name": "BRGEW", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "VOLUM": { + "name": "VOLUM", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "VOLEH": { + "name": "VOLEH", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "BANFN": { + "name": "BANFN", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "BNFPO": { + "name": "BNFPO", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "UPTYP": { + "name": "UPTYP", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "UPVOR": { + "name": "UPVOR", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZPO_DLV_DT": { + "name": "ZPO_DLV_DT", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZSHIP_DT": { + "name": "ZSHIP_DT", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZDST_CD": { + "name": "ZDST_CD", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZRCV_DT": { + "name": "ZRCV_DT", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZCON_NO": { + "name": "ZCON_NO", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZCON_IND": { + "name": "ZCON_IND", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZCHAR_CD": { + "name": "ZCHAR_CD", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZMAT_AREA": { + "name": "ZMAT_AREA", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZSZ": { + "name": "ZSZ", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZAF_ECAL_AMT": { + "name": "ZAF_ECAL_AMT", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZPLN_ST_DT": { + "name": "ZPLN_ST_DT", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZPLN_ED_DT": { + "name": "ZPLN_ED_DT", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "PSPID": { + "name": "PSPID", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZUSD_BGT": { + "name": "ZUSD_BGT", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZKRW_BGT": { + "name": "ZKRW_BGT", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZDLV_CNTLR": { + "name": "ZDLV_CNTLR", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ANFNR": { + "name": "ANFNR", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ANFPS": { + "name": "ANFPS", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "KONNR": { + "name": "KONNR", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "KTPNR": { + "name": "KTPNR", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZCR_NO": { + "name": "ZCR_NO", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZCR_AMT": { + "name": "ZCR_AMT", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZRT_CUR": { + "name": "ZRT_CUR", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZRT_AMT": { + "name": "ZRT_AMT", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZPO_UNIT": { + "name": "ZPO_UNIT", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZREF_NETPR": { + "name": "ZREF_NETPR", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZNETPR": { + "name": "ZNETPR", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "BPRME": { + "name": "BPRME", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZDISPLN": { + "name": "ZDISPLN", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZORCT_CNRT_KRW": { + "name": "ZORCT_CNRT_KRW", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZORCT_CNRT_USD": { + "name": "ZORCT_CNRT_USD", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZETC_CNRT_KRW": { + "name": "ZETC_CNRT_KRW", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZETC_CNRT_USD": { + "name": "ZETC_CNRT_USD", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZEXTRA_AMT": { + "name": "ZEXTRA_AMT", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZCRDT_AMT": { + "name": "ZCRDT_AMT", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZART": { + "name": "ZART", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ART": { + "name": "ART", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZPDT_BSE_UPR": { + "name": "ZPDT_BSE_UPR", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZPDT_EXTRA_UPR": { + "name": "ZPDT_EXTRA_UPR", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZPDT_EXDS_AMT": { + "name": "ZPDT_EXDS_AMT", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZTRNS_UPR": { + "name": "ZTRNS_UPR", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZFST_DST_CD": { + "name": "ZFST_DST_CD", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZCHG_CHK": { + "name": "ZCHG_CHK", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZITP_CHK": { + "name": "ZITP_CHK", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZPO_RMK": { + "name": "ZPO_RMK", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZPO_LOT_NO": { + "name": "ZPO_LOT_NO", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZCLM_NO": { + "name": "ZCLM_NO", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZWH_CNTLR": { + "name": "ZWH_CNTLR", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "LFDAT": { + "name": "LFDAT", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ETC_2": { + "name": "ETC_2", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ETC_3": { + "name": "ETC_3", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ETC_4": { + "name": "ETC_4", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ETC_5": { + "name": "ETC_5", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ETC_6": { + "name": "ETC_6", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ETC_7": { + "name": "ETC_7", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ETC_8": { + "name": "ETC_8", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ETC_9": { + "name": "ETC_9", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ETC_10": { + "name": "ETC_10", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "ZMM_DT_EBELN_ZMM_HD_EBELN_fk": { + "name": "ZMM_DT_EBELN_ZMM_HD_EBELN_fk", + "tableFrom": "ZMM_DT", + "tableTo": "ZMM_HD", + "schemaTo": "ecc", + "columnsFrom": [ + "EBELN" + ], + "columnsTo": [ + "EBELN" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "ecc.ZMM_HD": { + "name": "ZMM_HD", + "schema": "ecc", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "ZMM_HD_id_seq", + "schema": "ecc", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "EBELN": { + "name": "EBELN", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "BUKRS": { + "name": "BUKRS", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "BSTYP": { + "name": "BSTYP", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "BSART": { + "name": "BSART", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "LOEKZ": { + "name": "LOEKZ", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "AEDAT": { + "name": "AEDAT", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ERNAM": { + "name": "ERNAM", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "LIFNR": { + "name": "LIFNR", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZTERM": { + "name": "ZTERM", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "EKORG": { + "name": "EKORG", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "EKGRP": { + "name": "EKGRP", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "WKURS": { + "name": "WKURS", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "BEDAT": { + "name": "BEDAT", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "INCO1": { + "name": "INCO1", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZSHIPMT_PLC_CD": { + "name": "ZSHIPMT_PLC_CD", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZUNLD_PLC_CD": { + "name": "ZUNLD_PLC_CD", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZIND_CD": { + "name": "ZIND_CD", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZDAMT_DD_SUBRT": { + "name": "ZDAMT_DD_SUBRT", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZMAX_SUBRT": { + "name": "ZMAX_SUBRT", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZCNRT_GRNT_CD": { + "name": "ZCNRT_GRNT_CD", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZDFCT_GRNT_CD": { + "name": "ZDFCT_GRNT_CD", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZGRNT_PRD_CD": { + "name": "ZGRNT_PRD_CD", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZPAMT_YN": { + "name": "ZPAMT_YN", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZBGT_AMT": { + "name": "ZBGT_AMT", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZBGT_CURR": { + "name": "ZBGT_CURR", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZPO_AMT": { + "name": "ZPO_AMT", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZPO_AMT_KRW": { + "name": "ZPO_AMT_KRW", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZPO_CURR": { + "name": "ZPO_CURR", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZCHG_PO_DT": { + "name": "ZCHG_PO_DT", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZPO_CNFM_STAT": { + "name": "ZPO_CNFM_STAT", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZOWN_AGR_IND_YN": { + "name": "ZOWN_AGR_IND_YN", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZELC_AGR_DT": { + "name": "ZELC_AGR_DT", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZELC_AGR_TM": { + "name": "ZELC_AGR_TM", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZELC_CNRT_ND_YN": { + "name": "ZELC_CNRT_ND_YN", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZPO_DT": { + "name": "ZPO_DT", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZPLN_INO_GB": { + "name": "ZPLN_INO_GB", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZECAL_BSE": { + "name": "ZECAL_BSE", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZWGT_ECAL_GB": { + "name": "ZWGT_ECAL_GB", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZPO_TRANS_DT": { + "name": "ZPO_TRANS_DT", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZPO_TRANS_CANC": { + "name": "ZPO_TRANS_CANC", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZVST_TMS": { + "name": "ZVST_TMS", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZSVC_WK_PRD": { + "name": "ZSVC_WK_PRD", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZDT_EXCS_AMT": { + "name": "ZDT_EXCS_AMT", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZDT_EXCS_AMT2": { + "name": "ZDT_EXCS_AMT2", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZDT_EXCS_AMT3": { + "name": "ZDT_EXCS_AMT3", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZSVC_CNRT_CUR": { + "name": "ZSVC_CNRT_CUR", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZPAY_GB": { + "name": "ZPAY_GB", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZFULL_COMM": { + "name": "ZFULL_COMM", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "PSPID": { + "name": "PSPID", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZCON_NO": { + "name": "ZCON_NO", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZTITLE": { + "name": "ZTITLE", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZPO_VER": { + "name": "ZPO_VER", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ITEM_CATEGORY": { + "name": "ITEM_CATEGORY", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "LTEXT": { + "name": "LTEXT", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ITEM_NO": { + "name": "ITEM_NO", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "USECD": { + "name": "USECD", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ETC_2": { + "name": "ETC_2", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ETC_3": { + "name": "ETC_3", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ETC_4": { + "name": "ETC_4", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ETC_5": { + "name": "ETC_5", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ETC_6": { + "name": "ETC_6", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ETC_7": { + "name": "ETC_7", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ETC_8": { + "name": "ETC_8", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ETC_9": { + "name": "ETC_9", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ETC_10": { + "name": "ETC_10", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZDLV_PRICE_T": { + "name": "ZDLV_PRICE_T", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZWEBELN": { + "name": "ZWEBELN", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZVER_NO": { + "name": "ZVER_NO", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "ZMM_HD_EBELN_unique": { + "name": "ZMM_HD_EBELN_unique", + "nullsNotDistinct": false, + "columns": [ + "EBELN" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "ecc.ZMM_KN": { + "name": "ZMM_KN", + "schema": "ecc", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "ZMM_KN_id_seq", + "schema": "ecc", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "EBELN": { + "name": "EBELN", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "EBELP": { + "name": "EBELP", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "ZEKKN": { + "name": "ZEKKN", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "SAKTO": { + "name": "SAKTO", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "GSBER": { + "name": "GSBER", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "KOSTL": { + "name": "KOSTL", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "VBELN": { + "name": "VBELN", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "VBELP": { + "name": "VBELP", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ANLN1": { + "name": "ANLN1", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ANLN2": { + "name": "ANLN2", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "AUFNR": { + "name": "AUFNR", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "WEMPF": { + "name": "WEMPF", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ABLAD": { + "name": "ABLAD", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "KOKRS": { + "name": "KOKRS", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "PRCTR": { + "name": "PRCTR", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "NPLNR": { + "name": "NPLNR", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "AUFPL": { + "name": "AUFPL", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "APLZL": { + "name": "APLZL", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "FIPOS": { + "name": "FIPOS", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "FISTL": { + "name": "FISTL", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "GEBER": { + "name": "GEBER", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "VORNR": { + "name": "VORNR", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "POSID": { + "name": "POSID", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "ZMM_KN_EBELN_ZMM_HD_EBELN_fk": { + "name": "ZMM_KN_EBELN_ZMM_HD_EBELN_fk", + "tableFrom": "ZMM_KN", + "tableTo": "ZMM_HD", + "schemaTo": "ecc", + "columnsFrom": [ + "EBELN" + ], + "columnsTo": [ + "EBELN" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "ecc.ZMM_NOTE": { + "name": "ZMM_NOTE", + "schema": "ecc", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "ZMM_NOTE_id_seq", + "schema": "ecc", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "EBELN": { + "name": "EBELN", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "ZNOTE_SER": { + "name": "ZNOTE_SER", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "ZNOTE_TXT": { + "name": "ZNOTE_TXT", + "type": "varchar(10000)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "ZMM_NOTE_EBELN_ZMM_HD_EBELN_fk": { + "name": "ZMM_NOTE_EBELN_ZMM_HD_EBELN_fk", + "tableFrom": "ZMM_NOTE", + "tableTo": "ZMM_HD", + "schemaTo": "ecc", + "columnsFrom": [ + "EBELN" + ], + "columnsTo": [ + "EBELN" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "ecc.ZMM_NOTE2": { + "name": "ZMM_NOTE2", + "schema": "ecc", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "ZMM_NOTE2_id_seq", + "schema": "ecc", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "EBELN": { + "name": "EBELN", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "ZDLV_PRICE_SER": { + "name": "ZDLV_PRICE_SER", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "ZDLV_PRICE_NOTE": { + "name": "ZDLV_PRICE_NOTE", + "type": "varchar(10000)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "ZMM_NOTE2_EBELN_ZMM_HD_EBELN_fk": { + "name": "ZMM_NOTE2_EBELN_ZMM_HD_EBELN_fk", + "tableFrom": "ZMM_NOTE2", + "tableTo": "ZMM_HD", + "schemaTo": "ecc", + "columnsFrom": [ + "EBELN" + ], + "columnsTo": [ + "EBELN" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "ecc.ZMM_PAY": { + "name": "ZMM_PAY", + "schema": "ecc", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "ZMM_PAY_id_seq", + "schema": "ecc", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "EBELN": { + "name": "EBELN", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "ZPAYSEQ": { + "name": "ZPAYSEQ", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "ZADVTYP": { + "name": "ZADVTYP", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZDWPRT": { + "name": "ZDWPRT", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZDWPAMT": { + "name": "ZDWPAMT", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZDWPDAT": { + "name": "ZDWPDAT", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "ZMM_PAY_EBELN_ZMM_HD_EBELN_fk": { + "name": "ZMM_PAY_EBELN_ZMM_HD_EBELN_fk", + "tableFrom": "ZMM_PAY", + "tableTo": "ZMM_HD", + "schemaTo": "ecc", + "columnsFrom": [ + "EBELN" + ], + "columnsTo": [ + "EBELN" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "ecc.ZMM_PCR": { + "name": "ZMM_PCR", + "schema": "ecc", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "byDefault", + "name": "ZMM_PCR_id_seq", + "schema": "ecc", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "PCR_REQ": { + "name": "PCR_REQ", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "PCR_REQ_SEQ": { + "name": "PCR_REQ_SEQ", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "PCR_REQ_DATE": { + "name": "PCR_REQ_DATE", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "EBELN": { + "name": "EBELN", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "EBELP": { + "name": "EBELP", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "PCR_TYPE": { + "name": "PCR_TYPE", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "PSPID": { + "name": "PSPID", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "BANFN": { + "name": "BANFN", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "BNFPO": { + "name": "BNFPO", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "MATNR": { + "name": "MATNR", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "MAKTX": { + "name": "MAKTX", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZZSPEC": { + "name": "ZZSPEC", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZSPEC_NUM": { + "name": "ZSPEC_NUM", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "QTY_B": { + "name": "QTY_B", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "QTY_A": { + "name": "QTY_A", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "MEINS": { + "name": "MEINS", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "T_WEIGHT_B": { + "name": "T_WEIGHT_B", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "T_WEIGHT_A": { + "name": "T_WEIGHT_A", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "MEINS_W": { + "name": "MEINS_W", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "S_WEIGHT_B": { + "name": "S_WEIGHT_B", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "S_WEIGHT_A": { + "name": "S_WEIGHT_A", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "C_WEIGHT_B": { + "name": "C_WEIGHT_B", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "C_WEIGHT_A": { + "name": "C_WEIGHT_A", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZACC_DT": { + "name": "ZACC_DT", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ERDAT": { + "name": "ERDAT", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "DEPTCD": { + "name": "DEPTCD", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "DEPTNM": { + "name": "DEPTNM", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "EMPID": { + "name": "EMPID", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "NAME": { + "name": "NAME", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "LIFNR": { + "name": "LIFNR", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "NAME1": { + "name": "NAME1", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZPROC_IND": { + "name": "ZPROC_IND", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "LFDAT": { + "name": "LFDAT", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "WAERS": { + "name": "WAERS", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "NETPR": { + "name": "NETPR", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "PEINH": { + "name": "PEINH", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "NETWR": { + "name": "NETWR", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "POSID": { + "name": "POSID", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "EKGRP": { + "name": "EKGRP", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "EKNAM": { + "name": "EKNAM", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZCHG_NO": { + "name": "ZCHG_NO", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "DOKNR": { + "name": "DOKNR", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "DOKAR": { + "name": "DOKAR", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "DOKTL": { + "name": "DOKTL", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "DOKVR": { + "name": "DOKVR", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "ZAEDAT": { + "name": "ZAEDAT", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "WERKS": { + "name": "WERKS", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "REQUEST_CD": { + "name": "REQUEST_CD", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "REQUEST_RSN": { + "name": "REQUEST_RSN", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "ZMM_PCR_PCR_REQ_unique": { + "name": "ZMM_PCR_PCR_REQ_unique", + "nullsNotDistinct": false, + "columns": [ + "PCR_REQ" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "knox.employee": { + "name": "employee", + "schema": "knox", + "columns": { + "ep_id": { + "name": "ep_id", + "type": "varchar(25)", + "primaryKey": true, + "notNull": true + }, + "employee_number": { + "name": "employee_number", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "user_id": { + "name": "user_id", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "full_name": { + "name": "full_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "given_name": { + "name": "given_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "sir_name": { + "name": "sir_name", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "company_code": { + "name": "company_code", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "company_name": { + "name": "company_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "department_code": { + "name": "department_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "department_name": { + "name": "department_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "title_code": { + "name": "title_code", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "title_name": { + "name": "title_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "email_address": { + "name": "email_address", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "mobile": { + "name": "mobile", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "employee_status": { + "name": "employee_status", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "employee_type": { + "name": "employee_type", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "account_status": { + "name": "account_status", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "security_level": { + "name": "security_level", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "preferred_language": { + "name": "preferred_language", + "type": "varchar(5)", + "primaryKey": false, + "notNull": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "raw": { + "name": "raw", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "en_company_name": { + "name": "en_company_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "en_department_name": { + "name": "en_department_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "en_discription": { + "name": "en_discription", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "en_full_name": { + "name": "en_full_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "en_given_name": { + "name": "en_given_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "en_grade_name": { + "name": "en_grade_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "en_sir_name": { + "name": "en_sir_name", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "en_title_name": { + "name": "en_title_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "grade_name": { + "name": "grade_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "grade_title_indi_code": { + "name": "grade_title_indi_code", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "job_name": { + "name": "job_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "real_name_yn": { + "name": "real_name_yn", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "server_location": { + "name": "server_location", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "title_sort_order": { + "name": "title_sort_order", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "knox_employee_company_department_idx": { + "name": "knox_employee_company_department_idx", + "columns": [ + { + "expression": "company_code", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "department_code", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "knox_employee_number_idx": { + "name": "knox_employee_number_idx", + "columns": [ + { + "expression": "employee_number", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "knox_employee_user_id_idx": { + "name": "knox_employee_user_id_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "knox_employee_email_idx": { + "name": "knox_employee_email_idx", + "columns": [ + { + "expression": "email_address", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "knox.organization": { + "name": "organization", + "schema": "knox", + "columns": { + "company_code": { + "name": "company_code", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "department_code": { + "name": "department_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "company_name": { + "name": "company_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "department_level": { + "name": "department_level", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "department_name": { + "name": "department_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "department_order": { + "name": "department_order", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "en_company_name": { + "name": "en_company_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "en_department_name": { + "name": "en_department_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "en_manager_title": { + "name": "en_manager_title", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "en_sub_org_code": { + "name": "en_sub_org_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "in_department_code": { + "name": "in_department_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "low_department_yn": { + "name": "low_department_yn", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "manager_id": { + "name": "manager_id", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "manager_name": { + "name": "manager_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "manager_title": { + "name": "manager_title", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "preferred_language": { + "name": "preferred_language", + "type": "varchar(5)", + "primaryKey": false, + "notNull": false + }, + "sub_org_code": { + "name": "sub_org_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "sub_org_name": { + "name": "sub_org_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "upr_department_code": { + "name": "upr_department_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "en_upr_department_name": { + "name": "en_upr_department_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "upr_department_name": { + "name": "upr_department_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "hidden_department_yn": { + "name": "hidden_department_yn", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "corp_code": { + "name": "corp_code", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "corp_name": { + "name": "corp_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "en_corp_name": { + "name": "en_corp_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "raw": { + "name": "raw", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "knox_org_company_idx": { + "name": "knox_org_company_idx", + "columns": [ + { + "expression": "company_code", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": { + "organization_company_code_department_code_pk": { + "name": "organization_company_code_department_code_pk", + "columns": [ + "company_code", + "department_code" + ] + } + }, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "knox.title": { + "name": "title", + "schema": "knox", + "columns": { + "company_code": { + "name": "company_code", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true + }, + "title_code": { + "name": "title_code", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true + }, + "title_name": { + "name": "title_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "en_title_name": { + "name": "en_title_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "sort_order": { + "name": "sort_order", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "raw": { + "name": "raw", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "knox_title_company_idx": { + "name": "knox_title_company_idx", + "columns": [ + { + "expression": "company_code", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": { + "title_company_code_title_code_pk": { + "name": "title_company_code_title_code_pk", + "columns": [ + "company_code", + "title_code" + ] + } + }, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "knox.approval_lines": { + "name": "approval_lines", + "schema": "knox", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "category": { + "name": "category", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "aplns": { + "name": "aplns", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "createdBy": { + "name": "createdBy", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "createdAt": { + "name": "createdAt", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updatedAt": { + "name": "updatedAt", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "approval_lines_createdBy_users_id_fk": { + "name": "approval_lines_createdBy_users_id_fk", + "tableFrom": "approval_lines", + "tableTo": "users", + "columnsFrom": [ + "createdBy" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "knox.approval_logs": { + "name": "approval_logs", + "schema": "knox", + "columns": { + "ap_inf_id": { + "name": "ap_inf_id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "ep_id": { + "name": "ep_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "email_address": { + "name": "email_address", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "subject": { + "name": "subject", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "aplns": { + "name": "aplns", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "is_deleted": { + "name": "is_deleted", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "knox.approval_template_history": { + "name": "approval_template_history", + "schema": "knox", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "templateId": { + "name": "templateId", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "version": { + "name": "version", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "subject": { + "name": "subject", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "changeDescription": { + "name": "changeDescription", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "changedBy": { + "name": "changedBy", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "createdAt": { + "name": "createdAt", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "approval_template_history_templateId_approval_templates_id_fk": { + "name": "approval_template_history_templateId_approval_templates_id_fk", + "tableFrom": "approval_template_history", + "tableTo": "approval_templates", + "schemaTo": "knox", + "columnsFrom": [ + "templateId" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "approval_template_history_changedBy_users_id_fk": { + "name": "approval_template_history_changedBy_users_id_fk", + "tableFrom": "approval_template_history", + "tableTo": "users", + "columnsFrom": [ + "changedBy" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "knox.approval_template_variables": { + "name": "approval_template_variables", + "schema": "knox", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "approvalTemplateId": { + "name": "approvalTemplateId", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "variableName": { + "name": "variableName", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "variableType": { + "name": "variableType", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "defaultValue": { + "name": "defaultValue", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "createdBy": { + "name": "createdBy", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "createdAt": { + "name": "createdAt", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updatedAt": { + "name": "updatedAt", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "approval_template_variables_approvalTemplateId_approval_templates_id_fk": { + "name": "approval_template_variables_approvalTemplateId_approval_templates_id_fk", + "tableFrom": "approval_template_variables", + "tableTo": "approval_templates", + "schemaTo": "knox", + "columnsFrom": [ + "approvalTemplateId" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "approval_template_variables_createdBy_users_id_fk": { + "name": "approval_template_variables_createdBy_users_id_fk", + "tableFrom": "approval_template_variables", + "tableTo": "users", + "columnsFrom": [ + "createdBy" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "knox.approval_templates": { + "name": "approval_templates", + "schema": "knox", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "subject": { + "name": "subject", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "category": { + "name": "category", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "approvalLineId": { + "name": "approvalLineId", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "createdBy": { + "name": "createdBy", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "createdAt": { + "name": "createdAt", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updatedAt": { + "name": "updatedAt", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "approval_templates_approvalLineId_approval_lines_id_fk": { + "name": "approval_templates_approvalLineId_approval_lines_id_fk", + "tableFrom": "approval_templates", + "tableTo": "approval_lines", + "schemaTo": "knox", + "columnsFrom": [ + "approvalLineId" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "approval_templates_createdBy_users_id_fk": { + "name": "approval_templates_createdBy_users_id_fk", + "tableFrom": "approval_templates", + "tableTo": "users", + "columnsFrom": [ + "createdBy" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "risks.risk_events": { + "name": "risk_events", + "schema": "risks", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "provider": { + "name": "provider", + "type": "varchar(128)", + "primaryKey": false, + "notNull": true + }, + "event_type": { + "name": "event_type", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "event_status": { + "name": "event_status", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "manager_id": { + "name": "manager_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "admin_comment": { + "name": "admin_comment", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "occurred_at": { + "name": "occurred_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by": { + "name": "created_by", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "updated_by": { + "name": "updated_by", + "type": "integer", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": { + "risk_events_vendor_id_vendors_id_fk": { + "name": "risk_events_vendor_id_vendors_id_fk", + "tableFrom": "risk_events", + "tableTo": "vendors", + "columnsFrom": [ + "vendor_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "risk_events_manager_id_users_id_fk": { + "name": "risk_events_manager_id_users_id_fk", + "tableFrom": "risk_events", + "tableTo": "users", + "columnsFrom": [ + "manager_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "risk_events_created_by_users_id_fk": { + "name": "risk_events_created_by_users_id_fk", + "tableFrom": "risk_events", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "risk_events_updated_by_users_id_fk": { + "name": "risk_events_updated_by_users_id_fk", + "tableFrom": "risk_events", + "tableTo": "users", + "columnsFrom": [ + "updated_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + } + }, + "enums": { + "public.user_domain": { + "name": "user_domain", + "schema": "public", + "values": [ + "pending", + "evcp", + "procurement", + "sales", + "engineering", + "partners" + ] + }, + "public.score_type": { + "name": "score_type", + "schema": "public", + "values": [ + "fixed", + "variable" + ] + }, + "public.qna_category": { + "name": "qna_category", + "schema": "public", + "values": [ + "engineering", + "procurement", + "technical_sales" + ] + }, + "public.gtc_type": { + "name": "gtc_type", + "schema": "public", + "values": [ + "standard", + "project" + ] + }, + "public.review_status": { + "name": "review_status", + "schema": "public", + "values": [ + "draft", + "pending", + "reviewing", + "approved", + "rejected", + "revised" + ] + }, + "public.consent_action": { + "name": "consent_action", + "schema": "public", + "values": [ + "consent", + "revoke", + "update" + ] + }, + "public.consent_type": { + "name": "consent_type", + "schema": "public", + "values": [ + "privacy_policy", + "terms_of_service", + "marketing", + "optional" + ] + }, + "public.policy_type": { + "name": "policy_type", + "schema": "public", + "values": [ + "privacy_policy", + "terms_of_service" + ] + }, + "public.award_count": { + "name": "award_count", + "schema": "public", + "values": [ + "single", + "multiple" + ] + }, + "public.bidding_status": { + "name": "bidding_status", + "schema": "public", + "values": [ + "bidding_generated", + "request_for_quotation", + "received_quotation", + "set_target_price", + "bidding_opened", + "bidding_closed", + "evaluation_of_bidding", + "bidding_disposal", + "vendor_selected" + ] + }, + "public.bidding_type": { + "name": "bidding_type", + "schema": "public", + "values": [ + "equipment", + "construction", + "service", + "lease", + "steel_stock", + "piping", + "transport", + "waste", + "sale" + ] + }, + "public.contract_type": { + "name": "contract_type", + "schema": "public", + "values": [ + "unit_price", + "general", + "sale" + ] + }, + "public.document_type": { + "name": "document_type", + "schema": "public", + "values": [ + "notice", + "specification", + "specification_meeting", + "contract_draft", + "company_proposal", + "financial_doc", + "technical_doc", + "certificate", + "pr_document", + "spec_document", + "evaluation_doc", + "bid_attachment", + "other" + ] + }, + "public.invitation_status": { + "name": "invitation_status", + "schema": "public", + "values": [ + "pending", + "sent", + "accepted", + "declined", + "submitted" + ] + }, + "public.quantity_unit": { + "name": "quantity_unit", + "schema": "public", + "values": [ + "ea", + "set", + "kg", + "ton", + "m", + "m2", + "m3", + "lot", + "other" + ] + }, + "public.weight_unit": { + "name": "weight_unit", + "schema": "public", + "values": [ + "kg", + "ton", + "lb", + "g" + ] + } + }, + "schemas": { + "mdg": "mdg", + "soap": "soap", + "nonsap": "nonsap", + "ecc": "ecc", + "knox": "knox", + "risks": "risks" + }, + "sequences": {}, + "roles": {}, + "policies": {}, + "views": { + "public.contracts_detail_view": { + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "contracts_detail_view_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "contract_no": { + "name": "contract_no", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "contract_name": { + "name": "contract_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true, + "default": "'ACTIVE'" + }, + "start_date": { + "name": "start_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "end_date": { + "name": "end_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "project_id": { + "name": "project_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "code": { + "name": "code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "vendor_name": { + "name": "vendor_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "payment_terms": { + "name": "payment_terms", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "delivery_terms": { + "name": "delivery_terms", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "delivery_date": { + "name": "delivery_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "delivery_location": { + "name": "delivery_location", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "currency": { + "name": "currency", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false, + "default": "'KRW'" + }, + "total_amount": { + "name": "total_amount", + "type": "numeric(12, 2)", + "primaryKey": false, + "notNull": false + }, + "discount": { + "name": "discount", + "type": "numeric(12, 2)", + "primaryKey": false, + "notNull": false + }, + "tax": { + "name": "tax", + "type": "numeric(12, 2)", + "primaryKey": false, + "notNull": false + }, + "shipping_fee": { + "name": "shipping_fee", + "type": "numeric(12, 2)", + "primaryKey": false, + "notNull": false + }, + "net_total": { + "name": "net_total", + "type": "numeric(12, 2)", + "primaryKey": false, + "notNull": false + }, + "partial_shipping_allowed": { + "name": "partial_shipping_allowed", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "partial_payment_allowed": { + "name": "partial_payment_allowed", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "remarks": { + "name": "remarks", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "version": { + "name": "version", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 1 + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "definition": "select \"contracts\".\"id\", \"contracts\".\"contract_no\", \"contracts\".\"contract_name\", \"contracts\".\"status\", \"contracts\".\"start_date\", \"contracts\".\"end_date\", \"contracts\".\"project_id\", \"projects\".\"code\", \"projects\".\"name\", \"contracts\".\"vendor_id\", \"vendors\".\"vendor_name\", \"contracts\".\"payment_terms\", \"contracts\".\"delivery_terms\", \"contracts\".\"delivery_date\", \"contracts\".\"delivery_location\", \"contracts\".\"currency\", \"contracts\".\"total_amount\", \"contracts\".\"discount\", \"contracts\".\"tax\", \"contracts\".\"shipping_fee\", \"contracts\".\"net_total\", \"contracts\".\"partial_shipping_allowed\", \"contracts\".\"partial_payment_allowed\", \"contracts\".\"remarks\", \"contracts\".\"version\", \"contracts\".\"created_at\", \"contracts\".\"updated_at\", EXISTS (\n SELECT 1 \n FROM \"contract_envelopes\" \n WHERE \"contract_envelopes\".\"contract_id\" = \"contracts\".\"id\"\n ) as \"has_signature\", COALESCE((\n SELECT json_agg(\n json_build_object(\n 'id', ci.id,\n 'itemId', ci.item_id,\n 'description', ci.description,\n 'quantity', ci.quantity,\n 'unitPrice', ci.unit_price,\n 'taxRate', ci.tax_rate,\n 'taxAmount', ci.tax_amount,\n 'totalLineAmount', ci.total_line_amount,\n 'remark', ci.remark,\n 'createdAt', ci.created_at,\n 'updatedAt', ci.updated_at\n )\n )\n FROM \"contract_items\" AS ci\n WHERE ci.contract_id = \"contracts\".\"id\"\n ), '[]') as \"items\", COALESCE((\n SELECT json_agg(\n json_build_object(\n 'id', ce.id,\n 'envelopeId', ce.envelope_id,\n 'documentId', ce.document_id,\n 'envelopeStatus', ce.envelope_status,\n 'fileName', ce.file_name,\n 'filePath', ce.file_path,\n 'createdAt', ce.created_at,\n 'updatedAt', ce.updated_at,\n 'signers', (\n SELECT json_agg(\n json_build_object(\n 'id', cs.id,\n 'vendorContactId', cs.vendor_contact_id,\n 'signerType', cs.signer_type,\n 'signerEmail', cs.signer_email,\n 'signerName', cs.signer_name,\n 'signerPosition', cs.signer_position,\n 'signerStatus', cs.signer_status,\n 'signedAt', cs.signed_at\n )\n )\n FROM \"contract_signers\" AS cs\n WHERE cs.envelope_id = ce.id\n )\n )\n )\n FROM \"contract_envelopes\" AS ce\n WHERE ce.contract_id = \"contracts\".\"id\"\n ), '[]') as \"envelopes\" from \"contracts\" left join \"projects\" on \"contracts\".\"project_id\" = \"projects\".\"id\" left join \"vendors\" on \"contracts\".\"vendor_id\" = \"vendors\".\"id\"", + "name": "contracts_detail_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.poa_detail_view": { + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "poa_detail_view_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "contract_no": { + "name": "contract_no", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "project_id": { + "name": "project_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "change_reason": { + "name": "change_reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "approval_status": { + "name": "approval_status", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false, + "default": "'PENDING'" + }, + "delivery_terms": { + "name": "delivery_terms", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "delivery_date": { + "name": "delivery_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "delivery_location": { + "name": "delivery_location", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "currency": { + "name": "currency", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "total_amount": { + "name": "total_amount", + "type": "numeric(12, 2)", + "primaryKey": false, + "notNull": false + }, + "discount": { + "name": "discount", + "type": "numeric(12, 2)", + "primaryKey": false, + "notNull": false + }, + "tax": { + "name": "tax", + "type": "numeric(12, 2)", + "primaryKey": false, + "notNull": false + }, + "shipping_fee": { + "name": "shipping_fee", + "type": "numeric(12, 2)", + "primaryKey": false, + "notNull": false + }, + "net_total": { + "name": "net_total", + "type": "numeric(12, 2)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "definition": "select \"poa\".\"id\", \"poa\".\"contract_no\", \"contracts\".\"project_id\", \"contracts\".\"vendor_id\", \"poa\".\"change_reason\", \"poa\".\"approval_status\", \"contracts\".\"contract_name\" as \"original_contract_name\", \"contracts\".\"status\" as \"original_status\", \"contracts\".\"start_date\" as \"original_start_date\", \"contracts\".\"end_date\" as \"original_end_date\", \"poa\".\"delivery_terms\", \"poa\".\"delivery_date\", \"poa\".\"delivery_location\", \"poa\".\"currency\", \"poa\".\"total_amount\", \"poa\".\"discount\", \"poa\".\"tax\", \"poa\".\"shipping_fee\", \"poa\".\"net_total\", \"poa\".\"created_at\", \"poa\".\"updated_at\", EXISTS (\n SELECT 1 \n FROM \"contract_envelopes\" \n WHERE \"contract_envelopes\".\"contract_id\" = \"poa\".\"id\"\n ) as \"has_signature\" from \"poa\" left join \"contracts\" on \"poa\".\"contract_no\" = \"contracts\".\"contract_no\"", + "name": "poa_detail_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.project_approved_vendors": { + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "vendor_name": { + "name": "vendor_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "vendor_code": { + "name": "vendor_code", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "tax_id": { + "name": "tax_id", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "email": { + "name": "email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "phone": { + "name": "phone", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "default": "'PENDING_REVIEW'" + }, + "name_ko": { + "name": "name_ko", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "name_en": { + "name": "name_en", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "code": { + "name": "code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true, + "default": "'ship'" + }, + "submitted_at": { + "name": "submitted_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "approved_at": { + "name": "approved_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + } + }, + "definition": "select \"vendors\".\"id\", \"vendors\".\"vendor_name\", \"vendors\".\"vendor_code\", \"vendors\".\"tax_id\", \"vendors\".\"email\", \"vendors\".\"phone\", \"vendors\".\"status\", \"vendor_types\".\"name_ko\", \"vendor_types\".\"name_en\", \"projects\".\"code\", \"projects\".\"name\", \"projects\".\"type\", \"vendor_pq_submissions\".\"submitted_at\", \"vendor_pq_submissions\".\"approved_at\" from \"vendors\" inner join \"vendor_pq_submissions\" on \"vendor_pq_submissions\".\"vendor_id\" = \"vendors\".\"id\" inner join \"projects\" on \"vendor_pq_submissions\".\"project_id\" = \"projects\".\"id\" left join \"vendor_types\" on \"vendors\".\"vendor_type_id\" = \"vendor_types\".\"id\" where \"vendor_pq_submissions\".\"status\" = 'APPROVED'", + "name": "project_approved_vendors", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.vendor_investigations_view": { + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "pq_submission_id": { + "name": "pq_submission_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "requester_id": { + "name": "requester_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "qm_manager_id": { + "name": "qm_manager_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "investigation_status": { + "name": "investigation_status", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true, + "default": "'PLANNED'" + }, + "investigation_address": { + "name": "investigation_address", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "investigation_method": { + "name": "investigation_method", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "scheduled_start_at": { + "name": "scheduled_start_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "scheduled_end_at": { + "name": "scheduled_end_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "forecasted_at": { + "name": "forecasted_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "requested_at": { + "name": "requested_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "confirmed_at": { + "name": "confirmed_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "completed_at": { + "name": "completed_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "evaluation_score": { + "name": "evaluation_score", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "evaluation_result": { + "name": "evaluation_result", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "investigation_notes": { + "name": "investigation_notes", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "vendor_name": { + "name": "vendor_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "vendor_code": { + "name": "vendor_code", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "pq_items": { + "name": "pq_items", + "type": "jsonb", + "primaryKey": false, + "notNull": false + } + }, + "definition": "select \"vendor_investigations\".\"id\", \"vendor_investigations\".\"vendor_id\", \"vendor_investigations\".\"pq_submission_id\", \"vendor_investigations\".\"requester_id\", \"vendor_investigations\".\"qm_manager_id\", \"vendor_investigations\".\"investigation_status\", \"vendor_investigations\".\"investigation_address\", \"vendor_investigations\".\"investigation_method\", \"vendor_investigations\".\"scheduled_start_at\", \"vendor_investigations\".\"scheduled_end_at\", \"vendor_investigations\".\"forecasted_at\", \"vendor_investigations\".\"requested_at\", \"vendor_investigations\".\"confirmed_at\", \"vendor_investigations\".\"completed_at\", \"vendor_investigations\".\"evaluation_score\", \"vendor_investigations\".\"evaluation_result\", \"vendor_investigations\".\"investigation_notes\", \"vendor_investigations\".\"created_at\", \"vendor_investigations\".\"updated_at\", \"vendors\".\"vendor_name\", \"vendors\".\"vendor_code\", \"vendor_pq_submissions\".\"pq_items\", requester.name as \"requesterName\", requester.email as \"requesterEmail\", qm_manager.name as \"qmManagerName\", qm_manager.email as \"qmManagerEmail\", (\n CASE \n WHEN EXISTS (\n SELECT 1 FROM vendor_investigation_attachments via \n WHERE via.investigation_id = \"vendor_investigations\".\"id\"\n ) \n THEN true \n ELSE false \n END\n ) as \"hasAttachments\" from \"vendor_investigations\" left join \"vendors\" on \"vendor_investigations\".\"vendor_id\" = \"vendors\".\"id\" left join users AS requester on \"vendor_investigations\".\"requester_id\" = requester.id left join users AS qm_manager on \"vendor_investigations\".\"qm_manager_id\" = qm_manager.id left join \"vendor_pq_submissions\" on \"vendor_investigations\".\"pq_submission_id\" = \"vendor_pq_submissions\".\"id\"", + "name": "vendor_investigations_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.cbe_view": { + "columns": {}, + "definition": "select \"cbe_evaluations\".\"id\" as \"cbe_id\", \"cbe_evaluations\".\"rfq_id\" as \"rfq_id\", \"cbe_evaluations\".\"vendor_id\" as \"vendor_id\", \"cbe_evaluations\".\"total_cost\" as \"total_cost\", \"cbe_evaluations\".\"currency\" as \"currency\", \"cbe_evaluations\".\"payment_terms\" as \"payment_terms\", \"cbe_evaluations\".\"incoterms\" as \"incoterms\", \"cbe_evaluations\".\"result\" as \"result\", \"cbe_evaluations\".\"notes\" as \"notes\", \"cbe_evaluations\".\"evaluated_by\" as \"evaluated_by\", \"cbe_evaluations\".\"evaluated_at\" as \"evaluated_at\", \"rfqs\".\"rfq_code\" as \"rfq_code\", \"rfqs\".\"description\" as \"rfq_description\", \"vendors\".\"vendor_name\" as \"vendor_name\", \"vendors\".\"vendor_code\" as \"vendor_code\", \"projects\".\"id\" as \"project_id\", \"projects\".\"code\" as \"project_code\", \"projects\".\"name\" as \"project_name\", \"users\".\"name\" as \"evaluator_name\", \"users\".\"email\" as \"evaluator_email\" from \"cbe_evaluations\" inner join \"rfqs\" on \"cbe_evaluations\".\"rfq_id\" = \"rfqs\".\"id\" inner join \"vendors\" on \"cbe_evaluations\".\"vendor_id\" = \"vendors\".\"id\" left join \"projects\" on \"rfqs\".\"project_id\" = \"projects\".\"id\" left join \"users\" on \"cbe_evaluations\".\"evaluated_by\" = \"users\".\"id\"", + "name": "cbe_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.rfqs_view": { + "columns": {}, + "definition": "select \"rfqs\".\"id\" as \"rfq_id\", \"rfqs\".\"status\" as \"status\", \"rfqs\".\"created_at\" as \"created_at\", \"rfqs\".\"updated_at\" as \"updated_at\", \"rfqs\".\"created_by\" as \"created_by\", \"rfqs\".\"rfq_type\" as \"rfq_type\", \"rfqs\".\"rfq_code\" as \"rfq_code\", \"rfqs\".\"description\" as \"description\", \"rfqs\".\"due_date\" as \"due_date\", \"rfqs\".\"parent_rfq_id\" as \"parent_rfq_id\", \"projects\".\"id\" as \"project_id\", \"projects\".\"code\" as \"project_code\", \"projects\".\"name\" as \"project_name\", \"users\".\"email\" as \"user_email\", \"users\".\"name\" as \"user_name\", (\n SELECT COUNT(*) \n FROM \"rfq_items\" \n WHERE \"rfq_items\".\"rfq_id\" = \"rfqs\".\"id\"\n ) as \"item_count\", (\n SELECT COUNT(*) \n FROM \"rfq_attachments\" \n WHERE \"rfq_attachments\".\"rfq_id\" = \"rfqs\".\"id\"\n ) as \"attachment_count\" from \"rfqs\" left join \"projects\" on \"rfqs\".\"project_id\" = \"projects\".\"id\" left join \"users\" on \"rfqs\".\"created_by\" = \"users\".\"id\"", + "name": "rfqs_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.vendor_cbe_view": { + "columns": {}, + "definition": "select \"vendors\".\"id\" as \"vendor_id\", \"vendors\".\"vendor_name\" as \"vendor_name\", \"vendors\".\"vendor_code\" as \"vendor_code\", \"vendors\".\"address\" as \"address\", \"vendors\".\"country\" as \"country\", \"vendors\".\"email\" as \"email\", \"vendors\".\"website\" as \"website\", \"vendors\".\"status\" as \"vendor_status\", \"vendor_responses\".\"id\" as \"vendor_response_id\", \"vendor_responses\".\"rfq_id\" as \"rfq_id\", \"vendor_responses\".\"response_status\" as \"rfq_vendor_status\", \"vendor_responses\".\"updated_at\" as \"rfq_vendor_updated\", \"rfqs\".\"rfq_code\" as \"rfq_code\", \"rfqs\".\"rfq_type\" as \"rfq_type\", \"rfqs\".\"description\" as \"description\", \"rfqs\".\"due_date\" as \"due_date\", \"projects\".\"id\" as \"project_id\", \"projects\".\"code\" as \"project_code\", \"projects\".\"name\" as \"project_name\", \"cbe_evaluations\".\"id\" as \"cbe_id\", \"cbe_evaluations\".\"result\" as \"cbe_result\", \"cbe_evaluations\".\"notes\" as \"cbe_note\", \"cbe_evaluations\".\"updated_at\" as \"cbe_updated\", \"cbe_evaluations\".\"total_cost\" as \"total_cost\", \"cbe_evaluations\".\"currency\" as \"currency\", \"cbe_evaluations\".\"payment_terms\" as \"payment_terms\", \"cbe_evaluations\".\"incoterms\" as \"incoterms\", \"cbe_evaluations\".\"delivery_schedule\" as \"delivery_schedule\" from \"vendors\" left join \"vendor_responses\" on \"vendor_responses\".\"vendor_id\" = \"vendors\".\"id\" left join \"rfqs\" on \"vendor_responses\".\"rfq_id\" = \"rfqs\".\"id\" left join \"projects\" on \"rfqs\".\"project_id\" = \"projects\".\"id\" left join \"cbe_evaluations\" on (\"cbe_evaluations\".\"vendor_id\" = \"vendors\".\"id\" and \"cbe_evaluations\".\"rfq_id\" = \"vendor_responses\".\"rfq_id\")", + "name": "vendor_cbe_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.vendor_response_cbe_view": { + "columns": {}, + "definition": "select \"vendor_responses\".\"id\" as \"response_id\", \"vendor_responses\".\"rfq_id\" as \"rfq_id\", \"vendor_responses\".\"vendor_id\" as \"vendor_id\", \"vendor_responses\".\"response_status\" as \"response_status\", \"vendor_responses\".\"notes\" as \"response_notes\", \"vendor_responses\".\"responded_by\" as \"responded_by\", \"vendor_responses\".\"responded_at\" as \"responded_at\", \"vendor_responses\".\"updated_at\" as \"response_updated_at\", \"rfqs\".\"rfq_code\" as \"rfq_code\", \"rfqs\".\"description\" as \"rfq_description\", \"rfqs\".\"due_date\" as \"rfq_due_date\", \"rfqs\".\"status\" as \"rfq_status\", \"rfqs\".\"rfq_type\" as \"rfq_type\", \"vendors\".\"vendor_name\" as \"vendor_name\", \"vendors\".\"vendor_code\" as \"vendor_code\", \"vendors\".\"status\" as \"vendor_status\", \"projects\".\"id\" as \"project_id\", \"projects\".\"code\" as \"project_code\", \"projects\".\"name\" as \"project_name\", \"vendor_commercial_responses\".\"id\" as \"commercial_response_id\", \"vendor_commercial_responses\".\"response_status\" as \"commercial_response_status\", \"vendor_commercial_responses\".\"total_price\" as \"total_price\", \"vendor_commercial_responses\".\"currency\" as \"currency\", \"vendor_commercial_responses\".\"payment_terms\" as \"payment_terms\", \"vendor_commercial_responses\".\"incoterms\" as \"incoterms\", \"vendor_commercial_responses\".\"delivery_period\" as \"delivery_period\", \"vendor_commercial_responses\".\"warranty_period\" as \"warranty_period\", \"vendor_commercial_responses\".\"validity_period\" as \"validity_period\", \"vendor_commercial_responses\".\"price_breakdown\" as \"price_breakdown\", \"vendor_commercial_responses\".\"commercial_notes\" as \"commercial_notes\", \"vendor_commercial_responses\".\"created_at\" as \"commercial_created_at\", \"vendor_commercial_responses\".\"updated_at\" as \"commercial_updated_at\", (\n SELECT COUNT(*) \n FROM \"vendor_response_attachments\" \n WHERE \"vendor_response_attachments\".\"response_id\" = \"vendor_responses\".\"id\"\n ) as \"attachment_count\", (\n SELECT COUNT(*) \n FROM \"vendor_response_attachments\" \n WHERE \"vendor_response_attachments\".\"commercial_response_id\" = \"vendor_commercial_responses\".\"id\"\n ) as \"commercial_attachment_count\", (\n SELECT COUNT(*) \n FROM \"vendor_response_attachments\" \n WHERE \"vendor_response_attachments\".\"response_id\" = \"vendor_responses\".\"id\"\n AND \"vendor_response_attachments\".\"attachment_type\" = 'TECHNICAL_SPEC'\n ) as \"technical_attachment_count\", (\n SELECT MAX(\"uploaded_at\") \n FROM \"vendor_response_attachments\" \n WHERE \"vendor_response_attachments\".\"response_id\" = \"vendor_responses\".\"id\"\n ) as \"latest_attachment_date\" from \"vendor_responses\" inner join \"rfqs\" on \"vendor_responses\".\"rfq_id\" = \"rfqs\".\"id\" inner join \"vendors\" on \"vendor_responses\".\"vendor_id\" = \"vendors\".\"id\" left join \"projects\" on \"rfqs\".\"project_id\" = \"projects\".\"id\" left join \"vendor_commercial_responses\" on \"vendor_commercial_responses\".\"response_id\" = \"vendor_responses\".\"id\"", + "name": "vendor_response_cbe_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.vendor_responses_view": { + "columns": {}, + "definition": "select \"vendor_responses\".\"id\" as \"response_id\", \"vendor_responses\".\"rfq_id\" as \"rfq_id\", \"vendor_responses\".\"vendor_id\" as \"vendor_id\", \"rfqs\".\"rfq_code\" as \"rfq_code\", \"rfqs\".\"description\" as \"rfq_description\", \"rfqs\".\"due_date\" as \"rfq_due_date\", \"rfqs\".\"status\" as \"rfq_status\", \"rfqs\".\"rfq_type\" as \"rfq_type\", \"rfqs\".\"created_at\" as \"rfq_created_at\", \"rfqs\".\"updated_at\" as \"rfq_updated_at\", \"rfqs\".\"created_by\" as \"rfq_created_by\", \"projects\".\"id\" as \"project_id\", \"projects\".\"code\" as \"project_code\", \"projects\".\"name\" as \"project_name\", \"vendors\".\"vendor_name\" as \"vendor_name\", \"vendors\".\"vendor_code\" as \"vendor_code\", \"vendor_responses\".\"response_status\" as \"response_status\", \"vendor_responses\".\"responded_at\" as \"responded_at\", CASE WHEN \"vendor_technical_responses\".\"id\" IS NOT NULL THEN TRUE ELSE FALSE END as \"has_technical_response\", \"vendor_technical_responses\".\"id\" as \"technical_response_id\", CASE WHEN \"vendor_commercial_responses\".\"id\" IS NOT NULL THEN TRUE ELSE FALSE END as \"has_commercial_response\", \"vendor_commercial_responses\".\"id\" as \"commercial_response_id\", \"vendor_commercial_responses\".\"total_price\" as \"total_price\", \"vendor_commercial_responses\".\"currency\" as \"currency\", \"rfq_evaluations\".\"id\" as \"tbe_id\", \"rfq_evaluations\".\"result\" as \"tbe_result\", \"cbe_evaluations\".\"id\" as \"cbe_id\", \"cbe_evaluations\".\"result\" as \"cbe_result\", (\n SELECT COUNT(*) \n FROM \"vendor_response_attachments\" \n WHERE \"vendor_response_attachments\".\"response_id\" = \"vendor_responses\".\"id\"\n ) as \"attachment_count\" from \"vendor_responses\" inner join \"rfqs\" on \"vendor_responses\".\"rfq_id\" = \"rfqs\".\"id\" inner join \"vendors\" on \"vendor_responses\".\"vendor_id\" = \"vendors\".\"id\" left join \"projects\" on \"rfqs\".\"project_id\" = \"projects\".\"id\" left join \"vendor_technical_responses\" on \"vendor_technical_responses\".\"response_id\" = \"vendor_responses\".\"id\" left join \"vendor_commercial_responses\" on \"vendor_commercial_responses\".\"response_id\" = \"vendor_responses\".\"id\" left join \"rfq_evaluations\" on (\"rfq_evaluations\".\"rfq_id\" = \"vendor_responses\".\"rfq_id\" and \"rfq_evaluations\".\"vendor_id\" = \"vendor_responses\".\"vendor_id\" and \"rfq_evaluations\".\"eval_type\" = 'TBE') left join \"cbe_evaluations\" on (\"cbe_evaluations\".\"rfq_id\" = \"vendor_responses\".\"rfq_id\" and \"cbe_evaluations\".\"vendor_id\" = \"vendor_responses\".\"vendor_id\")", + "name": "vendor_responses_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.vendor_rfq_view": { + "columns": {}, + "definition": "select \"vendors\".\"id\" as \"vendor_id\", \"vendors\".\"vendor_name\" as \"vendor_name\", \"vendors\".\"vendor_code\" as \"vendor_code\", \"vendors\".\"address\" as \"address\", \"vendors\".\"country\" as \"country\", \"vendors\".\"email\" as \"email\", \"vendors\".\"website\" as \"website\", \"vendors\".\"status\" as \"vendor_status\", \"vendor_responses\".\"rfq_id\" as \"rfq_id\", \"vendor_responses\".\"response_status\" as \"rfq_vendor_status\", \"vendor_responses\".\"updated_at\" as \"rfq_vendor_updated\", \"rfqs\".\"rfq_code\" as \"rfq_code\", \"rfqs\".\"description\" as \"description\", \"rfqs\".\"due_date\" as \"due_date\", \"projects\".\"id\" as \"project_id\", \"projects\".\"code\" as \"project_code\", \"projects\".\"name\" as \"project_name\" from \"vendors\" left join \"vendor_responses\" on \"vendor_responses\".\"vendor_id\" = \"vendors\".\"id\" left join \"rfqs\" on \"vendor_responses\".\"rfq_id\" = \"rfqs\".\"id\" left join \"projects\" on \"rfqs\".\"project_id\" = \"projects\".\"id\"", + "name": "vendor_rfq_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.vendor_tbe_view": { + "columns": {}, + "definition": "select \"vendors\".\"id\" as \"vendor_id\", \"vendors\".\"vendor_name\" as \"vendor_name\", \"vendors\".\"vendor_code\" as \"vendor_code\", \"vendors\".\"address\" as \"address\", \"vendors\".\"country\" as \"country\", \"vendors\".\"email\" as \"email\", \"vendors\".\"website\" as \"website\", \"vendors\".\"status\" as \"vendor_status\", \"vendor_responses\".\"id\" as \"vendor_response_id\", \"vendor_responses\".\"rfq_id\" as \"rfq_id\", \"vendor_responses\".\"response_status\" as \"rfq_vendor_status\", \"vendor_responses\".\"updated_at\" as \"rfq_vendor_updated\", \"vendor_technical_responses\".\"id\" as \"technical_response_id\", \"vendor_technical_responses\".\"response_status\" as \"technical_response_status\", \"vendor_technical_responses\".\"summary\" as \"technical_summary\", \"vendor_technical_responses\".\"notes\" as \"technical_notes\", \"vendor_technical_responses\".\"updated_at\" as \"technical_updated\", \"rfqs\".\"rfq_code\" as \"rfq_code\", \"rfqs\".\"rfq_type\" as \"rfq_type\", \"rfqs\".\"status\" as \"rfq_status\", \"rfqs\".\"description\" as \"description\", \"rfqs\".\"due_date\" as \"due_date\", \"projects\".\"id\" as \"project_id\", \"projects\".\"code\" as \"project_code\", \"projects\".\"name\" as \"project_name\", \"rfq_evaluations\".\"id\" as \"tbe_id\", \"rfq_evaluations\".\"result\" as \"tbe_result\", \"rfq_evaluations\".\"notes\" as \"tbe_note\", \"rfq_evaluations\".\"updated_at\" as \"tbe_updated\" from \"vendors\" left join \"vendor_responses\" on \"vendor_responses\".\"vendor_id\" = \"vendors\".\"id\" left join \"rfqs\" on \"vendor_responses\".\"rfq_id\" = \"rfqs\".\"id\" left join \"projects\" on \"rfqs\".\"project_id\" = \"projects\".\"id\" left join \"vendor_technical_responses\" on \"vendor_technical_responses\".\"response_id\" = \"vendor_responses\".\"id\" left join \"rfq_evaluations\" on (\"rfq_evaluations\".\"vendor_id\" = \"vendors\".\"id\" and \"rfq_evaluations\".\"eval_type\" = 'TBE' and \"rfq_evaluations\".\"rfq_id\" = \"vendor_responses\".\"rfq_id\")", + "name": "vendor_tbe_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.role_view": { + "columns": {}, + "definition": "select \"roles\".\"id\" as \"id\", \"roles\".\"name\" as \"name\", \"roles\".\"description\" as \"description\", \"roles\".\"domain\" as \"domain\", \"roles\".\"created_at\" as \"created_at\", \"vendors\".\"id\" as \"company_id\", \"vendors\".\"vendor_name\" as \"company_name\", COUNT(\"users\".\"id\") as \"user_count\" from \"roles\" left join \"user_roles\" on \"user_roles\".\"role_id\" = \"roles\".\"id\" left join \"users\" on \"users\".\"id\" = \"user_roles\".\"user_id\" left join \"vendors\" on \"roles\".\"company_id\" = \"vendors\".\"id\" group by \"roles\".\"id\", \"vendors\".\"id\"", + "name": "role_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.user_view": { + "columns": {}, + "definition": "select \"users\".\"id\" as \"user_id\", \"users\".\"name\" as \"user_name\", \"users\".\"phone\" as \"user_phone\", \"users\".\"email\" as \"user_email\", \"users\".\"domain\" as \"user_domain\", \"users\".\"image_url\" as \"user_image\", \"users\".\"employee_number\" as \"employee_number\", \"users\".\"deptName\" as \"dept_name\", \"users\".\"knox_id\" as \"knox_id\", \"users\".\"is_locked\" as \"is_locked\", \"users\".\"is_absent\" as \"is_absent\", \"users\".\"is_deleted_on_non_sap\" as \"is_deleted_on_non_sap\", \"users\".\"is_regular_employee\" as \"is_regular_employee\", \"vendors\".\"id\" as \"company_id\", \"vendors\".\"vendor_name\" as \"company_name\", \n array_agg(\"roles\".\"name\")\n as \"roles\", \"users\".\"created_at\" as \"created_at\", \"users\".\"updated_at\" as \"updated_at\", \"users\".\"deactivated_at\" as \"deactivated_at\" from \"users\" left join \"vendors\" on \"users\".\"company_id\" = \"vendors\".\"id\" left join \"user_roles\" on \"users\".\"id\" = \"user_roles\".\"user_id\" left join \"roles\" on \"user_roles\".\"role_id\" = \"roles\".\"id\" group by \"users\".\"id\", \"vendors\".\"id\"", + "name": "user_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.form_lists_view": { + "columns": {}, + "definition": "select \"tag_type_class_form_mappings\".\"id\" as \"id\", \"tag_type_class_form_mappings\".\"project_id\" as \"project_id\", \"projects\".\"code\" as \"project_code\", \"projects\".\"name\" as \"project_name\", \"tag_type_class_form_mappings\".\"tag_type_label\" as \"tag_type_label\", \"tag_type_class_form_mappings\".\"class_label\" as \"class_label\", \"tag_type_class_form_mappings\".\"form_code\" as \"form_code\", \"tag_type_class_form_mappings\".\"form_name\" as \"form_name\", \"tag_type_class_form_mappings\".\"ep\" as \"ep\", \"tag_type_class_form_mappings\".\"remark\" as \"remark\", \"tag_type_class_form_mappings\".\"created_at\" as \"created_at\", \"tag_type_class_form_mappings\".\"updated_at\" as \"updated_at\" from \"tag_type_class_form_mappings\" inner join \"projects\" on \"tag_type_class_form_mappings\".\"project_id\" = \"projects\".\"id\"", + "name": "form_lists_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.view_tag_subfields": { + "columns": { + "tag_type_code": { + "name": "tag_type_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "attributes_id": { + "name": "attributes_id", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "attributes_description": { + "name": "attributes_description", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "expression": { + "name": "expression", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "delimiter": { + "name": "delimiter", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "sort_order": { + "name": "sort_order", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "code": { + "name": "code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + } + }, + "definition": "select \"tag_subfields\".\"id\" as \"id\", \"tag_subfields\".\"tag_type_code\", \"tag_types\".\"description\", \"tag_subfields\".\"attributes_id\", \"tag_subfields\".\"attributes_description\", \"tag_subfields\".\"expression\", \"tag_subfields\".\"delimiter\", \"tag_subfields\".\"sort_order\", \"tag_subfields\".\"created_at\", \"tag_subfields\".\"updated_at\", \"projects\".\"id\" as \"project_id\", \"projects\".\"code\", \"projects\".\"name\" from \"tag_subfields\" inner join \"tag_types\" on (\"tag_subfields\".\"tag_type_code\" = \"tag_types\".\"code\" and \"tag_subfields\".\"project_id\" = \"tag_types\".\"project_id\") inner join \"projects\" on \"tag_subfields\".\"project_id\" = \"projects\".\"id\"", + "name": "view_tag_subfields", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.document_stages_only_view": { + "columns": { + "document_id": { + "name": "document_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "doc_number": { + "name": "doc_number", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "drawing_kind": { + "name": "drawing_kind", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "vendor_doc_number": { + "name": "vendor_doc_number", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "title": { + "name": "title", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "pic": { + "name": "pic", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "issued_date": { + "name": "issued_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "contract_id": { + "name": "contract_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "project_code": { + "name": "project_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "vendor_name": { + "name": "vendor_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "vendor_code": { + "name": "vendor_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "vendor_id": { + "name": "vendor_id", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "current_stage_id": { + "name": "current_stage_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "current_stage_name": { + "name": "current_stage_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "current_stage_status": { + "name": "current_stage_status", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "current_stage_order": { + "name": "current_stage_order", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "current_stage_plan_date": { + "name": "current_stage_plan_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "current_stage_actual_date": { + "name": "current_stage_actual_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "current_stage_assignee_name": { + "name": "current_stage_assignee_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "current_stage_priority": { + "name": "current_stage_priority", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "days_until_due": { + "name": "days_until_due", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "is_overdue": { + "name": "is_overdue", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "days_difference": { + "name": "days_difference", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "total_stages": { + "name": "total_stages", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "completed_stages": { + "name": "completed_stages", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "progress_percentage": { + "name": "progress_percentage", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "all_stages": { + "name": "all_stages", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "definition": "\n WITH document_stats AS (\n SELECT \n d.id as document_id,\n COUNT(ist.id) as total_stages,\n COUNT(CASE WHEN ist.stage_status IN ('COMPLETED', 'APPROVED') THEN 1 END) as completed_stages,\n CASE \n WHEN COUNT(ist.id) > 0 \n THEN ROUND((COUNT(CASE WHEN ist.stage_status IN ('COMPLETED', 'APPROVED') THEN 1 END) * 100.0) / COUNT(ist.id))\n ELSE 0 \n END as progress_percentage\n FROM documents d\n LEFT JOIN issue_stages ist ON d.id = ist.document_id\n GROUP BY d.id\n ),\n current_stage_info AS (\n SELECT DISTINCT ON (document_id)\n document_id,\n id as current_stage_id,\n stage_name as current_stage_name,\n stage_status as current_stage_status,\n stage_order as current_stage_order,\n plan_date as current_stage_plan_date,\n actual_date as current_stage_actual_date,\n assignee_name as current_stage_assignee_name,\n priority as current_stage_priority,\n CASE \n WHEN actual_date IS NULL AND plan_date IS NOT NULL \n THEN plan_date - CURRENT_DATE\n ELSE NULL \n END as days_until_due,\n CASE \n WHEN actual_date IS NULL AND plan_date < CURRENT_DATE \n THEN true\n WHEN actual_date IS NOT NULL AND actual_date > plan_date \n THEN true\n ELSE false \n END as is_overdue,\n CASE \n WHEN actual_date IS NOT NULL AND plan_date IS NOT NULL \n THEN actual_date - plan_date\n ELSE NULL \n END as days_difference\n FROM issue_stages\n WHERE stage_status NOT IN ('COMPLETED', 'APPROVED')\n ORDER BY document_id, stage_order ASC, priority DESC\n ),\n -- 문서별 스테이지 집계 (리비전 제외)\n stage_aggregation AS (\n SELECT \n ist.document_id,\n json_agg(\n json_build_object(\n 'id', ist.id,\n 'stageName', ist.stage_name,\n 'stageStatus', ist.stage_status,\n 'stageOrder', ist.stage_order,\n 'planDate', ist.plan_date,\n 'actualDate', ist.actual_date,\n 'assigneeName', ist.assignee_name,\n 'priority', ist.priority,\n 'description', ist.description,\n 'notes', ist.notes,\n 'reminderDays', ist.reminder_days\n ) ORDER BY ist.stage_order\n ) as all_stages\n FROM issue_stages ist\n GROUP BY ist.document_id\n )\n \n SELECT \n d.id as document_id,\n d.doc_number,\n d.drawing_kind,\n d.vendor_doc_number,\n d.title,\n d.pic,\n d.status,\n d.issued_date,\n d.contract_id,\n \n -- 프로젝트 및 벤더 정보\n p.code as project_code,\n v.vendor_name as vendor_name,\n v.vendor_code as vendor_code,\n c.vendor_id as vendor_id,\n \n -- 현재 스테이지 정보\n csi.current_stage_id,\n csi.current_stage_name,\n csi.current_stage_status,\n csi.current_stage_order,\n csi.current_stage_plan_date,\n csi.current_stage_actual_date,\n csi.current_stage_assignee_name,\n csi.current_stage_priority,\n \n -- 계산 필드\n csi.days_until_due,\n csi.is_overdue,\n csi.days_difference,\n \n -- 진행률 정보\n ds.total_stages,\n ds.completed_stages,\n ds.progress_percentage,\n \n -- 전체 스테이지 (리비전 제외)\n COALESCE(sa.all_stages, '[]'::json) as all_stages,\n \n -- 메타 정보\n d.created_at,\n d.updated_at\n \n FROM documents d\n -- 프로젝트 및 벤더 정보 JOIN\n LEFT JOIN contracts c ON d.contract_id = c.id\n LEFT JOIN projects p ON c.project_id = p.id\n LEFT JOIN vendors v ON c.vendor_id = v.id\n \n -- 스테이지 관련 정보 JOIN\n LEFT JOIN document_stats ds ON d.id = ds.document_id\n LEFT JOIN current_stage_info csi ON d.id = csi.document_id\n LEFT JOIN stage_aggregation sa ON d.id = sa.document_id\n \n ORDER BY d.created_at DESC\n", + "name": "document_stages_only_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.document_stages_view": { + "columns": { + "document_id": { + "name": "document_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "doc_number": { + "name": "doc_number", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "title": { + "name": "title", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "issued_date": { + "name": "issued_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "contract_id": { + "name": "contract_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "stage_count": { + "name": "stage_count", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "stage_list": { + "name": "stage_list", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "definition": "\n SELECT\n d.id AS document_id,\n d.doc_number,\n d.title,\n d.status,\n d.issued_date,\n d.contract_id,\n (SELECT COUNT(*) FROM issue_stages WHERE document_id = d.id) AS stage_count,\n COALESCE( \n (SELECT json_agg(i.stage_name) FROM issue_stages i WHERE i.document_id = d.id), \n '[]'\n ) AS stage_list,\n d.created_at,\n d.updated_at\n FROM documents d\n", + "name": "document_stages_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.enhanced_documents_view": { + "columns": { + "document_id": { + "name": "document_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "doc_number": { + "name": "doc_number", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "drawing_kind": { + "name": "drawing_kind", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "vendor_doc_number": { + "name": "vendor_doc_number", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "title": { + "name": "title", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "pic": { + "name": "pic", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "issued_date": { + "name": "issued_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "contract_id": { + "name": "contract_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "project_id": { + "name": "project_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "project_code": { + "name": "project_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "vendor_name": { + "name": "vendor_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "vendor_code": { + "name": "vendor_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "vendor_id": { + "name": "vendor_id", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "c_gbn": { + "name": "c_gbn", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "d_gbn": { + "name": "d_gbn", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "degree_gbn": { + "name": "degree_gbn", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "dept_gbn": { + "name": "dept_gbn", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "j_gbn": { + "name": "j_gbn", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "s_gbn": { + "name": "s_gbn", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "current_stage_id": { + "name": "current_stage_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "current_stage_name": { + "name": "current_stage_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "current_stage_status": { + "name": "current_stage_status", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "current_stage_order": { + "name": "current_stage_order", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "current_stage_plan_date": { + "name": "current_stage_plan_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "current_stage_actual_date": { + "name": "current_stage_actual_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "current_stage_assignee_name": { + "name": "current_stage_assignee_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "current_stage_priority": { + "name": "current_stage_priority", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "days_until_due": { + "name": "days_until_due", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "is_overdue": { + "name": "is_overdue", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "days_difference": { + "name": "days_difference", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "total_stages": { + "name": "total_stages", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "completed_stages": { + "name": "completed_stages", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "progress_percentage": { + "name": "progress_percentage", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "latest_revision_id": { + "name": "latest_revision_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "latest_revision": { + "name": "latest_revision", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "latest_revision_status": { + "name": "latest_revision_status", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "latest_revision_uploader_name": { + "name": "latest_revision_uploader_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "latest_submitted_date": { + "name": "latest_submitted_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "all_stages": { + "name": "all_stages", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "attachment_count": { + "name": "attachment_count", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "definition": "\n WITH document_stats AS (\n SELECT \n d.id as document_id,\n COUNT(ist.id) as total_stages,\n COUNT(CASE WHEN ist.stage_status IN ('COMPLETED', 'APPROVED') THEN 1 END) as completed_stages,\n CASE \n WHEN COUNT(ist.id) > 0 \n THEN ROUND((COUNT(CASE WHEN ist.stage_status IN ('COMPLETED', 'APPROVED') THEN 1 END) * 100.0) / COUNT(ist.id))\n ELSE 0 \n END as progress_percentage\n FROM documents d\n LEFT JOIN issue_stages ist ON d.id = ist.document_id\n GROUP BY d.id\n ),\n current_stage_info AS (\n SELECT DISTINCT ON (document_id)\n document_id,\n id as current_stage_id,\n stage_name as current_stage_name,\n stage_status as current_stage_status,\n stage_order as current_stage_order,\n plan_date as current_stage_plan_date,\n actual_date as current_stage_actual_date,\n assignee_name as current_stage_assignee_name,\n priority as current_stage_priority,\n CASE \n WHEN actual_date IS NULL AND plan_date IS NOT NULL \n THEN plan_date - CURRENT_DATE\n ELSE NULL \n END as days_until_due,\n CASE \n WHEN actual_date IS NULL AND plan_date < CURRENT_DATE \n THEN true\n WHEN actual_date IS NOT NULL AND actual_date > plan_date \n THEN true\n ELSE false \n END as is_overdue,\n CASE \n WHEN actual_date IS NOT NULL AND plan_date IS NOT NULL \n THEN actual_date - plan_date\n ELSE NULL \n END as days_difference\n FROM issue_stages\n WHERE stage_status NOT IN ('COMPLETED', 'APPROVED')\n ORDER BY document_id, stage_order ASC, priority DESC\n ),\n latest_revision_info AS (\n SELECT DISTINCT ON (ist.document_id)\n ist.document_id,\n r.id as latest_revision_id,\n r.revision as latest_revision,\n r.revision_status as latest_revision_status,\n r.uploader_name as latest_revision_uploader_name,\n r.submitted_date as latest_submitted_date\n FROM revisions r\n JOIN issue_stages ist ON r.issue_stage_id = ist.id\n ORDER BY ist.document_id, r.created_at DESC\n ),\n -- 리비전별 첨부파일 집계\n revision_attachments AS (\n SELECT \n r.id as revision_id,\n COALESCE(\n json_agg(\n json_build_object(\n 'id', da.id,\n 'revisionId', da.revision_id,\n 'fileName', da.file_name,\n 'filePath', da.file_path,\n 'fileSize', da.file_size,\n 'fileType', da.file_type,\n 'createdAt', da.created_at,\n 'updatedAt', da.updated_at\n ) ORDER BY da.created_at\n ) FILTER (WHERE da.id IS NOT NULL),\n '[]'::json\n ) as attachments\n FROM revisions r\n LEFT JOIN document_attachments da ON r.id = da.revision_id\n GROUP BY r.id\n ),\n -- 스테이지별 리비전 집계 (첨부파일 포함)\n stage_revisions AS (\n SELECT \n ist.id as stage_id,\n COALESCE(\n json_agg(\n json_build_object(\n 'id', r.id,\n 'issueStageId', r.issue_stage_id,\n 'revision', r.revision,\n 'uploaderType', r.uploader_type,\n 'uploaderId', r.uploader_id,\n 'uploaderName', r.uploader_name,\n 'comment', r.comment,\n 'usage', r.usage,\n 'revisionStatus', r.revision_status,\n 'submittedDate', r.submitted_date,\n 'uploadedAt', r.uploaded_at,\n 'approvedDate', r.approved_date,\n 'reviewStartDate', r.review_start_date,\n 'rejectedDate', r.rejected_date,\n 'reviewerId', r.reviewer_id,\n 'reviewerName', r.reviewer_name,\n 'reviewComments', r.review_comments,\n 'createdAt', r.created_at,\n 'updatedAt', r.updated_at,\n 'attachments', ra.attachments\n ) ORDER BY r.created_at\n ) FILTER (WHERE r.id IS NOT NULL),\n '[]'::json\n ) as revisions\n FROM issue_stages ist\n LEFT JOIN revisions r ON ist.id = r.issue_stage_id\n LEFT JOIN revision_attachments ra ON r.id = ra.revision_id\n GROUP BY ist.id\n ),\n -- 문서별 스테이지 집계 (리비전 포함)\n stage_aggregation AS (\n SELECT \n ist.document_id,\n json_agg(\n json_build_object(\n 'id', ist.id,\n 'stageName', ist.stage_name,\n 'stageStatus', ist.stage_status,\n 'stageOrder', ist.stage_order,\n 'planDate', ist.plan_date,\n 'actualDate', ist.actual_date,\n 'assigneeName', ist.assignee_name,\n 'priority', ist.priority,\n 'revisions', sr.revisions\n ) ORDER BY ist.stage_order\n ) as all_stages\n FROM issue_stages ist\n LEFT JOIN stage_revisions sr ON ist.id = sr.stage_id\n GROUP BY ist.document_id\n ),\n attachment_counts AS (\n SELECT \n ist.document_id,\n COUNT(da.id) as attachment_count\n FROM issue_stages ist\n LEFT JOIN revisions r ON ist.id = r.issue_stage_id\n LEFT JOIN document_attachments da ON r.id = da.revision_id\n GROUP BY ist.document_id\n )\n \n SELECT \n d.id as document_id,\n d.doc_number,\n d.drawing_kind,\n d.vendor_doc_number, -- ✅ 벤더 문서 번호 추가\n d.title,\n d.pic,\n d.status,\n d.issued_date,\n d.contract_id,\n\n d.c_gbn,\n d.d_gbn,\n d.degree_gbn,\n d.dept_gbn,\n d.s_gbn,\n d.j_gbn,\n\n\n \n -- ✅ 프로젝트 및 벤더 정보 추가\n c.project_id as project_id,\n p.code as project_code,\n v.vendor_name as vendor_name,\n v.vendor_code as vendor_code,\n c.vendor_id as vendor_id,\n \n -- 현재 스테이지 정보\n csi.current_stage_id,\n csi.current_stage_name,\n csi.current_stage_status,\n csi.current_stage_order,\n csi.current_stage_plan_date,\n csi.current_stage_actual_date,\n csi.current_stage_assignee_name,\n csi.current_stage_priority,\n \n -- 계산 필드\n csi.days_until_due,\n csi.is_overdue,\n csi.days_difference,\n \n -- 진행률 정보\n ds.total_stages,\n ds.completed_stages,\n ds.progress_percentage,\n \n -- 최신 리비전 정보\n lri.latest_revision_id,\n lri.latest_revision,\n lri.latest_revision_status,\n lri.latest_revision_uploader_name,\n lri.latest_submitted_date,\n \n -- 전체 스테이지 (리비전 및 첨부파일 포함)\n COALESCE(sa.all_stages, '[]'::json) as all_stages,\n \n -- 기타\n COALESCE(ac.attachment_count, 0) as attachment_count,\n d.created_at,\n d.updated_at\n \n FROM documents d\n -- ✅ contracts, projects, vendors 테이블 JOIN 추가\n LEFT JOIN contracts c ON d.contract_id = c.id\n LEFT JOIN projects p ON c.project_id = p.id\n LEFT JOIN vendors v ON c.vendor_id = v.id\n \n LEFT JOIN document_stats ds ON d.id = ds.document_id\n LEFT JOIN current_stage_info csi ON d.id = csi.document_id\n LEFT JOIN latest_revision_info lri ON d.id = lri.document_id\n LEFT JOIN stage_aggregation sa ON d.id = sa.document_id\n LEFT JOIN attachment_counts ac ON d.id = ac.document_id\n \n ORDER BY d.created_at DESC\n", + "name": "enhanced_documents_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.simplified_documents_view": { + "columns": { + "document_id": { + "name": "document_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "project_id": { + "name": "project_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "doc_number": { + "name": "doc_number", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "drawing_kind": { + "name": "drawing_kind", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "drawing_move_gbn": { + "name": "drawing_move_gbn", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "discipline": { + "name": "discipline", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "vendor_doc_number": { + "name": "vendor_doc_number", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "title": { + "name": "title", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "pic": { + "name": "pic", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "issued_date": { + "name": "issued_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "contract_id": { + "name": "contract_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "external_document_id": { + "name": "external_document_id", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "external_system_type": { + "name": "external_system_type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "external_synced_at": { + "name": "external_synced_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "shi_drawing_no": { + "name": "shi_drawing_no", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "manager": { + "name": "manager", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "manager_enm": { + "name": "manager_enm", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "manager_no": { + "name": "manager_no", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "register_group": { + "name": "register_group", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "register_group_id": { + "name": "register_group_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "create_user_no": { + "name": "create_user_no", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "create_user_id": { + "name": "create_user_id", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "create_user_enm": { + "name": "create_user_enm", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "project_code": { + "name": "project_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "vendor_name": { + "name": "vendor_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "vendor_code": { + "name": "vendor_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "c_gbn": { + "name": "c_gbn", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "d_gbn": { + "name": "d_gbn", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "degree_gbn": { + "name": "degree_gbn", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "dept_gbn": { + "name": "dept_gbn", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "j_gbn": { + "name": "j_gbn", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "s_gbn": { + "name": "s_gbn", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "first_stage_id": { + "name": "first_stage_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "first_stage_name": { + "name": "first_stage_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "first_stage_plan_date": { + "name": "first_stage_plan_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "first_stage_actual_date": { + "name": "first_stage_actual_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "second_stage_id": { + "name": "second_stage_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "second_stage_name": { + "name": "second_stage_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "second_stage_plan_date": { + "name": "second_stage_plan_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "second_stage_actual_date": { + "name": "second_stage_actual_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "all_stages": { + "name": "all_stages", + "type": "json", + "primaryKey": false, + "notNull": false + }, + "attachment_count": { + "name": "attachment_count", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "definition": "\n WITH \n -- 리비전별 첨부파일 집계\n revision_attachments AS (\n SELECT \n r.id as revision_id,\n COALESCE(\n json_agg(\n json_build_object(\n 'id', da.id,\n 'revisionId', da.revision_id,\n 'fileName', da.file_name,\n 'filePath', da.file_path,\n 'fileSize', da.file_size,\n 'fileType', da.file_type,\n 'dolceFilePath', da.dolce_file_path,\n 'createdAt', da.created_at,\n 'updatedAt', da.updated_at\n ) ORDER BY da.created_at\n ) FILTER (WHERE da.id IS NOT NULL),\n '[]'::json\n ) as attachments\n FROM revisions r\n LEFT JOIN document_attachments da ON r.id = da.revision_id\n GROUP BY r.id\n ),\n \n -- 스테이지별 리비전 집계 (첨부파일 포함)\n stage_revisions AS (\n SELECT \n ist.id as stage_id,\n COALESCE(\n json_agg(\n json_build_object(\n 'id', r.id,\n 'issueStageId', r.issue_stage_id,\n 'revision', r.revision,\n 'uploaderType', r.uploader_type,\n 'uploaderId', r.uploader_id,\n 'uploaderName', r.uploader_name,\n 'comment', r.comment,\n 'usage', r.usage,\n 'usageType', r.usage_type,\n 'revisionStatus', r.revision_status,\n 'submittedDate', r.submitted_date,\n 'uploadedAt', r.uploaded_at,\n 'approvedDate', r.approved_date,\n 'reviewStartDate', r.review_start_date,\n 'rejectedDate', r.rejected_date,\n 'reviewerId', r.reviewer_id,\n 'reviewerName', r.reviewer_name,\n 'serialNo', r.serial_no,\n 'reviewComments', r.review_comments,\n 'createdAt', r.created_at,\n 'updatedAt', r.updated_at,\n 'attachments', COALESCE(ra.attachments, '[]'::json)\n ) ORDER BY r.created_at\n ) FILTER (WHERE r.id IS NOT NULL),\n '[]'::json\n ) as revisions\n FROM issue_stages ist\n LEFT JOIN revisions r ON ist.id = r.issue_stage_id\n LEFT JOIN revision_attachments ra ON r.id = ra.revision_id\n GROUP BY ist.id\n ),\n \n -- 문서별 스테이지 집계 (리비전 포함)\n stage_aggregation AS (\n SELECT \n ist.document_id,\n json_agg(\n json_build_object(\n 'id', ist.id,\n 'stageName', ist.stage_name,\n 'stageStatus', ist.stage_status,\n 'stageOrder', ist.stage_order,\n 'planDate', ist.plan_date,\n 'actualDate', ist.actual_date,\n 'assigneeName', ist.assignee_name,\n 'priority', ist.priority,\n 'revisions', COALESCE(sr.revisions, '[]'::json)\n ) ORDER BY ist.stage_order\n ) as all_stages\n FROM issue_stages ist\n LEFT JOIN stage_revisions sr ON ist.id = sr.stage_id\n GROUP BY ist.document_id\n ),\n \n -- 첫 번째 스테이지 정보 (drawingKind에 따라 다른 조건)\n first_stage_info AS (\n SELECT \n document_id,\n first_stage_id,\n first_stage_name,\n first_stage_plan_date,\n first_stage_actual_date\n FROM (\n SELECT \n ist.document_id,\n ist.id as first_stage_id,\n ist.stage_name as first_stage_name,\n ist.plan_date as first_stage_plan_date,\n ist.actual_date as first_stage_actual_date,\n ROW_NUMBER() OVER (PARTITION BY ist.document_id ORDER BY ist.stage_order ASC) as rn\n FROM issue_stages ist\n JOIN documents d ON ist.document_id = d.id\n WHERE \n (d.drawing_kind = 'B4' AND LOWER(ist.stage_name) LIKE '%pre%') OR\n (d.drawing_kind = 'B3' AND LOWER(ist.stage_name) LIKE '%approval%') OR\n (d.drawing_kind = 'B5' AND LOWER(ist.stage_name) LIKE '%first%')\n ) ranked\n WHERE rn = 1\n ),\n \n -- 두 번째 스테이지 정보 (drawingKind에 따라 다른 조건)\n second_stage_info AS (\n SELECT \n document_id,\n second_stage_id,\n second_stage_name,\n second_stage_plan_date,\n second_stage_actual_date\n FROM (\n SELECT \n ist.document_id,\n ist.id as second_stage_id,\n ist.stage_name as second_stage_name,\n ist.plan_date as second_stage_plan_date,\n ist.actual_date as second_stage_actual_date,\n ROW_NUMBER() OVER (PARTITION BY ist.document_id ORDER BY ist.stage_order ASC) as rn\n FROM issue_stages ist\n JOIN documents d ON ist.document_id = d.id\n WHERE \n (d.drawing_kind = 'B4' AND LOWER(ist.stage_name) LIKE '%work%') OR\n (d.drawing_kind = 'B3' AND LOWER(ist.stage_name) LIKE '%work%') OR\n (d.drawing_kind = 'B5' AND LOWER(ist.stage_name) LIKE '%second%')\n ) ranked\n WHERE rn = 1\n ),\n \n -- 첨부파일 수 집계\n attachment_counts AS (\n SELECT \n ist.document_id,\n COUNT(da.id) as attachment_count\n FROM issue_stages ist\n LEFT JOIN revisions r ON ist.id = r.issue_stage_id\n LEFT JOIN document_attachments da ON r.id = da.revision_id\n GROUP BY ist.document_id\n )\n \n SELECT \n d.id as document_id,\n d.project_id,\n d.vendor_id,\n d.doc_number,\n d.drawing_kind,\n d.drawing_move_gbn,\n d.discipline,\n d.vendor_doc_number,\n d.title,\n d.pic,\n d.status,\n d.issued_date,\n d.contract_id,\n \n -- 외부 시스템 연동 정보\n d.external_document_id,\n d.external_system_type,\n d.external_synced_at,\n \n -- DOLCE 응답의 추가 정보들\n d.shi_drawing_no,\n d.manager,\n d.manager_enm,\n d.manager_no,\n d.register_group,\n d.register_group_id,\n \n -- 생성자 정보\n d.create_user_no,\n d.create_user_id,\n d.create_user_enm,\n \n -- 프로젝트 및 벤더 정보\n p.code as project_code,\n v.vendor_name,\n v.vendor_code,\n \n -- B4 전용 필드들\n d.c_gbn,\n d.d_gbn,\n d.degree_gbn,\n d.dept_gbn,\n d.s_gbn,\n d.j_gbn,\n \n -- 첫 번째 스테이지 정보\n fsi.first_stage_id,\n fsi.first_stage_name,\n fsi.first_stage_plan_date,\n fsi.first_stage_actual_date,\n \n -- 두 번째 스테이지 정보\n ssi.second_stage_id,\n ssi.second_stage_name,\n ssi.second_stage_plan_date,\n ssi.second_stage_actual_date,\n \n -- 전체 스테이지 (리비전 및 첨부파일 포함)\n COALESCE(sa.all_stages, '[]'::json) as all_stages,\n \n -- 기타\n COALESCE(ac.attachment_count, 0) as attachment_count,\n d.created_at,\n d.updated_at\n \n FROM documents d\n -- projects, vendors 테이블 JOIN (projectId가 이제 documents에 직접 있음)\n LEFT JOIN projects p ON d.project_id = p.id AND p.type = 'ship'\n LEFT JOIN contracts c ON d.contract_id = c.id\n LEFT JOIN vendors v ON c.vendor_id = v.id\n \n -- 스테이지 정보 JOIN\n LEFT JOIN first_stage_info fsi ON d.id = fsi.document_id\n LEFT JOIN second_stage_info ssi ON d.id = ssi.document_id\n LEFT JOIN stage_aggregation sa ON d.id = sa.document_id\n LEFT JOIN attachment_counts ac ON d.id = ac.document_id\n \n ORDER BY d.created_at DESC\n", + "name": "simplified_documents_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.stage_documents_view": { + "columns": { + "document_id": { + "name": "document_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "doc_number": { + "name": "doc_number", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "vendor_doc_number": { + "name": "vendor_doc_number", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "title": { + "name": "title", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "issued_date": { + "name": "issued_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "project_id": { + "name": "project_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "contract_id": { + "name": "contract_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "project_code": { + "name": "project_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "vendor_name": { + "name": "vendor_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "vendor_code": { + "name": "vendor_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "current_stage_id": { + "name": "current_stage_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "current_stage_name": { + "name": "current_stage_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "current_stage_status": { + "name": "current_stage_status", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "current_stage_order": { + "name": "current_stage_order", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "current_stage_plan_date": { + "name": "current_stage_plan_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "current_stage_actual_date": { + "name": "current_stage_actual_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "current_stage_assignee_name": { + "name": "current_stage_assignee_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "current_stage_priority": { + "name": "current_stage_priority", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "days_until_due": { + "name": "days_until_due", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "is_overdue": { + "name": "is_overdue", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "days_difference": { + "name": "days_difference", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "total_stages": { + "name": "total_stages", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "completed_stages": { + "name": "completed_stages", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "progress_percentage": { + "name": "progress_percentage", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "all_stages": { + "name": "all_stages", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "definition": "\n WITH document_stats AS (\n SELECT \n sd.id as document_id,\n COUNT(ist.id) as total_stages,\n COUNT(CASE WHEN ist.stage_status IN ('COMPLETED', 'APPROVED') THEN 1 END) as completed_stages,\n CASE \n WHEN COUNT(ist.id) > 0 \n THEN ROUND((COUNT(CASE WHEN ist.stage_status IN ('COMPLETED', 'APPROVED') THEN 1 END) * 100.0) / COUNT(ist.id))\n ELSE 0 \n END as progress_percentage\n FROM stage_documents sd\n LEFT JOIN stage_issue_stages ist ON sd.id = ist.document_id\n GROUP BY sd.id\n ),\n current_stage_info AS (\n SELECT DISTINCT ON (document_id)\n document_id,\n id as current_stage_id,\n stage_name as current_stage_name,\n stage_status as current_stage_status,\n stage_order as current_stage_order,\n plan_date as current_stage_plan_date,\n actual_date as current_stage_actual_date,\n assignee_name as current_stage_assignee_name,\n priority as current_stage_priority,\n CASE \n WHEN actual_date IS NULL AND plan_date IS NOT NULL \n THEN plan_date - CURRENT_DATE\n ELSE NULL \n END as days_until_due,\n CASE \n WHEN actual_date IS NULL AND plan_date < CURRENT_DATE \n THEN true\n WHEN actual_date IS NOT NULL AND actual_date > plan_date \n THEN true\n ELSE false \n END as is_overdue,\n CASE \n WHEN actual_date IS NOT NULL AND plan_date IS NOT NULL \n THEN actual_date - plan_date\n ELSE NULL \n END as days_difference\n FROM stage_issue_stages\n WHERE stage_status NOT IN ('COMPLETED', 'APPROVED')\n ORDER BY document_id, stage_order ASC, priority DESC\n ),\n -- 문서별 스테이지 집계 (리비전 제외)\n stage_aggregation AS (\n SELECT \n ist.document_id,\n json_agg(\n json_build_object(\n 'id', ist.id,\n 'stageName', ist.stage_name,\n 'stageStatus', ist.stage_status,\n 'stageOrder', ist.stage_order,\n 'planDate', ist.plan_date,\n 'actualDate', ist.actual_date,\n 'assigneeName', ist.assignee_name,\n 'priority', ist.priority,\n 'description', ist.description,\n 'notes', ist.notes,\n 'reminderDays', ist.reminder_days\n ) ORDER BY ist.stage_order\n ) as all_stages\n FROM stage_issue_stages ist\n GROUP BY ist.document_id\n )\n \n SELECT \n sd.id as document_id,\n sd.doc_number,\n sd.vendor_doc_number,\n sd.title,\n sd.status,\n sd.issued_date,\n \n -- 프로젝트 및 벤더 정보 (직접 참조로 간소화)\n sd.project_id,\n sd.contract_id,\n p.code as project_code,\n sd.vendor_id,\n v.vendor_name,\n v.vendor_code,\n \n -- 현재 스테이지 정보\n csi.current_stage_id,\n csi.current_stage_name,\n csi.current_stage_status,\n csi.current_stage_order,\n csi.current_stage_plan_date,\n csi.current_stage_actual_date,\n csi.current_stage_assignee_name,\n csi.current_stage_priority,\n \n -- 계산 필드\n csi.days_until_due,\n csi.is_overdue,\n csi.days_difference,\n \n -- 진행률 정보\n ds.total_stages,\n ds.completed_stages,\n ds.progress_percentage,\n \n -- 전체 스테이지 (리비전 제외)\n COALESCE(sa.all_stages, '[]'::json) as all_stages,\n \n -- 메타 정보\n sd.created_at,\n sd.updated_at\n \n FROM stage_documents sd\n -- 간소화된 JOIN (vendors는 vendor_id로 직접 조인)\n LEFT JOIN projects p ON sd.project_id = p.id\n LEFT JOIN vendors v ON sd.vendor_id = v.id\n \n -- 스테이지 관련 정보 JOIN\n LEFT JOIN document_stats ds ON sd.id = ds.document_id\n LEFT JOIN current_stage_info csi ON sd.id = csi.document_id\n LEFT JOIN stage_aggregation sa ON sd.id = sa.document_id\n \n ORDER BY sd.created_at DESC\n", + "name": "stage_documents_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.sync_status_view": { + "columns": { + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "target_system": { + "name": "target_system", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "total_changes": { + "name": "total_changes", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "pending_changes": { + "name": "pending_changes", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "synced_changes": { + "name": "synced_changes", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "failed_changes": { + "name": "failed_changes", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "last_sync_at": { + "name": "last_sync_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "next_sync_at": { + "name": "next_sync_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "sync_enabled": { + "name": "sync_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": false + } + }, + "definition": "\n WITH change_stats AS (\n SELECT \n cl.vendor_id,\n sc.target_system,\n COUNT(*) as total_changes,\n COUNT(CASE WHEN cl.is_synced = false AND cl.sync_attempts < sc.retry_max_attempts THEN 1 END) as pending_changes,\n COUNT(CASE WHEN cl.is_synced = true THEN 1 END) as synced_changes,\n COUNT(CASE WHEN cl.sync_attempts >= sc.retry_max_attempts AND cl.is_synced = false THEN 1 END) as failed_changes,\n MAX(cl.synced_at) as last_sync_at\n FROM change_logs cl\n CROSS JOIN sync_configs sc \n WHERE cl.vendor_id = sc.vendor_id\n AND (cl.target_systems IS NULL OR cl.target_systems @> to_jsonb(ARRAY[sc.target_system]))\n GROUP BY cl.vendor_id, sc.target_system\n )\n SELECT \n cs.vendor_id,\n cs.target_system,\n COALESCE(cs.total_changes, 0) as total_changes,\n COALESCE(cs.pending_changes, 0) as pending_changes,\n COALESCE(cs.synced_changes, 0) as synced_changes,\n COALESCE(cs.failed_changes, 0) as failed_changes,\n cs.last_sync_at,\n CASE \n WHEN sc.sync_enabled = true AND sc.last_successful_sync IS NOT NULL \n THEN sc.last_successful_sync + (sc.sync_interval_minutes || ' minutes')::interval\n ELSE NULL\n END as next_sync_at,\n sc.sync_enabled\n FROM sync_configs sc\n LEFT JOIN change_stats cs ON sc.vendor_id = cs.vendor_id AND sc.target_system = cs.target_system\n", + "name": "sync_status_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.vendor_documents_view": { + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "doc_number": { + "name": "doc_number", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "title": { + "name": "title", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "pic": { + "name": "pic", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "issued_date": { + "name": "issued_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "contract_id": { + "name": "contract_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "latest_stage_id": { + "name": "latest_stage_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "latest_stage_name": { + "name": "latest_stage_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "latest_stage_plan_date": { + "name": "latest_stage_plan_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "latest_stage_actual_date": { + "name": "latest_stage_actual_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "latest_revision_id": { + "name": "latest_revision_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "latest_revision": { + "name": "latest_revision", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "latest_revision_uploader_type": { + "name": "latest_revision_uploader_type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "latest_revision_uploader_name": { + "name": "latest_revision_uploader_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "attachment_count": { + "name": "attachment_count", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "definition": "\n SELECT \n d.id, \n d.doc_number,\n d.title,\n d.pic,\n d.status,\n d.issued_date,\n d.contract_id,\n \n (SELECT id FROM issue_stages WHERE document_id = d.id ORDER BY created_at DESC LIMIT 1) AS latest_stage_id,\n (SELECT stage_name FROM issue_stages WHERE document_id = d.id ORDER BY created_at DESC LIMIT 1) AS latest_stage_name,\n (SELECT plan_date FROM issue_stages WHERE document_id = d.id ORDER BY created_at DESC LIMIT 1) AS latest_stage_plan_date,\n (SELECT actual_date FROM issue_stages WHERE document_id = d.id ORDER BY created_at DESC LIMIT 1) AS latest_stage_actual_date,\n \n (SELECT r.id FROM revisions r JOIN issue_stages i ON r.issue_stage_id = i.id WHERE i.document_id = d.id ORDER BY r.created_at DESC LIMIT 1) AS latest_revision_id,\n (SELECT r.revision FROM revisions r JOIN issue_stages i ON r.issue_stage_id = i.id WHERE i.document_id = d.id ORDER BY r.created_at DESC LIMIT 1) AS latest_revision,\n (SELECT r.uploader_type FROM revisions r JOIN issue_stages i ON r.issue_stage_id = i.id WHERE i.document_id = d.id ORDER BY r.created_at DESC LIMIT 1) AS latest_revision_uploader_type,\n (SELECT r.uploader_name FROM revisions r JOIN issue_stages i ON r.issue_stage_id = i.id WHERE i.document_id = d.id ORDER BY r.created_at DESC LIMIT 1) AS latest_revision_uploader_name,\n \n (SELECT COUNT(*) FROM document_attachments a JOIN revisions r ON a.revision_id = r.id JOIN issue_stages i ON r.issue_stage_id = i.id WHERE i.document_id = d.id) AS attachment_count,\n \n d.created_at,\n d.updated_at\n FROM documents d\n JOIN contracts c ON d.contract_id = c.id\n ", + "name": "vendor_documents_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.vendor_candidates_with_vendor_info": { + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "company_name": { + "name": "company_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "contact_email": { + "name": "contact_email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "contact_phone": { + "name": "contact_phone", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "tax_id": { + "name": "tax_id", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "address": { + "name": "address", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "country": { + "name": "country", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "source": { + "name": "source", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "default": "'COLLECTED'" + }, + "items": { + "name": "items", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "remark": { + "name": "remark", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "vendor_name": { + "name": "vendor_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "vendor_code": { + "name": "vendor_code", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + } + }, + "definition": "select \"vendor_candidates\".\"id\", \"vendor_candidates\".\"company_name\", \"vendor_candidates\".\"contact_email\", \"vendor_candidates\".\"contact_phone\", \"vendor_candidates\".\"tax_id\", \"vendor_candidates\".\"address\", \"vendor_candidates\".\"country\", \"vendor_candidates\".\"source\", \"vendor_candidates\".\"status\", \"vendor_candidates\".\"items\", \"vendor_candidates\".\"remark\", \"vendor_candidates\".\"created_at\", \"vendor_candidates\".\"updated_at\", \"vendors\".\"vendor_name\", \"vendors\".\"vendor_code\", \"vendors\".\"created_at\" as \"vendor_created_at\", (\n SELECT l2.\"created_at\"\n FROM \"vendor_candidate_logs\" l2\n WHERE l2.\"vendor_candidate_id\" = \"vendor_candidates\".\"id\"\n AND l2.\"action\" = 'status_change'\n ORDER BY l2.\"created_at\" DESC\n LIMIT 1\n ) as \"last_status_change_at\", (\n SELECT u.\"name\"\n FROM \"users\" u\n JOIN \"vendor_candidate_logs\" l3\n ON l3.\"user_id\" = u.\"id\"\n WHERE l3.\"vendor_candidate_id\" = \"vendor_candidates\".\"id\"\n AND l3.\"action\" = 'status_change'\n ORDER BY l3.\"created_at\" DESC\n LIMIT 1\n ) as \"last_status_change_by\", (\n SELECT l4.\"created_at\"\n FROM \"vendor_candidate_logs\" l4\n WHERE l4.\"vendor_candidate_id\" = \"vendor_candidates\".\"id\"\n AND l4.\"action\" = 'invite_sent'\n ORDER BY l4.\"created_at\" DESC\n LIMIT 1\n ) as \"last_invitation_at\", (\n SELECT u2.\"name\"\n FROM \"users\" u2\n JOIN \"vendor_candidate_logs\" l5\n ON l5.\"user_id\" = u2.\"id\"\n WHERE l5.\"vendor_candidate_id\" = \"vendor_candidates\".\"id\"\n AND l5.\"action\" = 'invite_sent'\n ORDER BY l5.\"created_at\" DESC\n LIMIT 1\n ) as \"last_invitation_by\" from \"vendor_candidates\" left join \"vendors\" on \"vendor_candidates\".\"vendor_id\" = \"vendors\".\"id\"", + "name": "vendor_candidates_with_vendor_info", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.vendor_detail_view": { + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "vendor_name": { + "name": "vendor_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "vendor_code": { + "name": "vendor_code", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "tax_id": { + "name": "tax_id", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "address": { + "name": "address", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "address_detail": { + "name": "address_detail", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "postal_code": { + "name": "postal_code", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "business_size": { + "name": "business_size", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "country": { + "name": "country", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "phone": { + "name": "phone", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "email": { + "name": "email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "website": { + "name": "website", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "default": "'PENDING_REVIEW'" + }, + "representative_name": { + "name": "representative_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "representative_birth": { + "name": "representative_birth", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "representative_email": { + "name": "representative_email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "representative_phone": { + "name": "representative_phone", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "corporate_registration_number": { + "name": "corporate_registration_number", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "credit_agency": { + "name": "credit_agency", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "credit_rating": { + "name": "credit_rating", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "cash_flow_rating": { + "name": "cash_flow_rating", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "definition": "select \"id\", \"vendor_name\", \"vendor_code\", \"tax_id\", \"address\", \"address_detail\", \"postal_code\", \"business_size\", \"country\", \"phone\", \"email\", \"website\", \"status\", \"representative_name\", \"representative_birth\", \"representative_email\", \"representative_phone\", \"corporate_registration_number\", \"credit_agency\", \"credit_rating\", \"cash_flow_rating\", \"created_at\", \"updated_at\", \n (SELECT COALESCE(\n json_agg(\n json_build_object(\n 'id', c.id,\n 'contactName', c.contact_name,\n 'contactPosition', c.contact_position,\n 'contactEmail', c.contact_email,\n 'contactPhone', c.contact_phone,\n 'isPrimary', c.is_primary\n )\n ),\n '[]'::json\n )\n FROM vendor_contacts c\n WHERE c.vendor_id = vendors.id)\n as \"contacts\", \n (SELECT COALESCE(\n json_agg(\n json_build_object(\n 'id', a.id,\n 'fileName', a.file_name,\n 'filePath', a.file_path,\n 'attachmentType', a.attachment_type,\n 'createdAt', a.created_at\n )\n ORDER BY a.attachment_type, a.created_at DESC\n ),\n '[]'::json\n )\n FROM vendor_attachments a\n WHERE a.vendor_id = vendors.id)\n as \"attachments\", \n (SELECT COUNT(*)\n FROM vendor_attachments a\n WHERE a.vendor_id = vendors.id)\n as \"attachment_count\", \n (SELECT COUNT(*) \n FROM vendor_contacts c\n WHERE c.vendor_id = vendors.id)\n as \"contact_count\" from \"vendors\"", + "name": "vendor_detail_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.vendor_items_view": { + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "item_name": { + "name": "item_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "item_code": { + "name": "item_code", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "definition": "select \"vendor_possible_items\".\"id\", \"vendor_possible_items\".\"vendor_id\", \"items\".\"item_name\", \"items\".\"item_code\", \"items\".\"description\", \"vendor_possible_items\".\"created_at\", \"vendor_possible_items\".\"updated_at\" from \"vendor_possible_items\" left join \"items\" on \"vendor_possible_items\".\"item_code\" = \"items\".\"item_code\"", + "name": "vendor_items_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.vendor_materials_view": { + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "item_name": { + "name": "item_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "item_code": { + "name": "item_code", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "unit_of_measure": { + "name": "unit_of_measure", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false + }, + "steel_type": { + "name": "steel_type", + "type": "varchar(2)", + "primaryKey": false, + "notNull": false + }, + "grade_material": { + "name": "grade_material", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "definition": "select \"vendor_possible_materials\".\"id\", \"vendor_possible_materials\".\"vendor_id\", \"materials\".\"item_name\", \"materials\".\"item_code\", \"materials\".\"description\", \"materials\".\"unit_of_measure\", \"materials\".\"steel_type\", \"materials\".\"grade_material\", \"vendor_possible_materials\".\"created_at\", \"vendor_possible_materials\".\"updated_at\" from \"vendor_possible_materials\" left join \"materials\" on \"vendor_possible_materials\".\"item_code\" = \"materials\".\"item_code\"", + "name": "vendor_materials_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.vendors_with_types": { + "columns": {}, + "definition": "select \"vendors\".\"id\" as \"id\", \"vendors\".\"vendor_name\" as \"vendor_name\", \"vendors\".\"vendor_code\" as \"vendor_code\", \"vendors\".\"tax_id\" as \"tax_id\", \"vendors\".\"address\" as \"address\", \"vendors\".\"address_detail\" as \"address_detail\", \"vendors\".\"postal_code\" as \"postal_code\", \"vendors\".\"country\" as \"country\", \"vendors\".\"phone\" as \"phone\", \"vendors\".\"email\" as \"email\", \"vendors\".\"business_size\" as \"business_size\", \"vendors\".\"website\" as \"website\", \"vendors\".\"status\" as \"status\", \"vendors\".\"vendor_type_id\" as \"vendor_type_id\", \"vendors\".\"representative_name\" as \"representative_name\", \"vendors\".\"representative_birth\" as \"representative_birth\", \"vendors\".\"representative_email\" as \"representative_email\", \"vendors\".\"representative_phone\" as \"representative_phone\", \"vendors\".\"corporate_registration_number\" as \"corporate_registration_number\", \"vendors\".\"items\" as \"items\", \"vendors\".\"credit_agency\" as \"credit_agency\", \"vendors\".\"credit_rating\" as \"credit_rating\", \"vendors\".\"cash_flow_rating\" as \"cash_flow_rating\", \"vendors\".\"created_at\" as \"created_at\", \"vendors\".\"updated_at\" as \"updated_at\", \"vendor_types\".\"name_ko\" as \"vendor_type_name\", \"vendor_types\".\"name_en\" as \"vendor_type_name_en\", \"vendor_types\".\"code\" as \"vendor_type_code\", \n CASE\n WHEN \"vendors\".\"status\" = 'ACTIVE' THEN '정규업체'\n WHEN \"vendors\".\"status\" IN ('INACTIVE', 'BLACKLISTED', 'REJECTED') THEN ''\n ELSE '잠재업체'\n END\n as \"vendor_category\" from \"vendors\" left join \"vendor_types\" on \"vendors\".\"vendor_type_id\" = \"vendor_types\".\"id\"", + "name": "vendors_with_types", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.basic_contract_view": { + "columns": {}, + "definition": "select \"basic_contract\".\"id\" as \"id\", \"basic_contract\".\"template_id\" as \"template_id\", \"basic_contract\".\"vendor_id\" as \"vendor_id\", \"basic_contract\".\"requested_by\" as \"requested_by\", \"basic_contract\".\"status\" as \"basic_contract_status\", \"basic_contract\".\"created_at\" as \"created_at\", \"basic_contract\".\"updated_at\" as \"updated_at\", \"basic_contract\".\"completed_at\" as \"completed_at\", \"vendors\".\"vendor_code\" as \"vendor_code\", \"vendors\".\"email\" as \"vendor_email\", \"vendors\".\"vendor_name\" as \"vendor_name\", \"users\".\"name\" as \"requested_by_name\", \"basic_contract_templates\".\"template_name\" as \"template_name\", \"basic_contract_templates\".\"revision\" as \"template_revision\", \"basic_contract_templates\".\"status\" as \"template_status\", \"basic_contract_templates\".\"validity_period\" as \"validity_period\", \"basic_contract_templates\".\"legal_review_required\" as \"legal_review_required\", \"basic_contract_templates\".\"file_path\" as \"template_file_path\", \"basic_contract_templates\".\"file_name\" as \"template_file_name\", \"basic_contract\".\"file_path\" as \"signed_file_path\", \"basic_contract\".\"file_name\" as \"signed_file_name\", \"basic_contract_templates\".\"created_at\" as \"template_created_at\", \"basic_contract_templates\".\"created_by\" as \"template_created_by\", \"basic_contract_templates\".\"updated_at\" as \"template_updated_at\", \"basic_contract_templates\".\"updated_by\" as \"template_updated_by\", \"basic_contract_templates\".\"disposed_at\" as \"template_disposed_at\", \"basic_contract_templates\".\"restored_at\" as \"template_restored_at\" from \"basic_contract\" left join \"vendors\" on \"basic_contract\".\"vendor_id\" = \"vendors\".\"id\" left join \"users\" on \"basic_contract\".\"requested_by\" = \"users\".\"id\" left join \"basic_contract_templates\" on \"basic_contract\".\"template_id\" = \"basic_contract_templates\".\"id\"", + "name": "basic_contract_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.pr_items_view": { + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "procurement_rfqs_id": { + "name": "procurement_rfqs_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "rfq_item": { + "name": "rfq_item", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "pr_item": { + "name": "pr_item", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "pr_no": { + "name": "pr_no", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "material_code": { + "name": "material_code", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "material_category": { + "name": "material_category", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "acc": { + "name": "acc", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "material_description": { + "name": "material_description", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "size": { + "name": "size", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "delivery_date": { + "name": "delivery_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "quantity": { + "name": "quantity", + "type": "numeric(12, 2)", + "primaryKey": false, + "notNull": false, + "default": 1 + }, + "uom": { + "name": "uom", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "gross_weight": { + "name": "gross_weight", + "type": "numeric(12, 2)", + "primaryKey": false, + "notNull": false, + "default": 1 + }, + "gw_uom": { + "name": "gw_uom", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "spec_no": { + "name": "spec_no", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "spec_url": { + "name": "spec_url", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "tracking_no": { + "name": "tracking_no", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "major_yn": { + "name": "major_yn", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "project_def": { + "name": "project_def", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "project_sc": { + "name": "project_sc", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "project_kl": { + "name": "project_kl", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "project_lc": { + "name": "project_lc", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "project_dl": { + "name": "project_dl", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "remark": { + "name": "remark", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "rfq_code": { + "name": "rfq_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "item_code": { + "name": "item_code", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "item_name": { + "name": "item_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + } + }, + "definition": "select \"pr_items\".\"id\", \"pr_items\".\"procurement_rfqs_id\", \"pr_items\".\"rfq_item\", \"pr_items\".\"pr_item\", \"pr_items\".\"pr_no\", \"pr_items\".\"material_code\", \"pr_items\".\"material_category\", \"pr_items\".\"acc\", \"pr_items\".\"material_description\", \"pr_items\".\"size\", \"pr_items\".\"delivery_date\", \"pr_items\".\"quantity\", \"pr_items\".\"uom\", \"pr_items\".\"gross_weight\", \"pr_items\".\"gw_uom\", \"pr_items\".\"spec_no\", \"pr_items\".\"spec_url\", \"pr_items\".\"tracking_no\", \"pr_items\".\"major_yn\", \"pr_items\".\"project_def\", \"pr_items\".\"project_sc\", \"pr_items\".\"project_kl\", \"pr_items\".\"project_lc\", \"pr_items\".\"project_dl\", \"pr_items\".\"remark\", \"procurement_rfqs\".\"rfq_code\", \"procurement_rfqs\".\"item_code\", \"procurement_rfqs\".\"item_name\" from \"pr_items\" left join \"procurement_rfqs\" on \"pr_items\".\"procurement_rfqs_id\" = \"procurement_rfqs\".\"id\"", + "name": "pr_items_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.procurement_rfq_details_view": { + "columns": {}, + "definition": "select \"rfq_details\".\"id\" as \"detail_id\", \"rfqs\".\"id\" as \"rfq_id\", \"rfqs\".\"rfq_code\" as \"rfq_code\", \"projects\".\"code\" as \"project_code\", \"projects\".\"name\" as \"project_name\", \"rfqs\".\"item_code\" as \"item_code\", \"rfqs\".\"item_name\" as \"item_name\", \"vendors\".\"vendor_name\" as \"vendor_name\", \"vendors\".\"vendor_code\" as \"vendor_code\", \"vendors\".\"id\" as \"vendor_id\", \"vendors\".\"country\" as \"vendor_country\", \"rfq_details\".\"currency\" as \"currency\", \"payment_terms\".\"code\" as \"payment_terms_code\", \"payment_terms\".\"description\" as \"payment_terms_description\", \"incoterms\".\"code\" as \"incoterms_code\", \"incoterms\".\"description\" as \"incoterms_description\", \"rfq_details\".\"incoterms_detail\" as \"incoterms_detail\", \"rfq_details\".\"delivery_date\" as \"delivery_date\", \"rfq_details\".\"tax_code\" as \"tax_code\", \"rfq_details\".\"place_of_shipping\" as \"place_of_shipping\", \"rfq_details\".\"place_of_destination\" as \"place_of_destination\", \"rfq_details\".\"material_price_related_yn\" as \"material_price_related_yn\", \"updated_by_user\".\"name\" as \"updated_by_user_name\", \"rfq_details\".\"updated_at\" as \"updated_at\", (\n SELECT COUNT(*) \n FROM pr_items \n WHERE procurement_rfqs_id = \"rfqs\".\"id\"\n ) as \"pr_items_count\", (\n SELECT COUNT(*) \n FROM pr_items \n WHERE procurement_rfqs_id = \"rfqs\".\"id\" \n AND major_yn = true\n ) as \"major_items_count\", (\n SELECT COUNT(*) \n FROM procurement_rfq_comments \n WHERE rfq_id = \"rfqs\".\"id\" AND vendor_id = \"rfq_details\".\"vendors_id\"\n ) as \"comment_count\", (\n SELECT created_at \n FROM procurement_rfq_comments \n WHERE rfq_id = \"rfqs\".\"id\" AND vendor_id = \"rfq_details\".\"vendors_id\"\n ORDER BY created_at DESC LIMIT 1\n ) as \"last_comment_date\", (\n SELECT created_at \n FROM procurement_rfq_comments \n WHERE rfq_id = \"rfqs\".\"id\" AND vendor_id = \"rfq_details\".\"vendors_id\" AND is_vendor_comment = true\n ORDER BY created_at DESC LIMIT 1\n ) as \"last_vendor_comment_date\", (\n SELECT COUNT(*) \n FROM procurement_rfq_attachments \n WHERE rfq_id = \"rfqs\".\"id\" AND vendor_id = \"rfq_details\".\"vendors_id\"\n ) as \"attachment_count\", (\n SELECT COUNT(*) > 0\n FROM procurement_vendor_quotations\n WHERE rfq_id = \"rfqs\".\"id\" AND vendor_id = \"rfq_details\".\"vendors_id\"\n ) as \"has_quotation\", (\n SELECT status\n FROM procurement_vendor_quotations\n WHERE rfq_id = \"rfqs\".\"id\" AND vendor_id = \"rfq_details\".\"vendors_id\"\n ORDER BY created_at DESC LIMIT 1\n ) as \"quotation_status\", (\n SELECT total_price\n FROM procurement_vendor_quotations\n WHERE rfq_id = \"rfqs\".\"id\" AND vendor_id = \"rfq_details\".\"vendors_id\"\n ORDER BY created_at DESC LIMIT 1\n ) as \"quotation_total_price\", (\n SELECT quotation_version\n FROM procurement_vendor_quotations\n WHERE rfq_id = \"rfqs\".\"id\" AND vendor_id = \"rfq_details\".\"vendors_id\"\n ORDER BY quotation_version DESC LIMIT 1\n ) as \"quotation_version\", (\n SELECT COUNT(DISTINCT quotation_version)\n FROM procurement_vendor_quotations\n WHERE rfq_id = \"rfqs\".\"id\" AND vendor_id = \"rfq_details\".\"vendors_id\"\n ) as \"quotation_version_count\", (\n SELECT created_at\n FROM procurement_vendor_quotations\n WHERE rfq_id = \"rfqs\".\"id\" AND vendor_id = \"rfq_details\".\"vendors_id\"\n ORDER BY quotation_version DESC LIMIT 1\n ) as \"last_quotation_date\" from \"procurement_rfq_details\" \"rfq_details\" left join \"procurement_rfqs\" \"rfqs\" on \"rfq_details\".\"procurement_rfqs_id\" = \"rfqs\".\"id\" left join \"projects\" on \"rfqs\".\"project_id\" = \"projects\".\"id\" left join \"vendors\" on \"rfq_details\".\"vendors_id\" = \"vendors\".\"id\" left join \"payment_terms\" on \"rfq_details\".\"payment_terms_code\" = \"payment_terms\".\"code\" left join \"incoterms\" on \"rfq_details\".\"incoterms_code\" = \"incoterms\".\"code\" left join \"users\" \"updated_by_user\" on \"rfq_details\".\"updated_by\" = \"updated_by_user\".\"id\"", + "name": "procurement_rfq_details_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.procurement_rfqs_view": { + "columns": {}, + "definition": "select \"procurement_rfqs\".\"id\" as \"id\", \"procurement_rfqs\".\"rfq_code\" as \"rfq_code\", \"procurement_rfqs\".\"series\" as \"series\", \"procurement_rfqs\".\"rfq_sealed_yn\" as \"rfq_sealed_yn\", \"projects\".\"code\" as \"project_code\", \"projects\".\"name\" as \"project_name\", \"procurement_rfqs\".\"item_code\" as \"item_code\", \"procurement_rfqs\".\"item_name\" as \"item_name\", \"procurement_rfqs\".\"status\" as \"status\", \"procurement_rfqs\".\"pic_code\" as \"pic_code\", \"procurement_rfqs\".\"rfq_send_date\" as \"rfq_send_date\", \"procurement_rfqs\".\"due_date\" as \"due_date\", (\n SELECT MIN(submitted_at)\n FROM procurement_vendor_quotations\n WHERE rfq_id = \"procurement_rfqs\".\"id\"\n AND submitted_at IS NOT NULL\n ) as \"earliest_quotation_submitted_at\", \"created_by_user\".\"name\" as \"created_by_user_name\", \"sent_by_user\".\"name\" as \"sent_by_user_name\", \"procurement_rfqs\".\"updated_at\" as \"updated_at\", \"updated_by_user\".\"name\" as \"updated_by_user_name\", \"procurement_rfqs\".\"remark\" as \"remark\", (\n SELECT material_code \n FROM pr_items \n WHERE procurement_rfqs_id = \"procurement_rfqs\".\"id\"\n AND major_yn = true\n LIMIT 1\n ) as \"major_item_material_code\", (\n SELECT pr_no \n FROM pr_items \n WHERE procurement_rfqs_id = \"procurement_rfqs\".\"id\"\n AND major_yn = true\n LIMIT 1\n ) as \"po_no\", (\n SELECT COUNT(*) \n FROM pr_items \n WHERE procurement_rfqs_id = \"procurement_rfqs\".\"id\"\n ) as \"pr_items_count\" from \"procurement_rfqs\" left join \"projects\" on \"procurement_rfqs\".\"project_id\" = \"projects\".\"id\" left join \"users\" \"created_by_user\" on \"procurement_rfqs\".\"created_by\" = \"created_by_user\".\"id\" left join \"users\" \"updated_by_user\" on \"procurement_rfqs\".\"updated_by\" = \"updated_by_user\".\"id\" left join \"users\" \"sent_by_user\" on \"procurement_rfqs\".\"sent_by\" = \"sent_by_user\".\"id\"", + "name": "procurement_rfqs_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.attachment_revision_history": { + "columns": { + "rfq_id": { + "name": "rfq_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "rfq_code": { + "name": "rfq_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "attachment_id": { + "name": "attachment_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "attachment_type": { + "name": "attachment_type", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "serial_no": { + "name": "serial_no", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "client_revision_id": { + "name": "client_revision_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "client_revision_no": { + "name": "client_revision_no", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "client_file_name": { + "name": "client_file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "client_file_path": { + "name": "client_file_path", + "type": "varchar(512)", + "primaryKey": false, + "notNull": false + }, + "client_file_size": { + "name": "client_file_size", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "client_revision_comment": { + "name": "client_revision_comment", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "client_revision_created_at": { + "name": "client_revision_created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "is_latest_client_revision": { + "name": "is_latest_client_revision", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "total_vendor_responses": { + "name": "total_vendor_responses", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "responded_vendors": { + "name": "responded_vendors", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "pending_vendors": { + "name": "pending_vendors", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "total_response_files": { + "name": "total_response_files", + "type": "integer", + "primaryKey": false, + "notNull": false + } + }, + "definition": "\n SELECT \n br.id as rfq_id,\n br.rfq_code,\n ba.id as attachment_id,\n ba.attachment_type,\n ba.serial_no,\n \n -- 발주처 리비전 정보\n rev.id as client_revision_id,\n rev.revision_no as client_revision_no,\n rev.original_file_name as client_file_name,\n rev.file_size as client_file_size,\n rev.file_path as client_file_path,\n rev.revision_comment as client_revision_comment,\n rev.created_at as client_revision_created_at,\n rev.is_latest as is_latest_client_revision,\n \n -- 벤더 응답 통계\n COALESCE(response_stats.total_responses, 0) as total_vendor_responses,\n COALESCE(response_stats.responded_count, 0) as responded_vendors,\n COALESCE(response_stats.pending_count, 0) as pending_vendors,\n COALESCE(response_stats.total_files, 0) as total_response_files\n \n FROM b_rfqs br\n JOIN b_rfq_attachments ba ON br.id = ba.rfq_id\n JOIN b_rfq_attachment_revisions rev ON ba.id = rev.attachment_id\n LEFT JOIN (\n SELECT \n var.attachment_id,\n COUNT(*) as total_responses,\n COUNT(CASE WHEN var.response_status = 'RESPONDED' THEN 1 END) as responded_count,\n COUNT(CASE WHEN var.response_status = 'NOT_RESPONDED' THEN 1 END) as pending_count,\n COUNT(vra.id) as total_files\n FROM vendor_attachment_responses var\n LEFT JOIN vendor_response_attachments_b vra ON var.id = vra.vendor_response_id\n GROUP BY var.attachment_id\n ) response_stats ON ba.id = response_stats.attachment_id\n \n ORDER BY ba.id, rev.created_at DESC\n", + "name": "attachment_revision_history", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.attachments_with_latest_revision": { + "columns": { + "attachment_id": { + "name": "attachment_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "attachment_type": { + "name": "attachment_type", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "serial_no": { + "name": "serial_no", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "rfq_id": { + "name": "rfq_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "description": { + "name": "description", + "type": "varchar(500)", + "primaryKey": false, + "notNull": false + }, + "current_revision": { + "name": "current_revision", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "revision_id": { + "name": "revision_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "file_name": { + "name": "file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "original_file_name": { + "name": "original_file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "file_path": { + "name": "file_path", + "type": "varchar(512)", + "primaryKey": false, + "notNull": false + }, + "file_size": { + "name": "file_size", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "file_type": { + "name": "file_type", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "revision_comment": { + "name": "revision_comment", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_by": { + "name": "created_by", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_by_name": { + "name": "created_by_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + } + }, + "definition": "\n SELECT \n a.id as attachment_id,\n a.attachment_type,\n a.serial_no,\n a.rfq_id,\n a.description,\n a.current_revision,\n \n r.id as revision_id,\n r.file_name,\n r.original_file_name,\n r.file_path,\n r.file_size,\n r.file_type,\n r.revision_comment,\n \n a.created_by,\n u.name as created_by_name,\n a.created_at,\n a.updated_at\n FROM b_rfq_attachments a\n LEFT JOIN b_rfq_attachment_revisions r ON a.latest_revision_id = r.id\n LEFT JOIN users u ON a.created_by = u.id\n ", + "name": "attachments_with_latest_revision", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.b_rfqs_master": { + "columns": { + "rfq_id": { + "name": "rfq_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "rfq_code": { + "name": "rfq_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "description": { + "name": "description", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "due_date": { + "name": "due_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "pic_code": { + "name": "pic_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "pic_name": { + "name": "pic_name", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "eng_pic_name": { + "name": "eng_pic_name", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "package_no": { + "name": "package_no", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "package_name": { + "name": "package_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "project_id": { + "name": "project_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "project_code": { + "name": "project_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "project_name": { + "name": "project_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "project_type": { + "name": "project_type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "project_company": { + "name": "project_company", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "project_flag": { + "name": "project_flag", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "project_site": { + "name": "project_site", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "total_attachments": { + "name": "total_attachments", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + } + }, + "definition": "\n SELECT \n br.id as rfq_id,\n br.rfq_code,\n br.description,\n br.status,\n br.due_date,\n br.pic_code,\n br.pic_name,\n br.eng_pic_name,\n br.package_no,\n br.package_name,\n br.project_id,\n p.code as project_code,\n p.name as project_name,\n p.type as project_type,\n br.project_company,\n br.project_flag,\n br.project_site,\n COALESCE(att_count.total_attachments, 0) as total_attachments,\n br.created_at,\n br.updated_at\n FROM b_rfqs br\n LEFT JOIN projects p ON br.project_id = p.id\n LEFT JOIN (\n SELECT rfq_id, COUNT(*) as total_attachments\n FROM b_rfq_attachments\n GROUP BY rfq_id\n ) att_count ON br.id = att_count.rfq_id\n", + "name": "b_rfqs_master", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.final_rfq_detail": { + "columns": { + "rfq_id": { + "name": "rfq_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "rfq_code": { + "name": "rfq_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "rfq_status": { + "name": "rfq_status", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "final_rfq_id": { + "name": "final_rfq_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "final_rfq_status": { + "name": "final_rfq_status", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "vendor_code": { + "name": "vendor_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "vendor_name": { + "name": "vendor_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "vendor_country": { + "name": "vendor_country", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "vendor_business_size": { + "name": "vendor_business_size", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "due_date": { + "name": "due_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "valid_date": { + "name": "valid_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "delivery_date": { + "name": "delivery_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "incoterms_code": { + "name": "incoterms_code", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "incoterms_description": { + "name": "incoterms_description", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "payment_terms_code": { + "name": "payment_terms_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "payment_terms_description": { + "name": "payment_terms_description", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "currency": { + "name": "currency", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "tax_code": { + "name": "tax_code", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "place_of_shipping": { + "name": "place_of_shipping", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "place_of_destination": { + "name": "place_of_destination", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "short_list": { + "name": "short_list", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "return_yn": { + "name": "return_yn", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "cp_request_yn": { + "name": "cp_request_yn", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "prject_gtc_yn": { + "name": "prject_gtc_yn", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "firsttime_yn": { + "name": "firsttime_yn", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "material_price_related_yn": { + "name": "material_price_related_yn", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "return_revision": { + "name": "return_revision", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "gtc": { + "name": "gtc", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "gtc_valid_date": { + "name": "gtc_valid_date", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "classification": { + "name": "classification", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "sparepart": { + "name": "sparepart", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "remark": { + "name": "remark", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "vendor_remark": { + "name": "vendor_remark", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + } + }, + "definition": "\n SELECT \n br.id as rfq_id,\n br.rfq_code,\n br.status as rfq_status,\n fr.id as final_rfq_id,\n fr.final_rfq_status,\n fr.vendor_id,\n v.vendor_code,\n v.vendor_name,\n v.country as vendor_country,\n v.business_size as vendor_business_size,\n fr.due_date,\n fr.valid_date,\n fr.delivery_date,\n fr.incoterms_code,\n inc.description as incoterms_description,\n fr.payment_terms_code,\n pt.description as payment_terms_description,\n fr.currency,\n fr.tax_code,\n fr.place_of_shipping,\n fr.place_of_destination,\n fr.short_list,\n fr.return_yn,\n fr.cp_request_yn,\n fr.prject_gtc_yn,\n fr.firsttime_yn,\n fr.material_price_related_yn,\n fr.return_revision,\n fr.gtc,\n fr.gtc_valid_date,\n fr.classification,\n fr.sparepart,\n fr.remark,\n fr.vendor_remark,\n fr.created_at,\n fr.updated_at\n FROM b_rfqs br\n JOIN final_rfq fr ON br.id = fr.rfq_id\n LEFT JOIN vendors v ON fr.vendor_id = v.id\n LEFT JOIN incoterms inc ON fr.incoterms_code = inc.code\n LEFT JOIN payment_terms pt ON fr.payment_terms_code = pt.code\n", + "name": "final_rfq_detail", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.initial_rfq_detail": { + "columns": { + "rfq_id": { + "name": "rfq_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "rfq_code": { + "name": "rfq_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "rfq_status": { + "name": "rfq_status", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "initial_rfq_id": { + "name": "initial_rfq_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "initial_rfq_status": { + "name": "initial_rfq_status", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "vendor_code": { + "name": "vendor_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "vendor_name": { + "name": "vendor_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "vendor_category": { + "name": "vendor_category", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "vendor_country": { + "name": "vendor_country", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "vendor_business_size": { + "name": "vendor_business_size", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "due_date": { + "name": "due_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "valid_date": { + "name": "valid_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "incoterms_code": { + "name": "incoterms_code", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "incoterms_description": { + "name": "incoterms_description", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "short_list": { + "name": "short_list", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "return_yn": { + "name": "return_yn", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "cp_request_yn": { + "name": "cp_request_yn", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "prject_gtc_yn": { + "name": "prject_gtc_yn", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "return_revision": { + "name": "return_revision", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "rfq_revision": { + "name": "rfq_revision", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "gtc": { + "name": "gtc", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "gtc_valid_date": { + "name": "gtc_valid_date", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "classification": { + "name": "classification", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "sparepart": { + "name": "sparepart", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + } + }, + "definition": "\n SELECT \n br.id as rfq_id,\n br.rfq_code,\n br.status as rfq_status,\n ir.id as initial_rfq_id,\n ir.initial_rfq_status,\n ir.vendor_id,\n v.vendor_code,\n v.vendor_name,\n v.country as vendor_country,\n v.business_size as vendor_business_size,\n v.vendor_category as vendor_category,\n ir.due_date,\n ir.valid_date,\n ir.incoterms_code,\n inc.description as incoterms_description,\n ir.short_list,\n ir.return_yn,\n ir.cp_request_yn,\n ir.prject_gtc_yn,\n ir.return_revision,\n ir.rfq_revision,\n ir.gtc,\n ir.gtc_valid_date,\n ir.classification,\n ir.sparepart,\n ir.created_at,\n ir.updated_at\n FROM b_rfqs br\n JOIN initial_rfq ir ON br.id = ir.rfq_id\n LEFT JOIN vendors_with_types v ON ir.vendor_id = v.id\n LEFT JOIN incoterms inc ON ir.incoterms_code = inc.code\n", + "name": "initial_rfq_detail", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.rfq_dashboard": { + "columns": { + "rfq_id": { + "name": "rfq_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "rfq_code": { + "name": "rfq_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "description": { + "name": "description", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "due_date": { + "name": "due_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "project_code": { + "name": "project_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "project_name": { + "name": "project_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "package_no": { + "name": "package_no", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "package_name": { + "name": "package_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "pic_code": { + "name": "pic_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "pic_name": { + "name": "pic_name", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "eng_pic_name": { + "name": "eng_pic_name", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "project_company": { + "name": "project_company", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "project_flag": { + "name": "project_flag", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "project_site": { + "name": "project_site", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "total_attachments": { + "name": "total_attachments", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "initial_vendor_count": { + "name": "initial_vendor_count", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "final_vendor_count": { + "name": "final_vendor_count", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "initial_response_rate": { + "name": "initial_response_rate", + "type": "numeric(5, 2)", + "primaryKey": false, + "notNull": false + }, + "final_response_rate": { + "name": "final_response_rate", + "type": "numeric(5, 2)", + "primaryKey": false, + "notNull": false + }, + "overall_progress": { + "name": "overall_progress", + "type": "numeric(5, 2)", + "primaryKey": false, + "notNull": false + }, + "days_to_deadline": { + "name": "days_to_deadline", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "remark": { + "name": "remark", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "updated_by_name": { + "name": "updated_by_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "updated_by_email": { + "name": "updated_by_email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + } + }, + "definition": "\n -- ② SELECT 절 확장 -------------------------------------------\n SELECT\n br.id AS rfq_id,\n br.rfq_code,\n br.description,\n br.status,\n br.due_date,\n p.code AS project_code,\n p.name AS project_name,\n br.package_no,\n br.package_name,\n br.pic_code,\n br.pic_name,\n br.eng_pic_name,\n br.project_company,\n br.project_flag,\n br.project_site,\n br.remark,\n \n -- 첨부/벤더 요약 -----------------------\n COALESCE(att_count.total_attachments, 0) AS total_attachments,\n COALESCE(init_summary.vendor_count, 0) AS initial_vendor_count,\n COALESCE(final_summary.vendor_count, 0) AS final_vendor_count,\n COALESCE(init_summary.avg_response_rate, 0) AS initial_response_rate,\n COALESCE(final_summary.avg_response_rate, 0) AS final_response_rate,\n \n -- 진행률·마감까지 일수 --------------\n CASE \n WHEN br.status = 'DRAFT' THEN 0\n WHEN br.status = 'Doc. Received' THEN 10\n WHEN br.status = 'PIC Assigned' THEN 20\n WHEN br.status = 'Doc. Confirmed' THEN 30\n WHEN br.status = 'Init. RFQ Sent' THEN 40\n WHEN br.status = 'Init. RFQ Answered' THEN 50\n WHEN br.status = 'TBE started' THEN 60\n WHEN br.status = 'TBE finished' THEN 70\n WHEN br.status = 'Final RFQ Sent' THEN 80\n WHEN br.status = 'Quotation Received' THEN 90\n WHEN br.status = 'Vendor Selected' THEN 100\n ELSE 0\n END AS overall_progress,\n (br.due_date - CURRENT_DATE) AS days_to_deadline,\n \n br.created_at,\n br.updated_at,\n \n -- 💡 추가되는 컬럼 -------------------\n upd.name AS updated_by_name,\n upd.email AS updated_by_email\n FROM b_rfqs br\n LEFT JOIN projects p ON br.project_id = p.id\n \n -- ③ 사용자 정보 조인 --------------------\n LEFT JOIN users upd ON br.updated_by = upd.id\n \n -- (나머지 이미 있던 JOIN 들은 그대로) -----\n LEFT JOIN (\n SELECT rfq_id, COUNT(*) AS total_attachments\n FROM b_rfq_attachments\n GROUP BY rfq_id\n ) att_count ON br.id = att_count.rfq_id\n \n LEFT JOIN (\n SELECT \n rfq_id, \n COUNT(DISTINCT vendor_id) AS vendor_count,\n AVG(response_rate) AS avg_response_rate\n FROM vendor_response_summary\n WHERE rfq_type = 'INITIAL'\n GROUP BY rfq_id\n ) init_summary ON br.id = init_summary.rfq_id\n \n LEFT JOIN (\n SELECT \n rfq_id, \n COUNT(DISTINCT vendor_id) AS vendor_count,\n AVG(response_rate) AS avg_response_rate\n FROM vendor_response_summary\n WHERE rfq_type = 'FINAL'\n GROUP BY rfq_id\n ) final_summary ON br.id = final_summary.rfq_id\n ", + "name": "rfq_dashboard", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.rfq_progress_summary": { + "columns": { + "rfq_id": { + "name": "rfq_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "rfq_code": { + "name": "rfq_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "rfq_status": { + "name": "rfq_status", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "due_date": { + "name": "due_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "days_to_deadline": { + "name": "days_to_deadline", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "total_attachments": { + "name": "total_attachments", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "attachments_with_multiple_revisions": { + "name": "attachments_with_multiple_revisions", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "total_client_revisions": { + "name": "total_client_revisions", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "initial_vendor_count": { + "name": "initial_vendor_count", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "initial_total_responses": { + "name": "initial_total_responses", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "initial_responded_count": { + "name": "initial_responded_count", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "initial_up_to_date_count": { + "name": "initial_up_to_date_count", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "initial_version_mismatch_count": { + "name": "initial_version_mismatch_count", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "initial_response_rate": { + "name": "initial_response_rate", + "type": "numeric(5, 2)", + "primaryKey": false, + "notNull": false + }, + "initial_version_match_rate": { + "name": "initial_version_match_rate", + "type": "numeric(5, 2)", + "primaryKey": false, + "notNull": false + }, + "final_vendor_count": { + "name": "final_vendor_count", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "final_total_responses": { + "name": "final_total_responses", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "final_responded_count": { + "name": "final_responded_count", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "final_up_to_date_count": { + "name": "final_up_to_date_count", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "final_version_mismatch_count": { + "name": "final_version_mismatch_count", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "final_response_rate": { + "name": "final_response_rate", + "type": "numeric(5, 2)", + "primaryKey": false, + "notNull": false + }, + "final_version_match_rate": { + "name": "final_version_match_rate", + "type": "numeric(5, 2)", + "primaryKey": false, + "notNull": false + }, + "total_response_files": { + "name": "total_response_files", + "type": "integer", + "primaryKey": false, + "notNull": false + } + }, + "definition": "\n SELECT \n br.id as rfq_id,\n br.rfq_code,\n br.status as rfq_status,\n br.due_date,\n (br.due_date - CURRENT_DATE) as days_to_deadline,\n \n -- 첨부파일 통계\n attachment_stats.total_attachments,\n attachment_stats.attachments_with_multiple_revisions,\n attachment_stats.total_client_revisions,\n \n -- Initial RFQ 통계\n COALESCE(initial_stats.vendor_count, 0) as initial_vendor_count,\n COALESCE(initial_stats.total_responses, 0) as initial_total_responses,\n COALESCE(initial_stats.responded_count, 0) as initial_responded_count,\n COALESCE(initial_stats.up_to_date_count, 0) as initial_up_to_date_count,\n COALESCE(initial_stats.version_mismatch_count, 0) as initial_version_mismatch_count,\n COALESCE(initial_stats.response_rate, 0) as initial_response_rate,\n COALESCE(initial_stats.version_match_rate, 0) as initial_version_match_rate,\n \n -- Final RFQ 통계\n COALESCE(final_stats.vendor_count, 0) as final_vendor_count,\n COALESCE(final_stats.total_responses, 0) as final_total_responses,\n COALESCE(final_stats.responded_count, 0) as final_responded_count,\n COALESCE(final_stats.up_to_date_count, 0) as final_up_to_date_count,\n COALESCE(final_stats.version_mismatch_count, 0) as final_version_mismatch_count,\n COALESCE(final_stats.response_rate, 0) as final_response_rate,\n COALESCE(final_stats.version_match_rate, 0) as final_version_match_rate,\n \n COALESCE(file_stats.total_files, 0) as total_response_files\n \n FROM b_rfqs br\n LEFT JOIN (\n SELECT \n ba.rfq_id,\n COUNT(*) as total_attachments,\n COUNT(CASE WHEN rev_count.total_revisions > 1 THEN 1 END) as attachments_with_multiple_revisions,\n SUM(rev_count.total_revisions) as total_client_revisions\n FROM b_rfq_attachments ba\n LEFT JOIN (\n SELECT \n attachment_id,\n COUNT(*) as total_revisions\n FROM b_rfq_attachment_revisions\n GROUP BY attachment_id\n ) rev_count ON ba.id = rev_count.attachment_id\n GROUP BY ba.rfq_id\n ) attachment_stats ON br.id = attachment_stats.rfq_id\n \n LEFT JOIN (\n SELECT \n br.id as rfq_id,\n COUNT(DISTINCT var.vendor_id) as vendor_count,\n COUNT(*) as total_responses,\n COUNT(CASE WHEN var.response_status = 'RESPONDED' THEN 1 END) as responded_count,\n COUNT(CASE WHEN vrd.effective_status = 'UP_TO_DATE' THEN 1 END) as up_to_date_count,\n COUNT(CASE WHEN vrd.effective_status = 'VERSION_MISMATCH' THEN 1 END) as version_mismatch_count,\n ROUND(\n COUNT(CASE WHEN var.response_status = 'RESPONDED' THEN 1 END) * 100.0 / \n NULLIF(COUNT(*), 0), 2\n ) as response_rate,\n ROUND(\n COUNT(CASE WHEN vrd.effective_status = 'UP_TO_DATE' THEN 1 END) * 100.0 / \n NULLIF(COUNT(CASE WHEN var.response_status = 'RESPONDED' THEN 1 END), 0), 2\n ) as version_match_rate\n FROM b_rfqs br\n JOIN vendor_response_detail vrd ON br.id = vrd.rfq_id\n JOIN vendor_attachment_responses var ON vrd.response_id = var.id\n WHERE var.rfq_type = 'INITIAL'\n GROUP BY br.id\n ) initial_stats ON br.id = initial_stats.rfq_id\n \n LEFT JOIN (\n SELECT \n br.id as rfq_id,\n COUNT(DISTINCT var.vendor_id) as vendor_count,\n COUNT(*) as total_responses,\n COUNT(CASE WHEN var.response_status = 'RESPONDED' THEN 1 END) as responded_count,\n COUNT(CASE WHEN vrd.effective_status = 'UP_TO_DATE' THEN 1 END) as up_to_date_count,\n COUNT(CASE WHEN vrd.effective_status = 'VERSION_MISMATCH' THEN 1 END) as version_mismatch_count,\n ROUND(\n COUNT(CASE WHEN var.response_status = 'RESPONDED' THEN 1 END) * 100.0 / \n NULLIF(COUNT(*), 0), 2\n ) as response_rate,\n ROUND(\n COUNT(CASE WHEN vrd.effective_status = 'UP_TO_DATE' THEN 1 END) * 100.0 / \n NULLIF(COUNT(CASE WHEN var.response_status = 'RESPONDED' THEN 1 END), 0), 2\n ) as version_match_rate\n FROM b_rfqs br\n JOIN vendor_response_detail vrd ON br.id = vrd.rfq_id\n JOIN vendor_attachment_responses var ON vrd.response_id = var.id\n WHERE var.rfq_type = 'FINAL'\n GROUP BY br.id\n ) final_stats ON br.id = final_stats.rfq_id\n \n LEFT JOIN (\n SELECT \n br.id as rfq_id,\n COUNT(vra.id) as total_files\n FROM b_rfqs br\n JOIN b_rfq_attachments ba ON br.id = ba.rfq_id\n JOIN vendor_attachment_responses var ON ba.id = var.attachment_id\n LEFT JOIN vendor_response_attachments_b vra ON var.id = vra.vendor_response_id\n GROUP BY br.id\n ) file_stats ON br.id = file_stats.rfq_id\n", + "name": "rfq_progress_summary", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.vendor_response_attachments_enhanced": { + "columns": { + "response_attachment_id": { + "name": "response_attachment_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "vendor_response_id": { + "name": "vendor_response_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "file_name": { + "name": "file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "original_file_name": { + "name": "original_file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "file_path": { + "name": "file_path", + "type": "varchar(512)", + "primaryKey": false, + "notNull": false + }, + "file_size": { + "name": "file_size", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "file_type": { + "name": "file_type", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "description": { + "name": "description", + "type": "varchar(500)", + "primaryKey": false, + "notNull": false + }, + "uploaded_at": { + "name": "uploaded_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "attachment_id": { + "name": "attachment_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "rfq_type": { + "name": "rfq_type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "rfq_record_id": { + "name": "rfq_record_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "response_status": { + "name": "response_status", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "current_revision": { + "name": "current_revision", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "responded_revision": { + "name": "responded_revision", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "response_comment": { + "name": "response_comment", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "vendor_comment": { + "name": "vendor_comment", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "revision_request_comment": { + "name": "revision_request_comment", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "requested_at": { + "name": "requested_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "responded_at": { + "name": "responded_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "revision_requested_at": { + "name": "revision_requested_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "attachment_type": { + "name": "attachment_type", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "serial_no": { + "name": "serial_no", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "rfq_id": { + "name": "rfq_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "vendor_code": { + "name": "vendor_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "vendor_name": { + "name": "vendor_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "vendor_country": { + "name": "vendor_country", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "latest_client_revision_id": { + "name": "latest_client_revision_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "latest_client_revision_no": { + "name": "latest_client_revision_no", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "latest_client_file_name": { + "name": "latest_client_file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "is_version_matched": { + "name": "is_version_matched", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "version_lag": { + "name": "version_lag", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "needs_update": { + "name": "needs_update", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "file_sequence": { + "name": "file_sequence", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "is_latest_response_file": { + "name": "is_latest_response_file", + "type": "boolean", + "primaryKey": false, + "notNull": false + } + }, + "definition": "\n SELECT \n vra.id as response_attachment_id,\n vra.vendor_response_id,\n vra.file_name,\n vra.original_file_name,\n vra.file_path,\n vra.file_size,\n vra.file_type,\n vra.description,\n vra.uploaded_at,\n \n -- 응답 기본 정보\n var.attachment_id,\n var.vendor_id,\n var.rfq_type,\n var.rfq_record_id,\n var.response_status,\n var.current_revision,\n var.responded_revision,\n \n -- 코멘트 (새로 추가된 필드 포함)\n var.response_comment,\n var.vendor_comment,\n var.revision_request_comment,\n \n -- 날짜 (새로 추가된 필드 포함)\n var.requested_at,\n var.responded_at,\n var.revision_requested_at,\n \n -- 첨부파일 정보\n ba.attachment_type,\n ba.serial_no,\n ba.rfq_id,\n \n -- 벤더 정보\n v.vendor_code,\n v.vendor_name,\n v.country as vendor_country,\n \n -- 발주처 현재 리비전 정보\n latest_rev.id as latest_client_revision_id,\n latest_rev.revision_no as latest_client_revision_no,\n latest_rev.original_file_name as latest_client_file_name,\n \n -- 리비전 비교\n CASE \n WHEN var.responded_revision = ba.current_revision THEN true \n ELSE false \n END as is_version_matched,\n \n -- 버전 차이 계산 (Rev.0, Rev.1 형태 가정)\n CASE \n WHEN var.responded_revision IS NULL THEN NULL\n WHEN ba.current_revision IS NULL THEN NULL\n ELSE CAST(SUBSTRING(ba.current_revision FROM '[0-9]+') AS INTEGER) - \n CAST(SUBSTRING(var.responded_revision FROM '[0-9]+') AS INTEGER)\n END as version_lag,\n \n CASE \n WHEN var.response_status = 'RESPONDED' \n AND var.responded_revision != ba.current_revision THEN true \n ELSE false \n END as needs_update,\n \n -- 파일 순서\n ROW_NUMBER() OVER (\n PARTITION BY var.id \n ORDER BY vra.uploaded_at DESC\n ) as file_sequence,\n \n -- 최신 응답 파일 여부\n CASE \n WHEN ROW_NUMBER() OVER (\n PARTITION BY var.id \n ORDER BY vra.uploaded_at DESC\n ) = 1 THEN true \n ELSE false \n END as is_latest_response_file\n \n FROM vendor_response_attachments_b vra\n JOIN vendor_attachment_responses var ON vra.vendor_response_id = var.id\n JOIN b_rfq_attachments ba ON var.attachment_id = ba.id\n LEFT JOIN vendors v ON var.vendor_id = v.id\n LEFT JOIN b_rfq_attachment_revisions latest_rev ON ba.latest_revision_id = latest_rev.id\n", + "name": "vendor_response_attachments_enhanced", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.vendor_response_detail": { + "columns": { + "response_id": { + "name": "response_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "rfq_id": { + "name": "rfq_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "rfq_code": { + "name": "rfq_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "rfq_type": { + "name": "rfq_type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "rfq_record_id": { + "name": "rfq_record_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "attachment_id": { + "name": "attachment_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "attachment_type": { + "name": "attachment_type", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "serial_no": { + "name": "serial_no", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "attachment_description": { + "name": "attachment_description", + "type": "varchar(500)", + "primaryKey": false, + "notNull": false + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "vendor_code": { + "name": "vendor_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "vendor_name": { + "name": "vendor_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "vendor_country": { + "name": "vendor_country", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "response_status": { + "name": "response_status", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "current_revision": { + "name": "current_revision", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "responded_revision": { + "name": "responded_revision", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "response_comment": { + "name": "response_comment", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "vendor_comment": { + "name": "vendor_comment", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "revision_request_comment": { + "name": "revision_request_comment", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "requested_at": { + "name": "requested_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "responded_at": { + "name": "responded_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "revision_requested_at": { + "name": "revision_requested_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "latest_client_revision_no": { + "name": "latest_client_revision_no", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "latest_client_file_name": { + "name": "latest_client_file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "latest_client_file_size": { + "name": "latest_client_file_size", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "latest_client_revision_comment": { + "name": "latest_client_revision_comment", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_version_matched": { + "name": "is_version_matched", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "version_lag": { + "name": "version_lag", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "needs_update": { + "name": "needs_update", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "has_multiple_revisions": { + "name": "has_multiple_revisions", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "total_response_files": { + "name": "total_response_files", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "latest_response_file_name": { + "name": "latest_response_file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "latest_response_file_size": { + "name": "latest_response_file_size", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "latest_response_uploaded_at": { + "name": "latest_response_uploaded_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "effective_status": { + "name": "effective_status", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + } + }, + "definition": "\n SELECT \n var.id as response_id,\n ba.rfq_id,\n br.rfq_code,\n var.rfq_type,\n var.rfq_record_id,\n \n -- 첨부파일 정보\n ba.id as attachment_id,\n ba.attachment_type,\n ba.serial_no,\n ba.description as attachment_description,\n \n -- 벤더 정보\n v.id as vendor_id,\n v.vendor_code,\n v.vendor_name,\n v.country as vendor_country,\n \n -- 응답 상태\n var.response_status,\n var.current_revision,\n var.responded_revision,\n \n -- 코멘트 (새로 추가된 필드 포함)\n var.response_comment,\n var.vendor_comment,\n var.revision_request_comment,\n \n -- 날짜 (새로 추가된 필드 포함)\n var.requested_at,\n var.responded_at,\n var.revision_requested_at,\n \n -- 발주처 최신 리비전\n latest_rev.revision_no as latest_client_revision_no,\n latest_rev.original_file_name as latest_client_file_name,\n latest_rev.file_size as latest_client_file_size,\n latest_rev.revision_comment as latest_client_revision_comment,\n \n -- 리비전 분석\n CASE \n WHEN var.responded_revision = ba.current_revision THEN true \n ELSE false \n END as is_version_matched,\n \n CASE \n WHEN var.responded_revision IS NULL OR ba.current_revision IS NULL THEN NULL\n ELSE CAST(SUBSTRING(ba.current_revision FROM '[0-9]+') AS INTEGER) - \n CAST(SUBSTRING(var.responded_revision FROM '[0-9]+') AS INTEGER)\n END as version_lag,\n \n CASE \n WHEN var.response_status = 'RESPONDED' \n AND var.responded_revision != ba.current_revision THEN true \n ELSE false \n END as needs_update,\n \n CASE \n WHEN revision_count.total_revisions > 1 THEN true \n ELSE false \n END as has_multiple_revisions,\n \n -- 응답 파일 정보\n COALESCE(file_stats.total_files, 0) as total_response_files,\n file_stats.latest_file_name as latest_response_file_name,\n file_stats.latest_file_size as latest_response_file_size,\n file_stats.latest_uploaded_at as latest_response_uploaded_at,\n \n -- 효과적인 상태\n CASE \n WHEN var.response_status = 'NOT_RESPONDED' THEN 'NOT_RESPONDED'\n WHEN var.response_status = 'WAIVED' THEN 'WAIVED'\n WHEN var.response_status = 'REVISION_REQUESTED' THEN 'REVISION_REQUESTED'\n WHEN var.response_status = 'RESPONDED' AND var.responded_revision = ba.current_revision THEN 'UP_TO_DATE'\n WHEN var.response_status = 'RESPONDED' AND var.responded_revision != ba.current_revision THEN 'VERSION_MISMATCH'\n ELSE var.response_status\n END as effective_status\n \n FROM vendor_attachment_responses var\n JOIN b_rfq_attachments ba ON var.attachment_id = ba.id\n JOIN b_rfqs br ON ba.rfq_id = br.id\n LEFT JOIN vendors v ON var.vendor_id = v.id\n LEFT JOIN b_rfq_attachment_revisions latest_rev ON ba.latest_revision_id = latest_rev.id\n LEFT JOIN (\n SELECT \n attachment_id,\n COUNT(*) as total_revisions\n FROM b_rfq_attachment_revisions\n GROUP BY attachment_id\n ) revision_count ON ba.id = revision_count.attachment_id\n LEFT JOIN (\n SELECT \n vendor_response_id,\n COUNT(*) as total_files,\n MAX(original_file_name) as latest_file_name,\n MAX(file_size) as latest_file_size,\n MAX(uploaded_at) as latest_uploaded_at\n FROM vendor_response_attachments_b\n GROUP BY vendor_response_id\n ) file_stats ON var.id = file_stats.vendor_response_id\n", + "name": "vendor_response_detail", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.vendor_response_summary": { + "columns": { + "rfq_id": { + "name": "rfq_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "rfq_code": { + "name": "rfq_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "rfq_status": { + "name": "rfq_status", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "vendor_code": { + "name": "vendor_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "vendor_name": { + "name": "vendor_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "vendor_country": { + "name": "vendor_country", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "vendor_business_size": { + "name": "vendor_business_size", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "rfq_type": { + "name": "rfq_type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "total_attachments": { + "name": "total_attachments", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "responded_count": { + "name": "responded_count", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "pending_count": { + "name": "pending_count", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "waived_count": { + "name": "waived_count", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "revision_requested_count": { + "name": "revision_requested_count", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "response_rate": { + "name": "response_rate", + "type": "numeric(5, 2)", + "primaryKey": false, + "notNull": false + }, + "completion_rate": { + "name": "completion_rate", + "type": "numeric(5, 2)", + "primaryKey": false, + "notNull": false + } + }, + "definition": "\n SELECT \n br.id as rfq_id,\n br.rfq_code,\n br.status as rfq_status,\n v.id as vendor_id,\n v.vendor_code,\n v.vendor_name,\n v.country as vendor_country,\n v.business_size as vendor_business_size,\n var.rfq_type,\n COUNT(var.id) as total_attachments,\n COUNT(CASE WHEN var.response_status = 'RESPONDED' THEN 1 END) as responded_count,\n COUNT(CASE WHEN var.response_status = 'NOT_RESPONDED' THEN 1 END) as pending_count,\n COUNT(CASE WHEN var.response_status = 'WAIVED' THEN 1 END) as waived_count,\n COUNT(CASE WHEN var.response_status = 'REVISION_REQUESTED' THEN 1 END) as revision_requested_count,\n ROUND(\n (COUNT(CASE WHEN var.response_status = 'RESPONDED' THEN 1 END) * 100.0 / \n NULLIF(COUNT(CASE WHEN var.response_status != 'WAIVED' THEN 1 END), 0)), \n 2\n ) as response_rate,\n ROUND(\n ((COUNT(CASE WHEN var.response_status = 'RESPONDED' THEN 1 END) + \n COUNT(CASE WHEN var.response_status = 'WAIVED' THEN 1 END)) * 100.0 / COUNT(var.id)), \n 2\n ) as completion_rate\n FROM b_rfqs br\n JOIN b_rfq_attachments bra ON br.id = bra.rfq_id\n JOIN vendor_attachment_responses var ON bra.id = var.attachment_id\n JOIN vendors v ON var.vendor_id = v.id\n GROUP BY br.id, br.rfq_code, br.status, v.id, v.vendor_code, v.vendor_name, v.country, v.business_size, var.rfq_type\n", + "name": "vendor_response_summary", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.tech_vendor_detail_view": { + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "vendor_name": { + "name": "vendor_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "vendor_code": { + "name": "vendor_code", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "tax_id": { + "name": "tax_id", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "address": { + "name": "address", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "country": { + "name": "country", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "country_eng": { + "name": "country_eng", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "country_fab": { + "name": "country_fab", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "agent_name": { + "name": "agent_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "agent_phone": { + "name": "agent_phone", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "agent_email": { + "name": "agent_email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "phone": { + "name": "phone", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "email": { + "name": "email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "website": { + "name": "website", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "default": "'ACTIVE'" + }, + "tech_vendor_type": { + "name": "tech_vendor_type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "representative_name": { + "name": "representative_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "representative_email": { + "name": "representative_email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "representative_phone": { + "name": "representative_phone", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "representative_birth": { + "name": "representative_birth", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "definition": "select \"id\", \"vendor_name\", \"vendor_code\", \"tax_id\", \"address\", \"country\", \"country_eng\", \"country_fab\", \"agent_name\", \"agent_phone\", \"agent_email\", \"phone\", \"email\", \"website\", \"status\", \"tech_vendor_type\", \"representative_name\", \"representative_email\", \"representative_phone\", \"representative_birth\", \"created_at\", \"updated_at\", \n (SELECT COALESCE(\n json_agg(\n json_build_object(\n 'id', c.id,\n 'contactName', c.contact_name,\n 'contactPosition', c.contact_position,\n 'contactTitle', c.contact_title,\n 'contactEmail', c.contact_email,\n 'contactPhone', c.contact_phone,\n 'isPrimary', c.is_primary\n )\n ),\n '[]'::json\n )\n FROM tech_vendor_contacts c\n WHERE c.vendor_id = tech_vendors.id)\n as \"contacts\", \n (SELECT COALESCE(\n json_agg(\n json_build_object(\n 'id', a.id,\n 'fileName', a.file_name,\n 'filePath', a.file_path,\n 'attachmentType', a.attachment_type,\n 'createdAt', a.created_at\n )\n ORDER BY a.attachment_type, a.created_at DESC\n ),\n '[]'::json\n )\n FROM tech_vendor_attachments a\n WHERE a.vendor_id = tech_vendors.id)\n as \"attachments\", \n (SELECT COUNT(*)\n FROM tech_vendor_attachments a\n WHERE a.vendor_id = tech_vendors.id)\n as \"attachment_count\", \n (SELECT COUNT(*) \n FROM vendor_contacts c\n WHERE c.vendor_id = tech_vendors.id)\n as \"contact_count\", \n (SELECT COUNT(*) \n FROM tech_vendor_possible_items i\n WHERE i.vendor_id = tech_vendors.id)\n as \"item_count\" from \"tech_vendors\"", + "name": "tech_vendor_detail_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.esg_evaluations_view": { + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "serial_number": { + "name": "serial_number", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "category": { + "name": "category", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "inspection_item": { + "name": "inspection_item", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "definition": "select \"esg_evaluations\".\"id\", \"esg_evaluations\".\"serial_number\", \"esg_evaluations\".\"category\", \"esg_evaluations\".\"inspection_item\", \"esg_evaluations\".\"is_active\", \"esg_evaluations\".\"created_at\", \"esg_evaluations\".\"updated_at\", count(distinct \"esg_evaluation_items\".\"id\") as \"total_evaluation_items\", count(\"esg_answer_options\".\"id\") as \"total_answer_options\", coalesce(sum(\"esg_answer_options\".\"score\"), 0) as \"max_possible_score\", \n (\n SELECT array_agg(evaluation_item order by order_index) \n FROM esg_evaluation_items \n WHERE esg_evaluation_id = \"esg_evaluations\".\"id\" \n AND is_active = true \n AND evaluation_item is not null\n )\n as \"evaluation_items_list\" from \"esg_evaluations\" left join \"esg_evaluation_items\" on \"esg_evaluations\".\"id\" = \"esg_evaluation_items\".\"esg_evaluation_id\" AND \"esg_evaluation_items\".\"is_active\" = true left join \"esg_answer_options\" on \"esg_evaluation_items\".\"id\" = \"esg_answer_options\".\"esg_evaluation_item_id\" AND \"esg_answer_options\".\"is_active\" = true group by \"esg_evaluations\".\"id\", \"esg_evaluations\".\"serial_number\", \"esg_evaluations\".\"category\", \"esg_evaluations\".\"inspection_item\", \"esg_evaluations\".\"is_active\", \"esg_evaluations\".\"created_at\", \"esg_evaluations\".\"updated_at\"", + "name": "esg_evaluations_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.evaluation_targets_with_departments": { + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "evaluation_year": { + "name": "evaluation_year", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "division": { + "name": "division", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true + }, + "vendor_code": { + "name": "vendor_code", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "vendor_name": { + "name": "vendor_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "domestic_foreign": { + "name": "domestic_foreign", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true + }, + "material_type": { + "name": "material_type", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "default": "'PENDING'" + }, + "consensus_status": { + "name": "consensus_status", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "admin_comment": { + "name": "admin_comment", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "consolidated_comment": { + "name": "consolidated_comment", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "confirmed_at": { + "name": "confirmed_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "confirmed_by": { + "name": "confirmed_by", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "ld_claim_count": { + "name": "ld_claim_count", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "ld_claim_amount": { + "name": "ld_claim_amount", + "type": "numeric(15, 2)", + "primaryKey": false, + "notNull": false, + "default": "'0'" + }, + "ld_claim_currency": { + "name": "ld_claim_currency", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false, + "default": "'KRW'" + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "definition": "select \"evaluation_targets\".\"id\", \"evaluation_targets\".\"evaluation_year\", \"evaluation_targets\".\"division\", \"evaluation_targets\".\"vendor_code\", \"evaluation_targets\".\"vendor_name\", \"evaluation_targets\".\"domestic_foreign\", \"evaluation_targets\".\"material_type\", \"evaluation_targets\".\"status\", \"evaluation_targets\".\"consensus_status\", \"evaluation_targets\".\"admin_comment\", \"evaluation_targets\".\"consolidated_comment\", \"evaluation_targets\".\"confirmed_at\", \"evaluation_targets\".\"confirmed_by\", \"evaluation_targets\".\"ld_claim_count\", \"evaluation_targets\".\"ld_claim_amount\", \"evaluation_targets\".\"ld_claim_currency\", \"evaluation_targets\".\"created_at\", \"evaluation_targets\".\"updated_at\", order_reviewer.name as \"order_reviewer_name\", order_reviewer.email as \"order_reviewer_email\", order_etr.department_name_from as \"order_department_name\", order_review.is_approved as \"order_is_approved\", order_review.reviewed_at as \"order_reviewed_at\", procurement_reviewer.name as \"procurement_reviewer_name\", procurement_reviewer.email as \"procurement_reviewer_email\", procurement_etr.department_name_from as \"procurement_department_name\", procurement_review.is_approved as \"procurement_is_approved\", procurement_review.reviewed_at as \"procurement_reviewed_at\", quality_reviewer.name as \"quality_reviewer_name\", quality_reviewer.email as \"quality_reviewer_email\", quality_etr.department_name_from as \"quality_department_name\", quality_review.is_approved as \"quality_is_approved\", quality_review.reviewed_at as \"quality_reviewed_at\", design_reviewer.name as \"design_reviewer_name\", design_reviewer.email as \"design_reviewer_email\", design_etr.department_name_from as \"design_department_name\", design_review.is_approved as \"design_is_approved\", design_review.reviewed_at as \"design_reviewed_at\", cs_reviewer.name as \"cs_reviewer_name\", cs_reviewer.email as \"cs_reviewer_email\", cs_etr.department_name_from as \"cs_department_name\", cs_review.is_approved as \"cs_is_approved\", cs_review.reviewed_at as \"cs_reviewed_at\" from \"evaluation_targets\" left join evaluation_target_reviewers order_etr on \"evaluation_targets\".\"id\" = order_etr.evaluation_target_id AND order_etr.department_code = 'ORDER_EVAL' left join users order_reviewer on order_etr.reviewer_user_id = order_reviewer.id left join evaluation_target_reviews order_review on \"evaluation_targets\".\"id\" = order_review.evaluation_target_id \n AND order_review.reviewer_user_id = order_reviewer.id \n AND order_review.department_code = 'ORDER_EVAL' left join evaluation_target_reviewers procurement_etr on \"evaluation_targets\".\"id\" = procurement_etr.evaluation_target_id AND procurement_etr.department_code = 'PROCUREMENT_EVAL' left join users procurement_reviewer on procurement_etr.reviewer_user_id = procurement_reviewer.id left join evaluation_target_reviews procurement_review on \"evaluation_targets\".\"id\" = procurement_review.evaluation_target_id \n AND procurement_review.reviewer_user_id = procurement_reviewer.id \n AND procurement_review.department_code = 'PROCUREMENT_EVAL' left join evaluation_target_reviewers quality_etr on \"evaluation_targets\".\"id\" = quality_etr.evaluation_target_id AND quality_etr.department_code = 'QUALITY_EVAL' left join users quality_reviewer on quality_etr.reviewer_user_id = quality_reviewer.id left join evaluation_target_reviews quality_review on \"evaluation_targets\".\"id\" = quality_review.evaluation_target_id \n AND quality_review.reviewer_user_id = quality_reviewer.id \n AND quality_review.department_code = 'QUALITY_EVAL' left join evaluation_target_reviewers design_etr on \"evaluation_targets\".\"id\" = design_etr.evaluation_target_id AND design_etr.department_code = 'DESIGN_EVAL' left join users design_reviewer on design_etr.reviewer_user_id = design_reviewer.id left join evaluation_target_reviews design_review on \"evaluation_targets\".\"id\" = design_review.evaluation_target_id \n AND design_review.reviewer_user_id = design_reviewer.id \n AND design_review.department_code = 'DESIGN_EVAL' left join evaluation_target_reviewers cs_etr on \"evaluation_targets\".\"id\" = cs_etr.evaluation_target_id AND cs_etr.department_code = 'CS_EVAL' left join users cs_reviewer on cs_etr.reviewer_user_id = cs_reviewer.id left join evaluation_target_reviews cs_review on \"evaluation_targets\".\"id\" = cs_review.evaluation_target_id \n AND cs_review.reviewer_user_id = cs_reviewer.id \n AND cs_review.department_code = 'CS_EVAL'", + "name": "evaluation_targets_with_departments", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.periodic_evaluations_aggregated_view": { + "columns": { + "evaluation_year": { + "name": "evaluation_year", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "vendor_code": { + "name": "vendor_code", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "vendor_name": { + "name": "vendor_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "domestic_foreign": { + "name": "domestic_foreign", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true + }, + "material_type": { + "name": "material_type", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true + } + }, + "definition": "select CONCAT(\"evaluation_year\", '_', \"vendor_id\") as \"id\", \"evaluation_year\", \"vendor_id\", \"vendor_code\", \"vendor_name\", \"domestic_foreign\", \"material_type\", ROUND(AVG(NULLIF(\"process_score\", 0)), 1) as \"process_score\", ROUND(AVG(NULLIF(\"price_score\", 0)), 1) as \"price_score\", ROUND(AVG(NULLIF(\"delivery_score\", 0)), 1) as \"delivery_score\", ROUND(AVG(NULLIF(\"self_evaluation_score\", 0)), 1) as \"self_evaluation_score\", ROUND(AVG(NULLIF(\"participation_bonus\", 0)), 1) as \"participation_bonus\", ROUND(AVG(NULLIF(\"quality_deduction\", 0)), 1) as \"quality_deduction\", ROUND(AVG(NULLIF(\"final_score\", 0)), 1) as \"final_score\", \n CASE \n WHEN (\n AVG(NULLIF(\"process_score\", 0)) + \n AVG(NULLIF(\"price_score\", 0)) + \n AVG(NULLIF(\"delivery_score\", 0)) + \n AVG(NULLIF(\"self_evaluation_score\", 0)) +\n AVG(NULLIF(\"participation_bonus\", 0)) - \n AVG(NULLIF(\"quality_deduction\", 0))\n ) >= 90 THEN 'S'\n WHEN (\n AVG(NULLIF(\"process_score\", 0)) + \n AVG(NULLIF(\"price_score\", 0)) + \n AVG(NULLIF(\"delivery_score\", 0)) + \n AVG(NULLIF(\"self_evaluation_score\", 0)) +\n AVG(NULLIF(\"participation_bonus\", 0)) - \n AVG(NULLIF(\"quality_deduction\", 0))\n ) >= 80 THEN 'A'\n WHEN (\n AVG(NULLIF(\"process_score\", 0)) + \n AVG(NULLIF(\"price_score\", 0)) + \n AVG(NULLIF(\"delivery_score\", 0)) + \n AVG(NULLIF(\"self_evaluation_score\", 0)) +\n AVG(NULLIF(\"participation_bonus\", 0)) - \n AVG(NULLIF(\"quality_deduction\", 0))\n ) >= 70 THEN 'B'\n WHEN (\n AVG(NULLIF(\"process_score\", 0)) + \n AVG(NULLIF(\"price_score\", 0)) + \n AVG(NULLIF(\"delivery_score\", 0)) + \n AVG(NULLIF(\"self_evaluation_score\", 0)) +\n AVG(NULLIF(\"participation_bonus\", 0)) - \n AVG(NULLIF(\"quality_deduction\", 0))\n ) >= 60 THEN 'C'\n ELSE 'D'\n END\n as \"evaluation_grade\", \n CASE \n WHEN AVG(NULLIF(\"final_score\", 0)) >= 90 THEN 'S'\n WHEN AVG(NULLIF(\"final_score\", 0)) >= 80 THEN 'A'\n WHEN AVG(NULLIF(\"final_score\", 0)) >= 70 THEN 'B'\n WHEN AVG(NULLIF(\"final_score\", 0)) >= 60 THEN 'C'\n ELSE 'D'\n END\n as \"final_grade\", \n CASE \n WHEN COUNT(CASE WHEN \"status\" = 'FINALIZED' THEN 1 END) = COUNT(*) THEN 'FINALIZED'\n WHEN COUNT(CASE WHEN \"status\" IN ('REVIEW_COMPLETED', 'FINALIZED') THEN 1 END) = COUNT(*) THEN 'REVIEW_COMPLETED'\n WHEN COUNT(CASE WHEN \"status\" IN ('IN_REVIEW', 'REVIEW_COMPLETED', 'FINALIZED') THEN 1 END) > 0 THEN 'IN_REVIEW'\n WHEN COUNT(CASE WHEN \"status\" IN ('SUBMITTED', 'IN_REVIEW', 'REVIEW_COMPLETED', 'FINALIZED') THEN 1 END) > 0 THEN 'SUBMITTED'\n ELSE 'PENDING_SUBMISSION'\n END\n as \"status\", \n CASE \n WHEN COUNT(CASE WHEN \"order_eval_status\" = 'COMPLETED' THEN 1 END) > 0 THEN 'COMPLETED'\n WHEN COUNT(CASE WHEN \"order_eval_status\" = 'IN_PROGRESS' THEN 1 END) > 0 THEN 'IN_PROGRESS'\n WHEN COUNT(CASE WHEN \"order_eval_status\" = 'NOT_STARTED' THEN 1 END) > 0 THEN 'NOT_STARTED'\n ELSE 'NOT_ASSIGNED'\n END\n as \"order_eval_status\", \n CASE \n WHEN COUNT(CASE WHEN \"procurement_eval_status\" = 'COMPLETED' THEN 1 END) > 0 THEN 'COMPLETED'\n WHEN COUNT(CASE WHEN \"procurement_eval_status\" = 'IN_PROGRESS' THEN 1 END) > 0 THEN 'IN_PROGRESS'\n WHEN COUNT(CASE WHEN \"procurement_eval_status\" = 'NOT_STARTED' THEN 1 END) > 0 THEN 'NOT_STARTED'\n ELSE 'NOT_ASSIGNED'\n END\n as \"procurement_eval_status\", \n CASE \n WHEN COUNT(CASE WHEN \"quality_eval_status\" = 'COMPLETED' THEN 1 END) > 0 THEN 'COMPLETED'\n WHEN COUNT(CASE WHEN \"quality_eval_status\" = 'IN_PROGRESS' THEN 1 END) > 0 THEN 'IN_PROGRESS'\n WHEN COUNT(CASE WHEN \"quality_eval_status\" = 'NOT_STARTED' THEN 1 END) > 0 THEN 'NOT_STARTED'\n ELSE 'NOT_ASSIGNED'\n END\n as \"quality_eval_status\", \n CASE \n WHEN COUNT(CASE WHEN \"design_eval_status\" = 'COMPLETED' THEN 1 END) > 0 THEN 'COMPLETED'\n WHEN COUNT(CASE WHEN \"design_eval_status\" = 'IN_PROGRESS' THEN 1 END) > 0 THEN 'IN_PROGRESS'\n WHEN COUNT(CASE WHEN \"design_eval_status\" = 'NOT_STARTED' THEN 1 END) > 0 THEN 'NOT_STARTED'\n ELSE 'NOT_ASSIGNED'\n END\n as \"design_eval_status\", \n CASE \n WHEN COUNT(CASE WHEN \"cs_eval_status\" = 'COMPLETED' THEN 1 END) > 0 THEN 'COMPLETED'\n WHEN COUNT(CASE WHEN \"cs_eval_status\" = 'IN_PROGRESS' THEN 1 END) > 0 THEN 'IN_PROGRESS'\n WHEN COUNT(CASE WHEN \"cs_eval_status\" = 'NOT_STARTED' THEN 1 END) > 0 THEN 'NOT_STARTED'\n ELSE 'NOT_ASSIGNED'\n END\n as \"cs_eval_status\", \n CASE \n WHEN COUNT(CASE WHEN \"admin_eval_status\" = 'COMPLETED' THEN 1 END) > 0 THEN 'COMPLETED'\n WHEN COUNT(CASE WHEN \"admin_eval_status\" = 'IN_PROGRESS' THEN 1 END) > 0 THEN 'IN_PROGRESS'\n WHEN COUNT(CASE WHEN \"admin_eval_status\" = 'NOT_STARTED' THEN 1 END) > 0 THEN 'NOT_STARTED'\n ELSE 'NOT_ASSIGNED'\n END\n as \"admin_eval_status\", \n BOOL_AND(\"documents_submitted\")\n as \"documents_submitted\", MAX(\"submission_date\") as \"submission_date\", MAX(\"submission_deadline\") as \"submission_deadline\", MAX(\"review_completed_at\") as \"review_completed_at\", MAX(\"finalized_at\") as \"finalized_at\", \n CASE \n WHEN COUNT(DISTINCT \"division\") > 1 THEN 'BOTH'\n ELSE MAX(\"division\")\n END\n as \"division\", COUNT(*)::int as \"evaluation_count\", STRING_AGG(DISTINCT \"division\", ',') as \"divisions\", SUM(\"total_reviewers\")::int as \"total_reviewers\", SUM(\"completed_reviewers\")::int as \"completed_reviewers\", SUM(\"pending_reviewers\")::int as \"pending_reviewers\", MAX(\"evaluation_period\") as \"evaluation_period\", STRING_AGG(\"evaluation_note\", ' | ') as \"evaluation_note\", (ARRAY_AGG(\"periodic_evaluations_view\".\"finalized_by\" ORDER BY \"periodic_evaluations_view\".\"finalized_at\" DESC NULLS LAST))[1] as \"finalized_by\", (ARRAY_AGG(\"periodic_evaluations_view\".\"name\" ORDER BY \"periodic_evaluations_view\".\"finalized_at\" DESC NULLS LAST))[1] as \"finalized_by_user_name\", (ARRAY_AGG(\"periodic_evaluations_view\".\"email\" ORDER BY \"periodic_evaluations_view\".\"finalized_at\" DESC NULLS LAST))[1] as \"finalized_by_user_email\", MIN(\"created_at\") as \"created_at\", MAX(\"updated_at\") as \"updated_at\", (ARRAY_AGG(\"periodic_evaluations_view\".\"evaluation_target_id\"))[1] as \"evaluation_target_id\", \n STRING_AGG(DISTINCT \"admin_comment\", ' | ')\n as \"evaluation_target_admin_comment\", \n STRING_AGG(DISTINCT \"consolidated_comment\", ' | ')\n as \"evaluation_target_consolidated_comment\", (ARRAY_AGG(\"periodic_evaluations_view\".\"consensus_status\" ORDER BY \"periodic_evaluations_view\".\"updated_at\" DESC NULLS LAST))[1] as \"evaluation_target_consensus_status\", \n MAX(\"confirmed_at\")\n as \"evaluation_target_confirmed_at\" from \"periodic_evaluations_view\" group by \"periodic_evaluations_view\".\"evaluation_year\", \"periodic_evaluations_view\".\"vendor_id\", \"periodic_evaluations_view\".\"vendor_code\", \"periodic_evaluations_view\".\"vendor_name\", \"periodic_evaluations_view\".\"domestic_foreign\", \"periodic_evaluations_view\".\"material_type\"", + "name": "periodic_evaluations_aggregated_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.periodic_evaluations_view": { + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "evaluation_target_id": { + "name": "evaluation_target_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "evaluation_year": { + "name": "evaluation_year", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "division": { + "name": "division", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "vendor_code": { + "name": "vendor_code", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "vendor_name": { + "name": "vendor_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "domestic_foreign": { + "name": "domestic_foreign", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true + }, + "material_type": { + "name": "material_type", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true + }, + "evaluation_period": { + "name": "evaluation_period", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true + }, + "documents_submitted": { + "name": "documents_submitted", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "submission_date": { + "name": "submission_date", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "submission_deadline": { + "name": "submission_deadline", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "final_score": { + "name": "final_score", + "type": "numeric(5, 2)", + "primaryKey": false, + "notNull": false + }, + "final_grade": { + "name": "final_grade", + "type": "varchar(5)", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "default": "'PENDING'" + }, + "review_completed_at": { + "name": "review_completed_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "finalized_at": { + "name": "finalized_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "finalized_by": { + "name": "finalized_by", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "evaluation_note": { + "name": "evaluation_note", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "admin_comment": { + "name": "admin_comment", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "consolidated_comment": { + "name": "consolidated_comment", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "consensus_status": { + "name": "consensus_status", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "confirmed_at": { + "name": "confirmed_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "email": { + "name": "email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + } + }, + "definition": "select \"periodic_evaluations\".\"id\", \"periodic_evaluations\".\"evaluation_target_id\", \"evaluation_targets\".\"evaluation_year\", \"evaluation_targets\".\"division\", \"evaluation_targets\".\"vendor_id\", \"evaluation_targets\".\"vendor_code\", \"evaluation_targets\".\"vendor_name\", \"evaluation_targets\".\"domestic_foreign\", \"evaluation_targets\".\"material_type\", \"periodic_evaluations\".\"evaluation_period\", \"periodic_evaluations\".\"documents_submitted\", \"periodic_evaluations\".\"submission_date\", \"periodic_evaluations\".\"submission_deadline\", \"periodic_evaluations\".\"final_score\", \"periodic_evaluations\".\"final_grade\", (\n SELECT COALESCE(SUM(CAST(red.score AS DECIMAL(5,2))), 0)\n FROM \"reviewer_evaluation_details\" red\n JOIN \"reg_eval_criteria_details\" recd ON red.reg_eval_criteria_details_id = recd.id\n JOIN \"reg_eval_criteria\" rec ON recd.criteria_id = rec.id\n JOIN \"reviewer_evaluations\" re ON red.reviewer_evaluation_id = re.id\n WHERE re.periodic_evaluation_id = \"periodic_evaluations\".\"id\"\n AND rec.category2 = 'processScore'\n AND re.is_completed = true\n ) as \"process_score\", (\n SELECT COALESCE(SUM(CAST(red.score AS DECIMAL(5,2))), 0)\n FROM \"reviewer_evaluation_details\" red\n JOIN \"reg_eval_criteria_details\" recd ON red.reg_eval_criteria_details_id = recd.id\n JOIN \"reg_eval_criteria\" rec ON recd.criteria_id = rec.id\n JOIN \"reviewer_evaluations\" re ON red.reviewer_evaluation_id = re.id\n WHERE re.periodic_evaluation_id = \"periodic_evaluations\".\"id\"\n AND rec.category2 = 'priceScore'\n AND re.is_completed = true\n ) as \"price_score\", (\n SELECT COALESCE(SUM(CAST(red.score AS DECIMAL(5,2))), 0)\n FROM \"reviewer_evaluation_details\" red\n JOIN \"reg_eval_criteria_details\" recd ON red.reg_eval_criteria_details_id = recd.id\n JOIN \"reg_eval_criteria\" rec ON recd.criteria_id = rec.id\n JOIN \"reviewer_evaluations\" re ON red.reviewer_evaluation_id = re.id\n WHERE re.periodic_evaluation_id = \"periodic_evaluations\".\"id\"\n AND rec.category2 = 'deliveryScore'\n AND re.is_completed = true\n ) as \"delivery_score\", (\n SELECT COALESCE(SUM(CAST(red.score AS DECIMAL(5,2))), 0)\n FROM \"reviewer_evaluation_details\" red\n JOIN \"reg_eval_criteria_details\" recd ON red.reg_eval_criteria_details_id = recd.id\n JOIN \"reg_eval_criteria\" rec ON recd.criteria_id = rec.id\n JOIN \"reviewer_evaluations\" re ON red.reviewer_evaluation_id = re.id\n WHERE re.periodic_evaluation_id = \"periodic_evaluations\".\"id\"\n AND rec.category2 = 'selfEvaluationScore'\n AND re.is_completed = true\n ) as \"self_evaluation_score\", (\n SELECT COALESCE(SUM(CAST(red.score AS DECIMAL(5,2))), 0)\n FROM \"reviewer_evaluation_details\" red\n JOIN \"reg_eval_criteria_details\" recd ON red.reg_eval_criteria_details_id = recd.id\n JOIN \"reg_eval_criteria\" rec ON recd.criteria_id = rec.id\n JOIN \"reviewer_evaluations\" re ON red.reviewer_evaluation_id = re.id\n WHERE re.periodic_evaluation_id = \"periodic_evaluations\".\"id\"\n AND rec.category2 = 'bonus'\n AND re.is_completed = true\n ) as \"participation_bonus\", (\n SELECT COALESCE(SUM(CAST(red.score AS DECIMAL(5,2))), 0)\n FROM \"reviewer_evaluation_details\" red\n JOIN \"reg_eval_criteria_details\" recd ON red.reg_eval_criteria_details_id = recd.id\n JOIN \"reg_eval_criteria\" rec ON recd.criteria_id = rec.id\n JOIN \"reviewer_evaluations\" re ON red.reviewer_evaluation_id = re.id\n WHERE re.periodic_evaluation_id = \"periodic_evaluations\".\"id\"\n AND rec.category2 = 'penalty'\n AND re.is_completed = true\n ) as \"quality_deduction\", \"periodic_evaluations\".\"status\", \"periodic_evaluations\".\"review_completed_at\", \"periodic_evaluations\".\"finalized_at\", \"periodic_evaluations\".\"finalized_by\", \"periodic_evaluations\".\"evaluation_note\", \"periodic_evaluations\".\"created_at\", \"periodic_evaluations\".\"updated_at\", \"evaluation_targets\".\"admin_comment\", \"evaluation_targets\".\"consolidated_comment\", \"evaluation_targets\".\"consensus_status\", \"evaluation_targets\".\"confirmed_at\", (\n SELECT CASE\n WHEN re.id IS NULL THEN 'NOT_ASSIGNED'\n WHEN re.is_completed = true THEN 'COMPLETED'\n WHEN (\n SELECT COALESCE(SUM(CAST(red.score AS DECIMAL(5,2))), 0)\n FROM \"reviewer_evaluation_details\" red\n WHERE red.reviewer_evaluation_id = re.id\n ) > 0 THEN 'IN_PROGRESS'\n ELSE 'NOT_STARTED'\n END\n FROM \"reviewer_evaluations\" re\n JOIN \"evaluation_target_reviewers\" etr ON re.evaluation_target_reviewer_id = etr.id\n WHERE re.periodic_evaluation_id = \"periodic_evaluations\".\"id\"\n AND etr.department_code = 'ORDER_EVAL'\n LIMIT 1\n ) as \"order_eval_status\", (\n SELECT CASE\n WHEN re.id IS NULL THEN 'NOT_ASSIGNED'\n WHEN re.is_completed = true THEN 'COMPLETED'\n WHEN (\n SELECT COALESCE(SUM(CAST(red.score AS DECIMAL(5,2))), 0)\n FROM \"reviewer_evaluation_details\" red\n WHERE red.reviewer_evaluation_id = re.id\n ) > 0 THEN 'IN_PROGRESS'\n ELSE 'NOT_STARTED'\n END\n FROM \"reviewer_evaluations\" re\n JOIN \"evaluation_target_reviewers\" etr ON re.evaluation_target_reviewer_id = etr.id\n WHERE re.periodic_evaluation_id = \"periodic_evaluations\".\"id\"\n AND etr.department_code = 'PROCUREMENT_EVAL'\n LIMIT 1\n ) as \"procurement_eval_status\", (\n SELECT CASE\n WHEN re.id IS NULL THEN 'NOT_ASSIGNED'\n WHEN re.is_completed = true THEN 'COMPLETED'\n WHEN (\n SELECT COALESCE(SUM(CAST(red.score AS DECIMAL(5,2))), 0)\n FROM \"reviewer_evaluation_details\" red\n WHERE red.reviewer_evaluation_id = re.id\n ) > 0 THEN 'IN_PROGRESS'\n ELSE 'NOT_STARTED'\n END\n FROM \"reviewer_evaluations\" re\n JOIN \"evaluation_target_reviewers\" etr ON re.evaluation_target_reviewer_id = etr.id\n WHERE re.periodic_evaluation_id = \"periodic_evaluations\".\"id\"\n AND etr.department_code = 'QUALITY_EVAL'\n LIMIT 1\n ) as \"quality_eval_status\", (\n SELECT CASE\n WHEN re.id IS NULL THEN 'NOT_ASSIGNED'\n WHEN re.is_completed = true THEN 'COMPLETED'\n WHEN (\n SELECT COALESCE(SUM(CAST(red.score AS DECIMAL(5,2))), 0)\n FROM \"reviewer_evaluation_details\" red\n WHERE red.reviewer_evaluation_id = re.id\n ) > 0 THEN 'IN_PROGRESS'\n ELSE 'NOT_STARTED'\n END\n FROM \"reviewer_evaluations\" re\n JOIN \"evaluation_target_reviewers\" etr ON re.evaluation_target_reviewer_id = etr.id\n WHERE re.periodic_evaluation_id = \"periodic_evaluations\".\"id\"\n AND etr.department_code = 'DESIGN_EVAL'\n LIMIT 1\n ) as \"design_eval_status\", (\n SELECT CASE\n WHEN re.id IS NULL THEN 'NOT_ASSIGNED'\n WHEN re.is_completed = true THEN 'COMPLETED'\n WHEN (\n SELECT COALESCE(SUM(CAST(red.score AS DECIMAL(5,2))), 0)\n FROM \"reviewer_evaluation_details\" red\n WHERE red.reviewer_evaluation_id = re.id\n ) > 0 THEN 'IN_PROGRESS'\n ELSE 'NOT_STARTED'\n END\n FROM \"reviewer_evaluations\" re\n JOIN \"evaluation_target_reviewers\" etr ON re.evaluation_target_reviewer_id = etr.id\n WHERE re.periodic_evaluation_id = \"periodic_evaluations\".\"id\"\n AND etr.department_code = 'CS_EVAL'\n LIMIT 1\n ) as \"cs_eval_status\", (\n SELECT CASE\n WHEN re.id IS NULL THEN 'NOT_ASSIGNED'\n WHEN re.is_completed = true THEN 'COMPLETED'\n WHEN (\n SELECT COALESCE(SUM(CAST(red.score AS DECIMAL(5,2))), 0)\n FROM \"reviewer_evaluation_details\" red\n WHERE red.reviewer_evaluation_id = re.id\n ) > 0 THEN 'IN_PROGRESS'\n ELSE 'NOT_STARTED'\n END\n FROM \"reviewer_evaluations\" re\n JOIN \"evaluation_target_reviewers\" etr ON re.evaluation_target_reviewer_id = etr.id\n WHERE re.periodic_evaluation_id = \"periodic_evaluations\".\"id\"\n AND etr.department_code = 'admin'\n LIMIT 1\n ) as \"admin_eval_status\", (\n SELECT COUNT(*)::int\n FROM \"reviewer_evaluations\" re\n WHERE re.periodic_evaluation_id = \"periodic_evaluations\".\"id\"\n ) as \"total_reviewers\", (\n SELECT COUNT(*)::int\n FROM \"reviewer_evaluations\" re\n WHERE re.periodic_evaluation_id = \"periodic_evaluations\".\"id\"\n AND re.is_completed = true\n ) as \"completed_reviewers\", (\n SELECT COUNT(*)::int\n FROM \"reviewer_evaluations\" re\n WHERE re.periodic_evaluation_id = \"periodic_evaluations\".\"id\"\n AND re.is_completed = false\n ) as \"pending_reviewers\", \"users\".\"name\", \"users\".\"email\" from \"periodic_evaluations\" left join \"evaluation_targets\" on \"periodic_evaluations\".\"evaluation_target_id\" = \"evaluation_targets\".\"id\" left join \"users\" on \"periodic_evaluations\".\"finalized_by\" = \"users\".\"id\" order by \"periodic_evaluations\".\"created_at\"", + "name": "periodic_evaluations_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.reviewer_evaluations_view": { + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "periodic_evaluation_id": { + "name": "periodic_evaluation_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "evaluation_target_reviewer_id": { + "name": "evaluation_target_reviewer_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "is_completed": { + "name": "is_completed", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "completed_at": { + "name": "completed_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "reviewer_comment": { + "name": "reviewer_comment", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "evaluation_period": { + "name": "evaluation_period", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true + }, + "submitted_at": { + "name": "submitted_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "documents_submitted": { + "name": "documents_submitted", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "submission_date": { + "name": "submission_date", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "submission_deadline": { + "name": "submission_deadline", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "final_score": { + "name": "final_score", + "type": "numeric(5, 2)", + "primaryKey": false, + "notNull": false + }, + "final_grade": { + "name": "final_grade", + "type": "varchar(5)", + "primaryKey": false, + "notNull": false + }, + "evaluation_score": { + "name": "evaluation_score", + "type": "numeric(5, 2)", + "primaryKey": false, + "notNull": false + }, + "evaluation_grade": { + "name": "evaluation_grade", + "type": "varchar(5)", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "default": "'PENDING'" + }, + "review_completed_at": { + "name": "review_completed_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "finalized_at": { + "name": "finalized_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "finalized_by": { + "name": "finalized_by", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "evaluation_note": { + "name": "evaluation_note", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "evaluation_year": { + "name": "evaluation_year", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "division": { + "name": "division", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "vendor_code": { + "name": "vendor_code", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "vendor_name": { + "name": "vendor_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "domestic_foreign": { + "name": "domestic_foreign", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true + }, + "material_type": { + "name": "material_type", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true + }, + "admin_comment": { + "name": "admin_comment", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "consolidated_comment": { + "name": "consolidated_comment", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "confirmed_at": { + "name": "confirmed_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "confirmed_by": { + "name": "confirmed_by", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "ld_claim_count": { + "name": "ld_claim_count", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "ld_claim_amount": { + "name": "ld_claim_amount", + "type": "numeric(15, 2)", + "primaryKey": false, + "notNull": false, + "default": "'0'" + }, + "ld_claim_currency": { + "name": "ld_claim_currency", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false, + "default": "'KRW'" + }, + "department_code": { + "name": "department_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "department_name_from": { + "name": "department_name_from", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "reviewer_user_id": { + "name": "reviewer_user_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "assigned_at": { + "name": "assigned_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "assigned_by": { + "name": "assigned_by", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "definition": "select \"reviewer_evaluations\".\"id\", \"reviewer_evaluations\".\"periodic_evaluation_id\", \"reviewer_evaluations\".\"evaluation_target_reviewer_id\", \"reviewer_evaluations\".\"is_completed\", \"reviewer_evaluations\".\"completed_at\", \"reviewer_evaluations\".\"reviewer_comment\", \"reviewer_evaluations\".\"created_at\", \"reviewer_evaluations\".\"updated_at\", \"periodic_evaluations\".\"evaluation_period\", \"reviewer_evaluations\".\"submitted_at\", \"periodic_evaluations\".\"documents_submitted\", \"periodic_evaluations\".\"submission_date\", \"periodic_evaluations\".\"submission_deadline\", \"periodic_evaluations\".\"final_score\", \"periodic_evaluations\".\"final_grade\", \"periodic_evaluations\".\"evaluation_score\", \"periodic_evaluations\".\"evaluation_grade\", \"periodic_evaluations\".\"status\", \"periodic_evaluations\".\"review_completed_at\", \"periodic_evaluations\".\"finalized_at\", \"periodic_evaluations\".\"finalized_by\", \"periodic_evaluations\".\"evaluation_note\", \"evaluation_targets\".\"evaluation_year\", \"evaluation_targets\".\"division\", \"evaluation_targets\".\"vendor_id\", \"evaluation_targets\".\"vendor_code\", \"evaluation_targets\".\"vendor_name\", \"evaluation_targets\".\"domestic_foreign\", \"evaluation_targets\".\"material_type\", \"evaluation_targets\".\"admin_comment\", \"evaluation_targets\".\"consolidated_comment\", \"evaluation_targets\".\"confirmed_at\", \"evaluation_targets\".\"confirmed_by\", \"evaluation_targets\".\"ld_claim_count\", \"evaluation_targets\".\"ld_claim_amount\", \"evaluation_targets\".\"ld_claim_currency\", \"evaluation_target_reviewers\".\"department_code\", \"evaluation_target_reviewers\".\"department_name_from\", \"evaluation_target_reviewers\".\"reviewer_user_id\", reviewer_user.name as \"reviewer_name\", reviewer_user.email as \"reviewer_email\", \"evaluation_target_reviewers\".\"assigned_at\", \"evaluation_target_reviewers\".\"assigned_by\", assigned_by_user.name as \"assigned_by_user_name\", finalized_by_user.name as \"finalized_by_user_name\", finalized_by_user.email as \"finalized_by_user_email\", \n CASE \n WHEN \"reviewer_evaluations\".\"is_completed\" = true THEN 'COMPLETED'\n ELSE 'NOT_STARTED'\n END\n as \"evaluation_progress\" from \"reviewer_evaluations\" left join \"periodic_evaluations\" on \"reviewer_evaluations\".\"periodic_evaluation_id\" = \"periodic_evaluations\".\"id\" left join \"evaluation_targets\" on \"periodic_evaluations\".\"evaluation_target_id\" = \"evaluation_targets\".\"id\" left join \"evaluation_target_reviewers\" on \"reviewer_evaluations\".\"evaluation_target_reviewer_id\" = \"evaluation_target_reviewers\".\"id\" left join users reviewer_user on \"evaluation_target_reviewers\".\"reviewer_user_id\" = reviewer_user.id left join users assigned_by_user on \"evaluation_target_reviewers\".\"assigned_by\" = assigned_by_user.id left join users finalized_by_user on \"periodic_evaluations\".\"finalized_by\" = finalized_by_user.id order by \"reviewer_evaluations\".\"is_completed\" ASC, \"reviewer_evaluations\".\"updated_at\" DESC", + "name": "reviewer_evaluations_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.reg_eval_criteria_view": { + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "criteria_id": { + "name": "criteria_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "category": { + "name": "category", + "type": "varchar(32)", + "primaryKey": false, + "notNull": true, + "default": "'quality'" + }, + "category2": { + "name": "category2", + "type": "varchar(32)", + "primaryKey": false, + "notNull": true, + "default": "'processScore'" + }, + "item": { + "name": "item", + "type": "varchar(32)", + "primaryKey": false, + "notNull": true, + "default": "'quality'" + }, + "classification": { + "name": "classification", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "range": { + "name": "range", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "detail": { + "name": "detail", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "order_index": { + "name": "order_index", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "score_equip_ship": { + "name": "score_equip_ship", + "type": "numeric(5, 2)", + "primaryKey": false, + "notNull": false + }, + "score_equip_marine": { + "name": "score_equip_marine", + "type": "numeric(5, 2)", + "primaryKey": false, + "notNull": false + }, + "score_bulk_ship": { + "name": "score_bulk_ship", + "type": "numeric(5, 2)", + "primaryKey": false, + "notNull": false + }, + "score_bulk_marine": { + "name": "score_bulk_marine", + "type": "numeric(5, 2)", + "primaryKey": false, + "notNull": false + }, + "remarks": { + "name": "remarks", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "definition": "select \"reg_eval_criteria_details\".\"id\", \"reg_eval_criteria_details\".\"criteria_id\", \"reg_eval_criteria\".\"category\", \"reg_eval_criteria\".\"category2\", \"reg_eval_criteria\".\"item\", \"reg_eval_criteria\".\"classification\", \"reg_eval_criteria\".\"range\", \"reg_eval_criteria_details\".\"detail\", \"reg_eval_criteria_details\".\"order_index\", \"reg_eval_criteria_details\".\"score_equip_ship\", \"reg_eval_criteria_details\".\"score_equip_marine\", \"reg_eval_criteria_details\".\"score_bulk_ship\", \"reg_eval_criteria_details\".\"score_bulk_marine\", \"reg_eval_criteria\".\"remarks\" from \"reg_eval_criteria\" left join \"reg_eval_criteria_details\" on \"reg_eval_criteria\".\"id\" = \"reg_eval_criteria_details\".\"criteria_id\" order by \"reg_eval_criteria\".\"id\", \"reg_eval_criteria_details\".\"order_index\"", + "name": "reg_eval_criteria_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.project_gtc_view": { + "columns": {}, + "definition": "select \"projects\".\"id\" as \"id\", \"projects\".\"code\" as \"code\", \"projects\".\"name\" as \"name\", \"projects\".\"type\" as \"type\", \"projects\".\"created_at\" as \"project_created_at\", \"projects\".\"updated_at\" as \"project_updated_at\", \"project_gtc_files\".\"id\" as \"gtc_file_id\", \"project_gtc_files\".\"file_name\" as \"fileName\", \"project_gtc_files\".\"file_path\" as \"filePath\", \"project_gtc_files\".\"original_file_name\" as \"originalFileName\", \"project_gtc_files\".\"file_size\" as \"fileSize\", \"project_gtc_files\".\"mime_type\" as \"mimeType\", \"project_gtc_files\".\"created_at\" as \"gtcCreatedAt\", \"project_gtc_files\".\"updated_at\" as \"gtcUpdatedAt\" from \"projects\" left join \"project_gtc_files\" on \"projects\".\"id\" = \"project_gtc_files\".\"project_id\"", + "name": "project_gtc_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.qna_answer_view": { + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "qna_id": { + "name": "qna_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "author": { + "name": "author", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "definition": "select \"qna_answer\".\"id\", \"qna_answer\".\"qna_id\", \"qna_answer\".\"content\", \"qna_answer\".\"author\", \"qna_answer\".\"created_at\" as \"created_at\", \"qna_answer\".\"updated_at\" as \"updated_at\", \"qna_answer\".\"is_deleted\" as \"is_deleted\", \"qna_answer\".\"deleted_at\" as \"deleted_at\", \"qna\".\"title\" as \"question_title\", \"qna\".\"category\" as \"question_category\", \"qna\".\"author\" as \"question_author\", \"qna\".\"created_at\" as \"question_created_at\", \"users\".\"name\" as \"author_name\", \"users\".\"email\" as \"author_email\", \"users\".\"domain\" as \"author_domain\", \"users\".\"phone\" as \"author_phone\", \"users\".\"image_url\" as \"author_image_url\", \"users\".\"language\" as \"author_language\", \"vendors\".\"vendor_name\" as \"vendor_name\", \"vendors\".\"vendor_code\" as \"vendor_code\", \"tech_vendors\".\"vendor_name\" as \"tech_vendor_name\", \"tech_vendors\".\"vendor_code\" as \"tech_vendor_code\", COALESCE(\"vendors\".\"vendor_name\", \"tech_vendors\".\"vendor_name\") as \"company_name\", COALESCE(\"vendors\".\"vendor_code\", \"tech_vendors\".\"vendor_code\") as \"company_code\", \n CASE \n WHEN \"vendors\".\"vendor_name\" IS NOT NULL THEN 'vendor'\n WHEN \"tech_vendors\".\"vendor_name\" IS NOT NULL THEN 'techVendor'\n ELSE NULL\n END\n as \"vendor_type\", (\n SELECT COUNT(*)::int\n FROM \"qna_comments\" qc\n WHERE qc.answer_id = \"qna_answer\".\"id\"\n AND qc.is_deleted = false\n ) as \"total_comments\", (\n SELECT COUNT(*)::int\n FROM \"qna_comments\" qc\n WHERE qc.answer_id = \"qna_answer\".\"id\"\n AND qc.is_deleted = false\n ) as \"comment_count\", (\n SELECT COUNT(*)::int\n FROM \"qna_comments\" qc\n WHERE qc.answer_id = \"qna_answer\".\"id\"\n AND qc.parent_comment_id IS NULL\n AND qc.is_deleted = false\n ) as \"parent_comments_count\", (\n SELECT COUNT(*)::int\n FROM \"qna_comments\" qc\n WHERE qc.answer_id = \"qna_answer\".\"id\"\n AND qc.parent_comment_id IS NOT NULL\n AND qc.is_deleted = false\n ) as \"child_comments_count\", (\n SELECT MAX(qc.created_at)\n FROM \"qna_comments\" qc\n WHERE qc.answer_id = \"qna_answer\".\"id\"\n AND qc.is_deleted = false\n ) as \"last_commented_at\", (\n SELECT ROW_NUMBER() OVER (\n PARTITION BY qa2.qna_id \n ORDER BY qa2.created_at ASC\n )\n FROM \"qna_answer\" qa2\n WHERE qa2.id = \"qna_answer\".\"id\"\n AND qa2.is_deleted = false\n ) as \"answer_order\", (\n \"qna_answer\".\"id\" = (\n SELECT qa2.id\n FROM \"qna_answer\" qa2\n WHERE qa2.qna_id = \"qna_answer\".\"qna_id\"\n AND qa2.is_deleted = false\n ORDER BY qa2.created_at ASC\n LIMIT 1\n )\n ) as \"is_first_answer\", (\n \"qna_answer\".\"id\" = (\n SELECT qa2.id\n FROM \"qna_answer\" qa2\n WHERE qa2.qna_id = \"qna_answer\".\"qna_id\"\n AND qa2.is_deleted = false\n ORDER BY qa2.created_at DESC\n LIMIT 1\n )\n ) as \"is_latest_answer\" from \"qna_answer\" left join \"qna\" on \"qna_answer\".\"qna_id\" = \"qna\".\"id\" left join \"users\" on \"qna_answer\".\"author\" = \"users\".\"id\" left join \"vendors\" on \"users\".\"company_id\" = \"vendors\".\"id\" left join \"tech_vendors\" on \"users\".\"tech_company_id\" = \"tech_vendors\".\"id\" where \"qna_answer\".\"is_deleted\" = false order by \"qna_answer\".\"created_at\"", + "name": "qna_answer_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.qna_comment_view": { + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "author": { + "name": "author", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "answer_id": { + "name": "answer_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "parent_comment_id": { + "name": "parent_comment_id", + "type": "integer", + "primaryKey": false, + "notNull": false + } + }, + "definition": "select \"qna_comments\".\"id\", \"qna_comments\".\"content\", \"qna_comments\".\"author\", \"qna_comments\".\"answer_id\", \"qna_comments\".\"parent_comment_id\", \"qna_comments\".\"created_at\" as \"created_at\", \"qna_comments\".\"updated_at\" as \"updated_at\", \"qna_comments\".\"is_deleted\" as \"is_deleted\", \"qna_comments\".\"deleted_at\" as \"deleted_at\", \"qna_answer\".\"content\" as \"answer_content\", \"qna_answer\".\"author\" as \"answer_author\", \"qna_answer\".\"created_at\" as \"answer_created_at\", \"qna_answer\".\"qna_id\" as \"qna_id\", \"qna\".\"title\" as \"question_title\", \"qna\".\"category\" as \"question_category\", \"qna\".\"author\" as \"question_author\", \"users\".\"name\" as \"author_name\", \"users\".\"email\" as \"author_email\", \"users\".\"domain\" as \"author_domain\", \"users\".\"image_url\" as \"author_image_url\", \"vendors\".\"vendor_name\" as \"vendor_name\", \"tech_vendors\".\"vendor_name\" as \"tech_vendor_name\", COALESCE(\"vendors\".\"vendor_name\", \"tech_vendors\".\"vendor_name\") as \"company_name\", \n CASE \n WHEN \"vendors\".\"vendor_name\" IS NOT NULL THEN 'vendor'\n WHEN \"tech_vendors\".\"vendor_name\" IS NOT NULL THEN 'techVendor'\n ELSE NULL\n END\n as \"vendor_type\", \"qna_comments\".\"parent_comment_id\" IS NULL as \"is_parent_comment\", \"qna_comments\".\"parent_comment_id\" IS NOT NULL as \"is_child_comment\", (\n SELECT COUNT(*)::int\n FROM \"qna_comments\" qc2\n WHERE qc2.parent_comment_id = \"qna_comments\".\"id\"\n AND qc2.is_deleted = false\n ) as \"child_comments_count\", (\n SELECT COUNT(*) > 0\n FROM \"qna_comments\" qc2\n WHERE qc2.parent_comment_id = \"qna_comments\".\"id\"\n AND qc2.is_deleted = false\n ) as \"has_child_comments\", \n CASE \n WHEN \"qna_comments\".\"parent_comment_id\" IS NULL THEN 0\n ELSE 1\n END\n as \"comment_depth\", (\n SELECT ROW_NUMBER() OVER (\n PARTITION BY qc2.answer_id, qc2.parent_comment_id\n ORDER BY qc2.created_at ASC\n )\n FROM \"qna_comments\" qc2\n WHERE qc2.id = \"qna_comments\".\"id\"\n AND qc2.is_deleted = false\n ) as \"comment_order\" from \"qna_comments\" left join \"qna_answer\" on \"qna_comments\".\"answer_id\" = \"qna_answer\".\"id\" left join \"qna\" on \"qna_answer\".\"qna_id\" = \"qna\".\"id\" left join \"users\" on \"qna_comments\".\"author\" = \"users\".\"id\" left join \"vendors\" on \"users\".\"company_id\" = \"vendors\".\"id\" left join \"tech_vendors\" on \"users\".\"tech_company_id\" = \"tech_vendors\".\"id\" where \"qna_comments\".\"is_deleted\" = false order by \"qna_comments\".\"created_at\"", + "name": "qna_comment_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.qna_view": { + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "title": { + "name": "title", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "author": { + "name": "author", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "category": { + "name": "category", + "type": "qna_category", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "is_deleted": { + "name": "is_deleted", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "email": { + "name": "email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "domain": { + "name": "domain", + "type": "user_domain", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'partners'" + }, + "phone": { + "name": "phone", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "image_url": { + "name": "image_url", + "type": "varchar(1024)", + "primaryKey": false, + "notNull": false + }, + "language": { + "name": "language", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false, + "default": "'en'" + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "last_login_at": { + "name": "last_login_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "definition": "select \"qna\".\"id\", \"qna\".\"title\", \"qna\".\"content\", \"qna\".\"author\", \"qna\".\"category\", \"qna\".\"created_at\", \"qna\".\"updated_at\", \"qna\".\"is_deleted\", \"qna\".\"deleted_at\", \"users\".\"name\", \"users\".\"email\", \"users\".\"domain\", \"users\".\"phone\", \"users\".\"image_url\", \"users\".\"language\", \"users\".\"is_active\", \"users\".\"last_login_at\", \"vendors\".\"vendor_name\" as \"vendor_name\", \"vendors\".\"vendor_code\" as \"vendor_code\", \"vendors\".\"status\" as \"vendor_status\", \"vendors\".\"country\" as \"vendor_country\", \"vendors\".\"business_size\" as \"vendor_business_size\", \"tech_vendors\".\"vendor_name\" as \"tech_vendor_name\", \"tech_vendors\".\"vendor_code\" as \"tech_vendor_code\", \"tech_vendors\".\"status\" as \"tech_vendor_status\", \"tech_vendors\".\"country\" as \"tech_vendor_country\", \"tech_vendors\".\"tech_vendor_type\" as \"tech_vendor_type\", COALESCE(\"vendors\".\"vendor_name\", \"tech_vendors\".\"vendor_name\") as \"company_name\", COALESCE(\"vendors\".\"vendor_code\", \"tech_vendors\".\"vendor_code\") as \"company_code\", COALESCE(\"vendors\".\"country\", \"tech_vendors\".\"country\") as \"company_country\", \n CASE \n WHEN \"vendors\".\"vendor_name\" IS NOT NULL THEN 'vendor'\n WHEN \"tech_vendors\".\"vendor_name\" IS NOT NULL THEN 'techVendor'\n ELSE NULL\n END\n as \"vendor_type\", (\n SELECT COUNT(*)::int\n FROM \"qna_answer\" qa\n WHERE qa.qna_id = \"qna\".\"id\"\n AND qa.is_deleted = false\n ) as \"total_answers\", (\n SELECT COUNT(*)::int\n FROM \"qna_answer\" qa\n WHERE qa.qna_id = \"qna\".\"id\"\n AND qa.is_deleted = false\n ) as \"answer_count\", (\n SELECT MAX(qa.created_at)\n FROM \"qna_answer\" qa\n WHERE qa.qna_id = \"qna\".\"id\"\n AND qa.is_deleted = false\n ) as \"last_answered_at\", (\n SELECT MIN(qa.created_at)\n FROM \"qna_answer\" qa\n WHERE qa.qna_id = \"qna\".\"id\"\n AND qa.is_deleted = false\n ) as \"first_answered_at\", (\n SELECT COUNT(*)::int\n FROM \"qna_comments\" qc\n INNER JOIN \"qna_answer\" qa ON qc.answer_id = qa.id\n WHERE qa.qna_id = \"qna\".\"id\"\n AND qc.is_deleted = false\n AND qa.is_deleted = false\n ) as \"total_comments\", (\n SELECT GREATEST(\n \"qna\".\"updated_at\",\n COALESCE((\n SELECT MAX(qa.updated_at)\n FROM \"qna_answer\" qa\n WHERE qa.qna_id = \"qna\".\"id\"\n AND qa.is_deleted = false\n ), \"qna\".\"updated_at\"),\n COALESCE((\n SELECT MAX(qc.updated_at)\n FROM \"qna_comments\" qc\n INNER JOIN \"qna_answer\" qa ON qc.answer_id = qa.id\n WHERE qa.qna_id = \"qna\".\"id\"\n AND qc.is_deleted = false\n AND qa.is_deleted = false\n ), \"qna\".\"updated_at\")\n )\n ) as \"last_activity_at\", (\n SELECT COUNT(*) > 0\n FROM \"qna_answer\" qa\n WHERE qa.qna_id = \"qna\".\"id\"\n AND qa.is_deleted = false\n ) as \"has_answers\", (\n SELECT COUNT(*) > 0\n FROM \"qna_answer\" qa\n WHERE qa.qna_id = \"qna\".\"id\"\n AND qa.is_deleted = false\n ) as \"is_answered\", (\n (SELECT COUNT(*) FROM \"qna_answer\" qa WHERE qa.qna_id = \"qna\".\"id\" AND qa.is_deleted = false) >= 3\n OR\n (SELECT COUNT(*) FROM \"qna_comments\" qc \n INNER JOIN \"qna_answer\" qa ON qc.answer_id = qa.id \n WHERE qa.qna_id = \"qna\".\"id\" AND qc.is_deleted = false AND qa.is_deleted = false) >= 5\n ) as \"is_popular\" from \"qna\" left join \"users\" on \"qna\".\"author\" = \"users\".\"id\" left join \"vendors\" on \"users\".\"company_id\" = \"vendors\".\"id\" left join \"tech_vendors\" on \"users\".\"tech_company_id\" = \"tech_vendors\".\"id\" where \"qna\".\"is_deleted\" = false order by \"qna\".\"created_at\"", + "name": "qna_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.template_detail_view": { + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "slug": { + "name": "slug", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "subject": { + "name": "subject", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "category": { + "name": "category", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "sample_data": { + "name": "sample_data", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "version": { + "name": "version", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_by": { + "name": "created_by", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_by_name": { + "name": "created_by_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_by_email": { + "name": "created_by_email", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "variables": { + "name": "variables", + "type": "jsonb", + "primaryKey": false, + "notNull": false + } + }, + "definition": "\n SELECT\n t.id,\n t.name,\n t.slug,\n t.subject,\n t.content,\n t.description,\n t.category,\n t.sample_data,\n t.is_active,\n t.version,\n t.created_by,\n u.name AS created_by_name,\n u.email AS created_by_email,\n t.created_at,\n t.updated_at,\n COALESCE(\n json_agg(\n json_build_object(\n 'id', v.id,\n 'variableName', v.variable_name,\n 'variableType', v.variable_type,\n 'defaultValue', v.default_value,\n 'isRequired', v.is_required,\n 'description', v.description,\n 'displayOrder', v.display_order\n ) ORDER BY v.display_order\n ) FILTER (WHERE v.id IS NOT NULL),\n '[]'::json\n ) AS variables\n FROM \"templates\" t\n LEFT JOIN \"users\" u ON t.created_by = u.id\n LEFT JOIN \"template_variables\" v ON t.id = v.template_id\n GROUP BY\n t.id,\n t.name,\n t.slug,\n t.subject,\n t.content,\n t.description,\n t.category,\n t.sample_data,\n t.is_active,\n t.version,\n t.created_by,\n u.name,\n u.email,\n t.created_at,\n t.updated_at\n", + "name": "template_detail_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.template_list_view": { + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "slug": { + "name": "slug", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "subject": { + "name": "subject", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "category": { + "name": "category", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "version": { + "name": "version", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_by": { + "name": "created_by", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_by_name": { + "name": "created_by_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_by_email": { + "name": "created_by_email", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "variable_count": { + "name": "variable_count", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "required_variable_count": { + "name": "required_variable_count", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "definition": "\n SELECT\n t.id,\n t.name,\n t.slug,\n t.subject,\n t.description,\n t.category,\n t.is_active,\n t.version,\n t.created_by,\n u.name AS created_by_name,\n u.email AS created_by_email,\n t.created_at,\n t.updated_at,\n COALESCE(v.variable_count, 0) AS variable_count,\n COALESCE(v.required_variable_count, 0) AS required_variable_count\n FROM \"templates\" t\n LEFT JOIN \"users\" u ON t.created_by = u.id\n LEFT JOIN (\n SELECT\n template_id,\n COUNT(*) AS variable_count,\n COUNT(*) FILTER (WHERE is_required) AS required_variable_count\n FROM \"template_variables\"\n GROUP BY template_id\n ) v ON t.id = v.template_id\n", + "name": "template_list_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.gtc_clauses_tree_view": { + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "document_id": { + "name": "document_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "parent_id": { + "name": "parent_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "item_number": { + "name": "item_number", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "category": { + "name": "category", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "subtitle": { + "name": "subtitle", + "type": "varchar(500)", + "primaryKey": false, + "notNull": true + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "sort_order": { + "name": "sort_order", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": true, + "default": "'0'" + }, + "depth": { + "name": "depth", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "full_path": { + "name": "full_path", + "type": "varchar(200)", + "primaryKey": false, + "notNull": false + }, + "images": { + "name": "images", + "type": "json", + "primaryKey": false, + "notNull": false + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by_id": { + "name": "created_by_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_by_id": { + "name": "updated_by_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "edit_reason": { + "name": "edit_reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "type": { + "name": "type", + "type": "gtc_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "file_name": { + "name": "file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "revision": { + "name": "revision", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "project_id": { + "name": "project_id", + "type": "integer", + "primaryKey": false, + "notNull": false + } + }, + "definition": "select \"gtc_clauses\".\"id\", \"gtc_clauses\".\"document_id\", \"gtc_clauses\".\"parent_id\", \"gtc_clauses\".\"item_number\", \"gtc_clauses\".\"category\", \"gtc_clauses\".\"subtitle\", \"gtc_clauses\".\"content\", \"gtc_clauses\".\"sort_order\", \"gtc_clauses\".\"depth\", \"gtc_clauses\".\"full_path\", \"gtc_clauses\".\"images\", \"gtc_clauses\".\"is_active\", \"gtc_clauses\".\"created_at\", \"gtc_clauses\".\"created_by_id\", \"gtc_clauses\".\"updated_at\", \"gtc_clauses\".\"updated_by_id\", \"gtc_clauses\".\"edit_reason\", \"gtc_documents\".\"type\", \"gtc_documents\".\"file_name\", \"gtc_documents\".\"revision\", \"gtc_documents\".\"project_id\", created_by_user.name as \"created_by_name\", created_by_user.email as \"created_by_email\", updated_by_user.name as \"updated_by_name\", updated_by_user.email as \"updated_by_email\", parent_clause.item_number as \"parent_item_number\", parent_clause.subtitle as \"parent_subtitle\", \n (\n SELECT count(*)\n FROM gtc_clauses children\n WHERE children.parent_id = \"gtc_clauses\".\"id\"\n AND children.is_active = true\n )\n as \"children_count\", \n (\n SELECT count(*)\n FROM gtc_clauses siblings\n WHERE siblings.parent_id = \"gtc_clauses\".\"parent_id\"\n AND siblings.is_active = true\n )\n as \"siblings_count\", \n \"gtc_clauses\".\"created_by_id\" != \"gtc_clauses\".\"updated_by_id\" OR \n \"gtc_clauses\".\"created_at\" != \"gtc_clauses\".\"updated_at\"\n as \"has_edit_history\" from \"gtc_clauses\" left join \"gtc_documents\" on \"gtc_clauses\".\"document_id\" = \"gtc_documents\".\"id\" left join users created_by_user on \"gtc_clauses\".\"created_by_id\" = created_by_user.id left join users updated_by_user on \"gtc_clauses\".\"updated_by_id\" = updated_by_user.id left join gtc_clauses parent_clause on \"gtc_clauses\".\"parent_id\" = parent_clause.id", + "name": "gtc_clauses_tree_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.gtc_documents_view": { + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "type": { + "name": "type", + "type": "gtc_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "project_id": { + "name": "project_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "revision": { + "name": "revision", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "title": { + "name": "title", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "file_name": { + "name": "file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "file_path": { + "name": "file_path", + "type": "varchar(500)", + "primaryKey": false, + "notNull": false + }, + "file_size": { + "name": "file_size", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by_id": { + "name": "created_by_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_by_id": { + "name": "updated_by_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "edit_reason": { + "name": "edit_reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "code": { + "name": "code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + } + }, + "definition": "select \"gtc_documents\".\"id\", \"gtc_documents\".\"type\", \"gtc_documents\".\"project_id\", \"gtc_documents\".\"revision\", \"gtc_documents\".\"title\", \"gtc_documents\".\"file_name\", \"gtc_documents\".\"file_path\", \"gtc_documents\".\"file_size\", \"gtc_documents\".\"created_at\", \"gtc_documents\".\"created_by_id\", \"gtc_documents\".\"updated_at\", \"gtc_documents\".\"updated_by_id\", \"gtc_documents\".\"edit_reason\", \"gtc_documents\".\"is_active\", \"projects\".\"code\", \"projects\".\"name\", created_by_user.name as \"created_by_name\", created_by_user.email as \"created_by_email\", updated_by_user.name as \"updated_by_name\", updated_by_user.email as \"updated_by_email\", \n (\n SELECT count(*)\n FROM gtc_documents gd2\n WHERE gd2.type = \"gtc_documents\".\"type\"\n AND gd2.is_active = true\n AND (\n (\"gtc_documents\".\"type\" = 'project' AND gd2.project_id = \"gtc_documents\".\"project_id\") OR\n (\"gtc_documents\".\"type\" = 'standard' AND gd2.project_id IS NULL)\n )\n )\n as \"total_documents_in_group\", \n (\n SELECT max(revision)\n FROM gtc_documents gd3\n WHERE gd3.type = \"gtc_documents\".\"type\"\n AND gd3.is_active = true\n AND (\n (\"gtc_documents\".\"type\" = 'project' AND gd3.project_id = \"gtc_documents\".\"project_id\") OR\n (\"gtc_documents\".\"type\" = 'standard' AND gd3.project_id IS NULL)\n )\n )\n as \"latest_revision\", \n \"gtc_documents\".\"revision\" = (\n SELECT max(revision)\n FROM gtc_documents gd4\n WHERE gd4.type = \"gtc_documents\".\"type\"\n AND gd4.is_active = true\n AND (\n (\"gtc_documents\".\"type\" = 'project' AND gd4.project_id = \"gtc_documents\".\"project_id\") OR\n (\"gtc_documents\".\"type\" = 'standard' AND gd4.project_id IS NULL)\n )\n )\n as \"is_latest_revision\", \n (\n SELECT id\n FROM gtc_documents gd5\n WHERE gd5.type = \"gtc_documents\".\"type\"\n AND gd5.is_active = true\n AND gd5.revision < \"gtc_documents\".\"revision\"\n AND (\n (\"gtc_documents\".\"type\" = 'project' AND gd5.project_id = \"gtc_documents\".\"project_id\") OR\n (\"gtc_documents\".\"type\" = 'standard' AND gd5.project_id IS NULL)\n )\n ORDER BY gd5.revision DESC\n LIMIT 1\n )\n as \"previous_revision_id\", \n (\n SELECT id\n FROM gtc_documents gd6\n WHERE gd6.type = \"gtc_documents\".\"type\"\n AND gd6.is_active = true\n AND gd6.revision > \"gtc_documents\".\"revision\"\n AND (\n (\"gtc_documents\".\"type\" = 'project' AND gd6.project_id = \"gtc_documents\".\"project_id\") OR\n (\"gtc_documents\".\"type\" = 'standard' AND gd6.project_id IS NULL)\n )\n ORDER BY gd6.revision ASC\n LIMIT 1\n )\n as \"next_revision_id\", \n CASE \n WHEN \"gtc_documents\".\"file_size\" IS NULL THEN NULL\n WHEN \"gtc_documents\".\"file_size\" < 1024 THEN \"gtc_documents\".\"file_size\" || ' B'\n WHEN \"gtc_documents\".\"file_size\" < 1024 * 1024 THEN round(\"gtc_documents\".\"file_size\" / 1024.0, 1) || ' KB'\n WHEN \"gtc_documents\".\"file_size\" < 1024 * 1024 * 1024 THEN round(\"gtc_documents\".\"file_size\" / (1024.0 * 1024), 1) || ' MB'\n ELSE round(\"gtc_documents\".\"file_size\" / (1024.0 * 1024 * 1024), 1) || ' GB'\n END\n as \"file_size_formatted\", \n CASE \n WHEN \"gtc_documents\".\"project_id\" IS NOT NULL THEN (\n SELECT count(*)\n FROM gtc_documents gd7\n WHERE gd7.project_id = \"gtc_documents\".\"project_id\"\n AND gd7.is_active = true\n )\n ELSE NULL\n END\n as \"project_total_documents\", \n (\n SELECT array_agg(revision ORDER BY revision)\n FROM gtc_documents gd8\n WHERE gd8.type = \"gtc_documents\".\"type\"\n AND gd8.is_active = true\n AND (\n (\"gtc_documents\".\"type\" = 'project' AND gd8.project_id = \"gtc_documents\".\"project_id\") OR\n (\"gtc_documents\".\"type\" = 'standard' AND gd8.project_id IS NULL)\n )\n )\n as \"revision_history\", \n \"gtc_documents\".\"created_by_id\" != \"gtc_documents\".\"updated_by_id\" OR \n \"gtc_documents\".\"created_at\" != \"gtc_documents\".\"updated_at\"\n as \"has_edit_history\" from \"gtc_documents\" left join \"projects\" on \"gtc_documents\".\"project_id\" = \"projects\".\"id\" left join users created_by_user on \"gtc_documents\".\"created_by_id\" = created_by_user.id left join users updated_by_user on \"gtc_documents\".\"updated_by_id\" = updated_by_user.id", + "name": "gtc_documents_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.gtc_vendor_clauses_view": { + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "vendor_document_id": { + "name": "vendor_document_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "base_clause_id": { + "name": "base_clause_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "parent_id": { + "name": "parent_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "is_number_modified": { + "name": "is_number_modified", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_category_modified": { + "name": "is_category_modified", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_subtitle_modified": { + "name": "is_subtitle_modified", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_content_modified": { + "name": "is_content_modified", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "item_number": { + "name": "item_number", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "category": { + "name": "category", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "subtitle": { + "name": "subtitle", + "type": "varchar(500)", + "primaryKey": false, + "notNull": true + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "vendor_code": { + "name": "vendor_code", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "vendor_name": { + "name": "vendor_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "base_document_id": { + "name": "base_document_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "gtc_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "file_name": { + "name": "file_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false + }, + "review_status": { + "name": "review_status", + "type": "review_status", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'draft'" + }, + "negotiation_note": { + "name": "negotiation_note", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_excluded": { + "name": "is_excluded", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "sort_order": { + "name": "sort_order", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": true, + "default": "'0'" + }, + "depth": { + "name": "depth", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "full_path": { + "name": "full_path", + "type": "varchar(200)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "definition": "select \"gtc_vendor_clauses\".\"id\", \"gtc_vendor_clauses\".\"vendor_document_id\", \"gtc_vendor_clauses\".\"base_clause_id\", \"gtc_vendor_clauses\".\"parent_id\", \n COALESCE(\"gtc_vendor_clauses\".\"modified_item_number\", \"gtc_clauses\".\"item_number\")\n as \"effective_item_number\", \n COALESCE(\"gtc_vendor_clauses\".\"modified_category\", \"gtc_clauses\".\"category\")\n as \"effective_category\", \n COALESCE(\"gtc_vendor_clauses\".\"modified_subtitle\", \"gtc_clauses\".\"subtitle\")\n as \"effective_subtitle\", \n COALESCE(\"gtc_vendor_clauses\".\"modified_content\", \"gtc_clauses\".\"content\")\n as \"effective_content\", \"gtc_vendor_clauses\".\"is_number_modified\", \"gtc_vendor_clauses\".\"is_category_modified\", \"gtc_vendor_clauses\".\"is_subtitle_modified\", \"gtc_vendor_clauses\".\"is_content_modified\", \"gtc_clauses\".\"item_number\", \"gtc_clauses\".\"category\", \"gtc_clauses\".\"subtitle\", \"gtc_clauses\".\"content\", \"gtc_vendor_documents\".\"vendor_id\", \"vendors\".\"vendor_code\", \"vendors\".\"vendor_name\", \"gtc_vendor_documents\".\"base_document_id\", \"gtc_documents\".\"type\", \"gtc_documents\".\"file_name\", \"gtc_vendor_clauses\".\"review_status\", \"gtc_vendor_clauses\".\"negotiation_note\", \"gtc_vendor_clauses\".\"is_excluded\", \"gtc_vendor_clauses\".\"sort_order\", \"gtc_vendor_clauses\".\"depth\", \"gtc_vendor_clauses\".\"full_path\", \n \"gtc_vendor_clauses\".\"is_number_modified\" OR \n \"gtc_vendor_clauses\".\"is_category_modified\" OR \n \"gtc_vendor_clauses\".\"is_subtitle_modified\" OR \n \"gtc_vendor_clauses\".\"is_content_modified\"\n as \"has_modifications\", \"gtc_vendor_clauses\".\"created_at\", \"gtc_vendor_clauses\".\"updated_at\" from \"gtc_vendor_clauses\" left join \"gtc_clauses\" on \"gtc_vendor_clauses\".\"base_clause_id\" = \"gtc_clauses\".\"id\" left join \"gtc_vendor_documents\" on \"gtc_vendor_clauses\".\"vendor_document_id\" = \"gtc_vendor_documents\".\"id\" left join \"vendors\" on \"gtc_vendor_documents\".\"vendor_id\" = \"vendors\".\"id\" left join \"gtc_documents\" on \"gtc_vendor_documents\".\"base_document_id\" = \"gtc_documents\".\"id\"", + "name": "gtc_vendor_clauses_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.legal_works_detail_view": { + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "category": { + "name": "category", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "company_id": { + "name": "company_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "vendor_code": { + "name": "vendor_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "vendor_name": { + "name": "vendor_name", + "type": "varchar(200)", + "primaryKey": false, + "notNull": true + }, + "is_urgent": { + "name": "is_urgent", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "request_date": { + "name": "request_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "consultation_date": { + "name": "consultation_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "expected_answer_date": { + "name": "expected_answer_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "legal_completion_date": { + "name": "legal_completion_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "reviewer": { + "name": "reviewer", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "legal_responder": { + "name": "legal_responder", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "has_attachment": { + "name": "has_attachment", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "review_department": { + "name": "review_department", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "inquiry_type": { + "name": "inquiry_type", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "title": { + "name": "title", + "type": "varchar(500)", + "primaryKey": false, + "notNull": true + }, + "request_content": { + "name": "request_content", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "is_public": { + "name": "is_public", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "contract_project_name": { + "name": "contract_project_name", + "type": "varchar(300)", + "primaryKey": false, + "notNull": false + }, + "contract_type": { + "name": "contract_type", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "contract_amount": { + "name": "contract_amount", + "type": "numeric(15, 2)", + "primaryKey": false, + "notNull": false + } + }, + "definition": "select \"legal_works\".\"id\", \"legal_works\".\"category\", \"legal_works\".\"status\", \"legal_works\".\"company_id\", \"legal_works\".\"vendor_code\", \"legal_works\".\"vendor_name\", \"legal_works\".\"is_urgent\", \"legal_works\".\"request_date\", \"legal_works\".\"consultation_date\", \"legal_works\".\"expected_answer_date\", \"legal_works\".\"legal_completion_date\", \"legal_works\".\"reviewer\", \"legal_works\".\"legal_responder\", \"legal_works\".\"has_attachment\", \"legal_works\".\"created_at\", \"legal_works\".\"updated_at\", \"legal_work_requests\".\"review_department\", \"legal_work_requests\".\"inquiry_type\", \"legal_work_requests\".\"title\", \"legal_work_requests\".\"request_content\", \"legal_work_requests\".\"is_public\", \"legal_work_requests\".\"contract_project_name\", \"legal_work_requests\".\"contract_type\", \"legal_work_requests\".\"contract_amount\", (\n SELECT response_content \n FROM legal_work_responses lwr_latest \n WHERE lwr_latest.legal_work_id = \"legal_works\".\"id\" \n ORDER BY lwr_latest.created_at DESC \n LIMIT 1\n ) as \"response_content\", (\n SELECT COUNT(*)::integer \n FROM legal_work_attachments lwa \n WHERE lwa.legal_work_id = \"legal_works\".\"id\"\n ) as \"attachment_count\" from \"legal_works\" left join \"legal_work_requests\" on \"legal_works\".\"id\" = \"legal_work_requests\".\"legal_work_id\" left join \"vendors\" on \"legal_works\".\"company_id\" = \"vendors\".\"id\"", + "name": "legal_works_detail_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "public.bidding_list_view": { + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "bidding_number": { + "name": "bidding_number", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "revision": { + "name": "revision", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "project_name": { + "name": "project_name", + "type": "varchar(300)", + "primaryKey": false, + "notNull": false + }, + "item_name": { + "name": "item_name", + "type": "varchar(300)", + "primaryKey": false, + "notNull": false + }, + "title": { + "name": "title", + "type": "varchar(300)", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "contract_type": { + "name": "contract_type", + "type": "contract_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "bidding_type": { + "name": "bidding_type", + "type": "bidding_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "award_count": { + "name": "award_count", + "type": "award_count", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'single'" + }, + "contract_period": { + "name": "contract_period", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "pre_quote_date": { + "name": "pre_quote_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "bidding_registration_date": { + "name": "bidding_registration_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "submission_start_date": { + "name": "submission_start_date", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "submission_end_date": { + "name": "submission_end_date", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "evaluation_date": { + "name": "evaluation_date", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "has_specification_meeting": { + "name": "has_specification_meeting", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "has_pr_document": { + "name": "has_pr_document", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "pr_number": { + "name": "pr_number", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "currency": { + "name": "currency", + "type": "varchar(3)", + "primaryKey": false, + "notNull": false, + "default": "'KRW'" + }, + "budget": { + "name": "budget", + "type": "numeric(15, 2)", + "primaryKey": false, + "notNull": false + }, + "target_price": { + "name": "target_price", + "type": "numeric(15, 2)", + "primaryKey": false, + "notNull": false + }, + "final_bid_price": { + "name": "final_bid_price", + "type": "numeric(15, 2)", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "bidding_status", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'bidding_generated'" + }, + "is_public": { + "name": "is_public", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "manager_name": { + "name": "manager_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "manager_email": { + "name": "manager_email", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "manager_phone": { + "name": "manager_phone", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "remarks": { + "name": "remarks", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_by": { + "name": "created_by", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_by": { + "name": "updated_by", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "meeting_date": { + "name": "meeting_date", + "type": "timestamp", + "primaryKey": false, + "notNull": true + }, + "location": { + "name": "location", + "type": "varchar(500)", + "primaryKey": false, + "notNull": false + }, + "contact_person": { + "name": "contact_person", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "is_required": { + "name": "is_required", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + } + }, + "definition": "select \"biddings\".\"id\", \"biddings\".\"bidding_number\", \"biddings\".\"revision\", \"biddings\".\"project_name\", \"biddings\".\"item_name\", \"biddings\".\"title\", \"biddings\".\"description\", \"biddings\".\"content\", \"biddings\".\"contract_type\", \"biddings\".\"bidding_type\", \"biddings\".\"award_count\", \"biddings\".\"contract_period\", \"biddings\".\"pre_quote_date\", \"biddings\".\"bidding_registration_date\", \"biddings\".\"submission_start_date\", \"biddings\".\"submission_end_date\", \"biddings\".\"evaluation_date\", \"biddings\".\"has_specification_meeting\", \"biddings\".\"has_pr_document\", \"biddings\".\"pr_number\", \"biddings\".\"currency\", \"biddings\".\"budget\", \"biddings\".\"target_price\", \"biddings\".\"final_bid_price\", \"biddings\".\"status\", \"biddings\".\"is_public\", \"biddings\".\"manager_name\", \"biddings\".\"manager_email\", \"biddings\".\"manager_phone\", \"biddings\".\"remarks\", \"biddings\".\"created_by\", \"biddings\".\"created_at\", \"biddings\".\"updated_at\", \"biddings\".\"updated_by\", \"specification_meetings\".\"id\" IS NOT NULL as \"has_specification_meeting_details\", \"specification_meetings\".\"meeting_date\", \"specification_meetings\".\"location\", \"specification_meetings\".\"contact_person\", \"specification_meetings\".\"is_required\", \n COALESCE((\n SELECT count(*) \n FROM pr_documents \n WHERE bidding_id = \"biddings\".\"id\"\n ), 0)\n as \"pr_document_count\", \n (\n SELECT array_agg(document_name ORDER BY registered_at DESC)\n FROM pr_documents \n WHERE bidding_id = \"biddings\".\"id\"\n LIMIT 5\n )\n as \"pr_document_names\", \n COALESCE((\n SELECT count(*) \n FROM bidding_companies \n WHERE bidding_id = \"biddings\".\"id\"\n ), 0)\n as \"participant_expected\", \n COALESCE((\n SELECT count(*) \n FROM bidding_companies \n WHERE bidding_id = \"biddings\".\"id\" \n AND invitation_status = 'submitted'\n ), 0)\n as \"participant_participated\", \n COALESCE((\n SELECT count(*) \n FROM bidding_companies \n WHERE bidding_id = \"biddings\".\"id\" \n AND invitation_status = 'declined'\n ), 0)\n as \"participant_declined\", \n COALESCE((\n SELECT count(*) \n FROM bidding_companies \n WHERE bidding_id = \"biddings\".\"id\" \n AND invitation_status IN ('pending', 'sent')\n ), 0)\n as \"participant_pending\", \n COALESCE((\n SELECT count(*) \n FROM bidding_companies \n WHERE bidding_id = \"biddings\".\"id\" \n AND invitation_status = 'accepted'\n ), 0)\n as \"participant_accepted\", \n CASE \n WHEN (\n SELECT count(*) \n FROM bidding_companies \n WHERE bidding_id = \"biddings\".\"id\"\n ) > 0 \n THEN ROUND(\n (\n SELECT count(*)::decimal \n FROM bidding_companies \n WHERE bidding_id = \"biddings\".\"id\" \n AND invitation_status = 'submitted'\n ) / (\n SELECT count(*)::decimal \n FROM bidding_companies \n WHERE bidding_id = \"biddings\".\"id\"\n ) * 100, 1\n )\n ELSE 0 \n END\n as \"participation_rate\", \n (\n SELECT AVG(pre_quote_amount) \n FROM bidding_companies \n WHERE bidding_id = \"biddings\".\"id\" \n AND pre_quote_amount IS NOT NULL\n )\n as \"avg_pre_quote_amount\", \n (\n SELECT MIN(pre_quote_amount) \n FROM bidding_companies \n WHERE bidding_id = \"biddings\".\"id\" \n AND pre_quote_amount IS NOT NULL\n )\n as \"min_pre_quote_amount\", \n (\n SELECT MAX(pre_quote_amount) \n FROM bidding_companies \n WHERE bidding_id = \"biddings\".\"id\" \n AND pre_quote_amount IS NOT NULL\n )\n as \"max_pre_quote_amount\", \n (\n SELECT AVG(final_quote_amount) \n FROM bidding_companies \n WHERE bidding_id = \"biddings\".\"id\" \n AND final_quote_amount IS NOT NULL\n )\n as \"avg_final_quote_amount\", \n (\n SELECT MIN(final_quote_amount) \n FROM bidding_companies \n WHERE bidding_id = \"biddings\".\"id\" \n AND final_quote_amount IS NOT NULL\n )\n as \"min_final_quote_amount\", \n (\n SELECT MAX(final_quote_amount) \n FROM bidding_companies \n WHERE bidding_id = \"biddings\".\"id\" \n AND final_quote_amount IS NOT NULL\n )\n as \"max_final_quote_amount\", \n COALESCE((\n SELECT count(*) \n FROM bidding_companies \n WHERE bidding_id = \"biddings\".\"id\" \n AND is_pre_quote_selected = true\n ), 0)\n as \"selected_for_final_bid_count\", \n COALESCE((\n SELECT count(*) \n FROM bidding_companies \n WHERE bidding_id = \"biddings\".\"id\" \n AND is_winner = true\n ), 0)\n as \"winner_count\", \n (\n SELECT array_agg(v.vendor_name ORDER BY v.vendor_name)\n FROM bidding_companies bc\n JOIN vendors v ON bc.company_id = v.id\n WHERE bc.bidding_id = \"biddings\".\"id\" \n AND bc.is_winner = true\n )\n as \"winner_company_names\", \n CASE \n WHEN \"biddings\".\"submission_start_date\" IS NULL OR \"biddings\".\"submission_end_date\" IS NULL \n THEN 'not_scheduled'\n WHEN NOW() < \"biddings\".\"submission_start_date\" \n THEN 'scheduled'\n WHEN NOW() BETWEEN \"biddings\".\"submission_start_date\" AND \"biddings\".\"submission_end_date\" \n THEN 'active'\n WHEN NOW() > \"biddings\".\"submission_end_date\" \n THEN 'closed'\n ELSE 'unknown'\n END\n as \"submission_status\", \n CASE \n WHEN \"biddings\".\"submission_end_date\" IS NOT NULL \n AND NOW() < \"biddings\".\"submission_end_date\" \n THEN EXTRACT(DAYS FROM (\"biddings\".\"submission_end_date\" - NOW()))::integer\n ELSE NULL \n END\n as \"days_until_deadline\", \n CASE \n WHEN \"biddings\".\"submission_start_date\" IS NOT NULL \n AND NOW() < \"biddings\".\"submission_start_date\" \n THEN EXTRACT(DAYS FROM (\"biddings\".\"submission_start_date\" - NOW()))::integer\n ELSE NULL \n END\n as \"days_until_start\", \n CASE \n WHEN \"biddings\".\"budget\" IS NOT NULL AND \"biddings\".\"budget\" > 0\n AND (\n SELECT MIN(final_quote_amount) \n FROM bidding_companies \n WHERE bidding_id = \"biddings\".\"id\" \n AND final_quote_amount IS NOT NULL\n ) IS NOT NULL\n THEN ROUND(\n (\n SELECT MIN(final_quote_amount) \n FROM bidding_companies \n WHERE bidding_id = \"biddings\".\"id\" \n AND final_quote_amount IS NOT NULL\n ) / \"biddings\".\"budget\" * 100, 1\n )\n ELSE NULL \n END\n as \"budget_efficiency_rate\", \n CASE \n WHEN \"biddings\".\"target_price\" IS NOT NULL AND \"biddings\".\"target_price\" > 0\n AND (\n SELECT MIN(final_quote_amount) \n FROM bidding_companies \n WHERE bidding_id = \"biddings\".\"id\" \n AND final_quote_amount IS NOT NULL\n ) IS NOT NULL\n THEN ROUND(\n (\n SELECT MIN(final_quote_amount) \n FROM bidding_companies \n WHERE bidding_id = \"biddings\".\"id\" \n AND final_quote_amount IS NOT NULL\n ) / \"biddings\".\"target_price\" * 100, 1\n )\n ELSE NULL \n END\n as \"target_price_efficiency_rate\", \n CASE \"biddings\".\"status\"\n WHEN 'bidding_generated' THEN 10\n WHEN 'request_for_quotation' THEN 20\n WHEN 'received_quotation' THEN 40\n WHEN 'set_target_price' THEN 60\n WHEN 'bidding_opened' THEN 70\n WHEN 'bidding_closed' THEN 80\n WHEN 'evaluation_of_bidding' THEN 90\n WHEN 'vendor_selected' THEN 100\n WHEN 'bidding_disposal' THEN 0\n ELSE 0\n END\n as \"progress_score\", \n GREATEST(\n \"biddings\".\"updated_at\",\n COALESCE((\n SELECT MAX(updated_at) \n FROM bidding_companies \n WHERE bidding_id = \"biddings\".\"id\"\n ), \"biddings\".\"updated_at\")\n )\n as \"last_activity_date\" from \"biddings\" left join \"specification_meetings\" on \"biddings\".\"id\" = \"specification_meetings\".\"bidding_id\"", + "name": "bidding_list_view", + "schema": "public", + "isExisting": false, + "materialized": false + }, + "risks.risks_view": { + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "event_type": { + "name": "event_type", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "vendor_id": { + "name": "vendor_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "vendor_code": { + "name": "vendor_code", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "vendor_name": { + "name": "vendor_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "tax_id": { + "name": "tax_id", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "provider": { + "name": "provider", + "type": "varchar(128)", + "primaryKey": false, + "notNull": true + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "event_status": { + "name": "event_status", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "manager_id": { + "name": "manager_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "admin_comment": { + "name": "admin_comment", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "occurred_at": { + "name": "occurred_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "definition": "select \"risks\".\"risk_events\".\"id\", \"risks\".\"risk_events\".\"event_type\", \"risks\".\"risk_events\".\"vendor_id\", \"vendors\".\"vendor_code\", \"vendors\".\"vendor_name\", \"vendors\".\"tax_id\", \"risks\".\"risk_events\".\"provider\", \"risks\".\"risk_events\".\"content\", \n CASE \n WHEN \"risks\".\"risk_events\".\"event_type\" = '종합등급' THEN \n COALESCE((\n SELECT content \n FROM \"risks\".risk_events re2 \n WHERE re2.vendor_id = \"risks\".\"risk_events\".\"vendor_id\" \n AND re2.event_type = '종합등급' \n AND re2.occurred_at < \"risks\".\"risk_events\".\"occurred_at\"\n ORDER BY re2.occurred_at DESC \n LIMIT 1\n ), '-')\n ELSE \n COALESCE((\n SELECT content \n FROM \"risks\".risk_events re2 \n WHERE re2.vendor_id = \"risks\".\"risk_events\".\"vendor_id\" \n AND re2.event_type = '종합등급' \n AND re2.occurred_at <= \"risks\".\"risk_events\".\"occurred_at\"\n ORDER BY re2.occurred_at DESC \n LIMIT 1\n ), '-')\n END\n as \"prev_rating_total\", \n CASE \n WHEN \"risks\".\"risk_events\".\"event_type\" = '종합등급' THEN \n \"risks\".\"risk_events\".\"content\"\n ELSE \n COALESCE((\n SELECT content \n FROM \"risks\".risk_events re2 \n WHERE re2.vendor_id = \"risks\".\"risk_events\".\"vendor_id\" \n AND re2.event_type = '종합등급' \n AND re2.occurred_at <= \"risks\".\"risk_events\".\"occurred_at\"\n ORDER BY re2.occurred_at DESC \n LIMIT 1\n ), '-')\n END\n as \"cur_rating_total\", \n CASE \n WHEN \"risks\".\"risk_events\".\"event_type\" = '신용등급' THEN \n COALESCE((\n SELECT content \n FROM \"risks\".risk_events re2 \n WHERE re2.vendor_id = \"risks\".\"risk_events\".\"vendor_id\" \n AND re2.event_type = '신용등급' \n AND re2.occurred_at < \"risks\".\"risk_events\".\"occurred_at\"\n ORDER BY re2.occurred_at DESC \n LIMIT 1\n ), '-')\n ELSE \n COALESCE((\n SELECT content \n FROM \"risks\".risk_events re2 \n WHERE re2.vendor_id = \"risks\".\"risk_events\".\"vendor_id\" \n AND re2.event_type = '신용등급' \n AND re2.occurred_at <= \"risks\".\"risk_events\".\"occurred_at\"\n ORDER BY re2.occurred_at DESC \n LIMIT 1\n ), '-')\n END\n as \"prev_rating_credit\", \n CASE \n WHEN \"risks\".\"risk_events\".\"event_type\" = '신용등급' THEN \n \"risks\".\"risk_events\".\"content\"\n ELSE \n COALESCE((\n SELECT content \n FROM \"risks\".risk_events re2 \n WHERE re2.vendor_id = \"risks\".\"risk_events\".\"vendor_id\" \n AND re2.event_type = '신용등급' \n AND re2.occurred_at <= \"risks\".\"risk_events\".\"occurred_at\"\n ORDER BY re2.occurred_at DESC \n LIMIT 1\n ), '-')\n END\n as \"cur_rating_credit\", \n CASE \n WHEN \"risks\".\"risk_events\".\"event_type\" = '현금흐름등급' THEN \n COALESCE((\n SELECT content \n FROM \"risks\".risk_events re2 \n WHERE re2.vendor_id = \"risks\".\"risk_events\".\"vendor_id\" \n AND re2.event_type = '현금흐름등급' \n AND re2.occurred_at < \"risks\".\"risk_events\".\"occurred_at\"\n ORDER BY re2.occurred_at DESC \n LIMIT 1\n ), '-')\n ELSE \n COALESCE((\n SELECT content \n FROM \"risks\".risk_events re2 \n WHERE re2.vendor_id = \"risks\".\"risk_events\".\"vendor_id\" \n AND re2.event_type = '현금흐름등급' \n AND re2.occurred_at <= \"risks\".\"risk_events\".\"occurred_at\"\n ORDER BY re2.occurred_at DESC \n LIMIT 1\n ), '-')\n END\n as \"prev_rating_cashflow\", \n CASE \n WHEN \"risks\".\"risk_events\".\"event_type\" = '현금흐름등급' THEN \n \"risks\".\"risk_events\".\"content\"\n ELSE \n COALESCE((\n SELECT content \n FROM \"risks\".risk_events re2 \n WHERE re2.vendor_id = \"risks\".\"risk_events\".\"vendor_id\" \n AND re2.event_type = '현금흐름등급' \n AND re2.occurred_at <= \"risks\".\"risk_events\".\"occurred_at\"\n ORDER BY re2.occurred_at DESC \n LIMIT 1\n ), '-')\n END\n as \"cur_rating_cashflow\", \n CASE \n WHEN \"risks\".\"risk_events\".\"event_type\" = 'WATCH등급' THEN \n COALESCE((\n SELECT content \n FROM \"risks\".risk_events re2 \n WHERE re2.vendor_id = \"risks\".\"risk_events\".\"vendor_id\" \n AND re2.event_type = 'WATCH등급' \n AND re2.occurred_at < \"risks\".\"risk_events\".\"occurred_at\"\n ORDER BY re2.occurred_at DESC \n LIMIT 1\n ), '-')\n ELSE \n COALESCE((\n SELECT content \n FROM \"risks\".risk_events re2 \n WHERE re2.vendor_id = \"risks\".\"risk_events\".\"vendor_id\" \n AND re2.event_type = 'WATCH등급' \n AND re2.occurred_at <= \"risks\".\"risk_events\".\"occurred_at\"\n ORDER BY re2.occurred_at DESC \n LIMIT 1\n ), '-')\n END\n as \"prev_rating_watch\", \n CASE \n WHEN \"risks\".\"risk_events\".\"event_type\" = 'WATCH등급' THEN \n \"risks\".\"risk_events\".\"content\"\n ELSE \n COALESCE((\n SELECT content \n FROM \"risks\".risk_events re2 \n WHERE re2.vendor_id = \"risks\".\"risk_events\".\"vendor_id\" \n AND re2.event_type = 'WATCH등급' \n AND re2.occurred_at <= \"risks\".\"risk_events\".\"occurred_at\"\n ORDER BY re2.occurred_at DESC \n LIMIT 1\n ), '-')\n END\n as \"cur_rating_watch\", \"risks\".\"risk_events\".\"event_status\", \"risks\".\"risk_events\".\"manager_id\", \"users\".\"name\", \"risks\".\"risk_events\".\"admin_comment\", \"risks\".\"risk_events\".\"occurred_at\" from \"risks\".\"risk_events\" left join \"vendors\" on \"vendors\".\"id\" = \"risks\".\"risk_events\".\"vendor_id\" left join \"users\" on \"users\".\"id\" = \"risks\".\"risk_events\".\"manager_id\"", + "name": "risks_view", + "schema": "risks", + "isExisting": false, + "materialized": false + } + }, + "_meta": { + "columns": {}, + "schemas": {}, + "tables": {} + } +}
\ No newline at end of file diff --git a/db/migrations/meta/_journal.json b/db/migrations/meta/_journal.json index 0fbd1141..546d699c 100644 --- a/db/migrations/meta/_journal.json +++ b/db/migrations/meta/_journal.json @@ -2115,6 +2115,13 @@ "when": 1755746913826, "tag": "0301_melted_vargas", "breakpoints": true + }, + { + "idx": 302, + "version": "7", + "when": 1756083044120, + "tag": "0302_happy_expediter", + "breakpoints": true } ] }
\ No newline at end of file diff --git a/i18n/locales/en/menu.json b/i18n/locales/en/menu.json index 1668f912..1fc23fe9 100644 --- a/i18n/locales/en/menu.json +++ b/i18n/locales/en/menu.json @@ -1,6 +1,6 @@ { "branding": { - "evcp_main": "eVCP Samsung Heavy Industries", + "evcp_main": "eVCP", "evcp_partners": "eVCP Partners", "evcp_procurement": "eVCP Procurement", "evcp_sales": "eVCP Technical Sales", @@ -12,7 +12,7 @@ "procurement_info": "Procurement Information", "risk_management": "Risk Management", "common": "Common", - "rfq_management": "RFQ Management", + "rfq_management": "RFQ", "quote_bid_management": "Quote/Bid Management", "evaluation_management": "Evaluation Management", "order_management": "Order Management", @@ -31,7 +31,7 @@ }, "menu": { "master_data": { - "title": "Master Data Management", + "title": "Master Data", "bid_projects": "Bid Project List", "bid_projects_desc": "Bid project list received from MDG (P)", "projects": "Project List", @@ -73,7 +73,7 @@ "gtc":"General Terms and Conditions" }, "engineering_management": { - "title": "Engineering Management", + "title": "Engineering", "document_list_only": "Document/Drawing List Management(Plant)", "document_list_only_desc": "Manage vendor submission document/drawing lists", "document_list_ship": "Document/Drawing List Management(Ship)", @@ -82,7 +82,7 @@ "vendor_data_desc": "Input and manage vendor design data" }, "vendor_management": { - "title": "Vendor Management", + "title": "Vendor", "candidates": "Vendor Candidate Registration Management", "candidates_desc": "Register and manage vendors discovered through sourcing activities and invite them", "vendors": "Vendor Management", @@ -138,7 +138,7 @@ "offshore_hull_rfq_desc": "Create RFQ and track status" }, "procurement": { - "title": "Procurement Management", + "title": "Procurement", "budget_rfq": "Budget RFQ", "budget_rfq_desc": "Request and manage quotations to estimate budget or target price", "rfq_pr": "RFQ(PR)", @@ -157,7 +157,7 @@ "general_contract_desc": "General contract management" }, "information_system": { - "title": "Information System", + "title": "System", "information": "Information Management", "notice": "Notice Management", "menu_list": "Menu List", diff --git a/i18n/locales/ko/menu.json b/i18n/locales/ko/menu.json index d46943aa..7b5e18d3 100644 --- a/i18n/locales/ko/menu.json +++ b/i18n/locales/ko/menu.json @@ -1,10 +1,10 @@ { "branding": { - "evcp_main": "eVCP 삼성중공업", + "evcp_main": "eVCP", "evcp_partners": "eVCP Partners", - "evcp_procurement": "eVCP 구매관리", + "evcp_procurement": "eVCP 구매", "evcp_sales": "eVCP 기술영업", - "evcp_engineering": "eVCP 설계관리" + "evcp_engineering": "eVCP 설계" }, "groups": { "basic_info": "기본 정보", @@ -30,7 +30,7 @@ }, "menu": { "master_data": { - "title": "기준 정보 관리", + "title": "기준 정보", "bid_projects": "견적 프로젝트 리스트", "bid_projects_desc": "MDG에서 받은 견적 프로젝트 리스트(P)", "projects": "프로젝트 리스트", @@ -72,7 +72,7 @@ "gtc":"General Terms and Conditions" }, "engineering_management": { - "title": "설계 관리", + "title": "설계", "document_list_only": "문서/도서 리스트 관리(해양)", "document_list_only_desc": "벤더의 제출 도서/문서의 리스트를 관리", "document_list_ship": "문서/도서 리스트 관리(조선)", @@ -137,7 +137,7 @@ "offshore_hull_rfq_desc": "RFQ 작성을 할 수 있고 현황을 파악" }, "procurement": { - "title": "구매 관리", + "title": "구매", "budget_rfq": "견적 RFQ", "budget_rfq_desc": "예산이나 내정가를 산정하기 위해 견적을 요청하고 관리", "rfq_pr": "RFQ(PR)", diff --git a/lib/basic-contract/service.ts b/lib/basic-contract/service.ts index 64a50d14..58463f16 100644 --- a/lib/basic-contract/service.ts +++ b/lib/basic-contract/service.ts @@ -11,9 +11,18 @@ import { BasicContractTemplate,
basicContractTemplates,
basicContractView,
+ complianceQuestionOptions,
+ complianceQuestions,
+ complianceResponseAnswers,
+ complianceResponseFiles,
+ complianceResponses,
+ complianceSurveyTemplates,
vendorAttachments,
vendors,
type BasicContractTemplate as DBBasicContractTemplate,
+ type NewComplianceResponse,
+ type NewComplianceResponseAnswer,
+ type NewComplianceResponseFile
} from "@/db/schema";
import {
@@ -1172,3 +1181,500 @@ export async function getVendorAttachments(vendorId: number) { };
}
}
+
+// 설문조사 템플릿 전체 데이터 타입
+export interface SurveyTemplateWithQuestions {
+ id: number;
+ name: string;
+ description: string | null;
+ version: string;
+ questions: SurveyQuestion[];
+}
+
+export interface SurveyQuestion {
+ id: number;
+ questionNumber: string;
+ questionText: string;
+ questionType: string;
+ isRequired: boolean;
+ hasDetailText: boolean;
+ hasFileUpload: boolean;
+ parentQuestionId: number | null;
+ conditionalValue: string | null;
+ displayOrder: number;
+ options: SurveyQuestionOption[];
+}
+
+export interface SurveyQuestionOption {
+ id: number;
+ optionValue: string;
+ optionText: string;
+ allowsOtherInput: boolean;
+ displayOrder: number;
+}
+
+/**
+ * 활성화된 첫 번째 설문조사 템플릿과 관련 데이터를 모두 가져오기
+ */
+export async function getActiveSurveyTemplate(): Promise<SurveyTemplateWithQuestions | null> {
+ try {
+ // 1. 활성화된 첫 번째 템플릿 가져오기
+ const template = await db
+ .select()
+ .from(complianceSurveyTemplates)
+ .where(eq(complianceSurveyTemplates.isActive, true))
+ .orderBy(complianceSurveyTemplates.id)
+ .limit(1);
+
+ if (!template || template.length === 0) {
+ console.log('활성화된 설문조사 템플릿이 없습니다.');
+ return null;
+ }
+
+ const templateData = template[0];
+
+ // 2. 해당 템플릿의 모든 질문 가져오기 (displayOrder 순)
+ const questions = await db
+ .select()
+ .from(complianceQuestions)
+ .where(eq(complianceQuestions.templateId, templateData.id))
+ .orderBy(asc(complianceQuestions.displayOrder));
+
+ // 3. 각 질문의 옵션들 가져오기
+ const questionIds = questions.map(q => q.id);
+ const allOptions = questionIds.length > 0
+ ? await db
+ .select()
+ .from(complianceQuestionOptions)
+ .where(inArray(complianceQuestionOptions.questionId, questionIds))
+ .orderBy(
+ complianceQuestionOptions.questionId,
+ asc(complianceQuestionOptions.displayOrder)
+ )
+ : [];
+
+
+ // 4. 질문별로 옵션들 그룹화
+ const optionsByQuestionId = allOptions.reduce((acc, option) => {
+ if (!acc[option.questionId]) {
+ acc[option.questionId] = [];
+ }
+ acc[option.questionId].push({
+ id: option.id,
+ optionValue: option.optionValue,
+ optionText: option.optionText,
+ allowsOtherInput: option.allowsOtherInput,
+ displayOrder: option.displayOrder,
+ });
+ return acc;
+ }, {} as Record<number, SurveyQuestionOption[]>);
+
+ // 5. 최종 데이터 구성
+ const questionsWithOptions: SurveyQuestion[] = questions.map(question => ({
+ id: question.id,
+ questionNumber: question.questionNumber,
+ questionText: question.questionText,
+ questionType: question.questionType,
+ isRequired: question.isRequired,
+ hasDetailText: question.hasDetailText,
+ hasFileUpload: question.hasFileUpload,
+ parentQuestionId: question.parentQuestionId,
+ conditionalValue: question.conditionalValue,
+ displayOrder: question.displayOrder,
+ options: optionsByQuestionId[question.id] || [],
+ }));
+
+ return {
+ id: templateData.id,
+ name: templateData.name,
+ description: templateData.description,
+ version: templateData.version,
+ questions: questionsWithOptions,
+ };
+
+ } catch (error) {
+ console.error('설문조사 템플릿 로드 실패:', error);
+ return null;
+ }
+}
+
+/**
+ * 특정 템플릿 ID로 설문조사 템플릿 가져오기
+ */
+export async function getSurveyTemplateById(templateId: number): Promise<SurveyTemplateWithQuestions | null> {
+ try {
+ const template = await db
+ .select()
+ .from(complianceSurveyTemplates)
+ .where(eq(complianceSurveyTemplates.id, templateId))
+ .limit(1);
+
+ if (!template || template.length === 0) {
+ return null;
+ }
+
+ const templateData = template[0];
+
+ const questions = await db
+ .select()
+ .from(complianceQuestions)
+ .where(eq(complianceQuestions.templateId, templateId))
+ .orderBy(asc(complianceQuestions.displayOrder));
+
+ const questionIds = questions.map(q => q.id);
+ const allOptions = questionIds.length > 0
+ ? await db
+ .select()
+ .from(complianceQuestionOptions)
+ .where(
+ complianceQuestionOptions.questionId.in ?
+ complianceQuestionOptions.questionId.in(questionIds) :
+ eq(complianceQuestionOptions.questionId, questionIds[0])
+ )
+ .orderBy(
+ complianceQuestionOptions.questionId,
+ asc(complianceQuestionOptions.displayOrder)
+ )
+ : [];
+
+ const optionsByQuestionId = allOptions.reduce((acc, option) => {
+ if (!acc[option.questionId]) {
+ acc[option.questionId] = [];
+ }
+ acc[option.questionId].push({
+ id: option.id,
+ optionValue: option.optionValue,
+ optionText: option.optionText,
+ allowsOtherInput: option.allowsOtherInput,
+ displayOrder: option.displayOrder,
+ });
+ return acc;
+ }, {} as Record<number, SurveyQuestionOption[]>);
+
+ const questionsWithOptions: SurveyQuestion[] = questions.map(question => ({
+ id: question.id,
+ questionNumber: question.questionNumber,
+ questionText: question.questionText,
+ questionType: question.questionType,
+ isRequired: question.isRequired,
+ hasDetailText: question.hasDetailText,
+ hasFileUpload: question.hasFileUpload,
+ parentQuestionId: question.parentQuestionId,
+ conditionalValue: question.conditionalValue,
+ displayOrder: question.displayOrder,
+ options: optionsByQuestionId[question.id] || [],
+ }));
+
+ return {
+ id: templateData.id,
+ name: templateData.name,
+ description: templateData.description,
+ version: templateData.version,
+ questions: questionsWithOptions,
+ };
+
+ } catch (error) {
+ console.error('설문조사 템플릿 로드 실패:', error);
+ return null;
+ }
+}
+
+
+// 설문 답변 데이터 타입 정의
+export interface SurveyAnswerData {
+ questionId: number;
+ answerValue?: string;
+ detailText?: string;
+ otherText?: string;
+ files?: File[];
+}
+
+// 설문조사 완료 요청 데이터 타입
+export interface CompleteSurveyRequest {
+ contractId: number;
+ templateId: number;
+ answers: SurveyAnswerData[];
+ progressStatus?: any; // 진행 상태 정보 (옵션)
+}
+
+// 서버 액션: 설문조사 완료 처리
+export async function completeSurvey(data: CompleteSurveyRequest) {
+ try {
+ console.log('🚀 설문조사 완료 처리 시작:', {
+ contractId: data.contractId,
+ templateId: data.templateId,
+ answersCount: data.answers?.length || 0
+ });
+
+ // 입력 검증
+ if (!data.contractId || !data.templateId || !data.answers?.length) {
+ throw new Error('필수 데이터가 누락되었습니다.');
+ }
+
+ // 트랜잭션으로 처리
+ const result = await db.transaction(async (tx) => {
+ // 1. complianceResponses 테이블 upsert
+ console.log('📋 complianceResponses 처리 중...');
+
+ // 기존 응답 확인
+ const existingResponse = await tx
+ .select()
+ .from(complianceResponses)
+ .where(
+ and(
+ eq(complianceResponses.basicContractId, data.contractId),
+ eq(complianceResponses.templateId, data.templateId)
+ )
+ )
+ .limit(1);
+
+ let responseId: number;
+
+ if (existingResponse.length > 0) {
+ // 기존 응답 업데이트
+ const updateData = {
+ status: 'COMPLETED' as const,
+ completedAt: new Date(),
+ updatedAt: new Date()
+ };
+
+ await tx
+ .update(complianceResponses)
+ .set(updateData)
+ .where(eq(complianceResponses.id, existingResponse[0].id));
+
+ responseId = existingResponse[0].id;
+ console.log(`✅ 기존 응답 업데이트 완료: ID ${responseId}`);
+ } else {
+ // 새 응답 생성
+ const newResponse: NewComplianceResponse = {
+ basicContractId: data.contractId,
+ templateId: data.templateId,
+ status: 'COMPLETED',
+ completedAt: new Date()
+ };
+
+ const insertResult = await tx
+ .insert(complianceResponses)
+ .values(newResponse)
+ .returning({ id: complianceResponses.id });
+
+ responseId = insertResult[0].id;
+ console.log(`✅ 새 응답 생성 완료: ID ${responseId}`);
+ }
+
+ // 2. 기존 답변들 삭제 (파일도 함께 삭제됨 - CASCADE 설정 필요)
+ console.log('🗑️ 기존 답변들 삭제 중...');
+
+ // 먼저 기존 답변에 연결된 파일들 삭제
+ const existingAnswers = await tx
+ .select({ id: complianceResponseAnswers.id })
+ .from(complianceResponseAnswers)
+ .where(eq(complianceResponseAnswers.responseId, responseId));
+
+ if (existingAnswers.length > 0) {
+ const answerIds = existingAnswers.map(a => a.id);
+
+ // 파일들 먼저 삭제
+ for (const answerId of answerIds) {
+ await tx
+ .delete(complianceResponseFiles)
+ .where(eq(complianceResponseFiles.answerId, answerId));
+ }
+
+ // 답변들 삭제
+ await tx
+ .delete(complianceResponseAnswers)
+ .where(eq(complianceResponseAnswers.responseId, responseId));
+ }
+
+ // 3. 새로운 답변들 생성
+ console.log('📝 새로운 답변들 생성 중...');
+ const createdAnswers: { questionId: number; answerId: number; files?: File[] }[] = [];
+
+ for (const answer of data.answers) {
+ // 빈 답변은 스킵 (선택적 질문의 경우)
+ if (!answer.answerValue && !answer.detailText && (!answer.files || answer.files.length === 0)) {
+ continue;
+ }
+
+ const newAnswer: NewComplianceResponseAnswer = {
+ responseId,
+ questionId: answer.questionId,
+ answerValue: answer.answerValue || null,
+ detailText: answer.detailText || null,
+ otherText: answer.otherText || null,
+ // percentageValue는 필요시 추가 처리
+ };
+
+ const answerResult = await tx
+ .insert(complianceResponseAnswers)
+ .values(newAnswer)
+ .returning({ id: complianceResponseAnswers.id });
+
+ const answerId = answerResult[0].id;
+
+ createdAnswers.push({
+ questionId: answer.questionId,
+ answerId,
+ files: answer.files
+ });
+
+ console.log(`✅ 답변 생성: 질문 ${answer.questionId} -> 답변 ID ${answerId}`);
+ }
+
+ // 4. 파일 업로드 처리 (실제 파일 저장은 별도 로직 필요)
+ console.log('📎 파일 업로드 처리 중...');
+
+ for (const answerWithFiles of createdAnswers) {
+ if (answerWithFiles.files && answerWithFiles.files.length > 0) {
+ for (const file of answerWithFiles.files) {
+ // TODO: 실제 파일 저장 로직 구현 필요
+ // 현재는 파일 메타데이터만 저장
+
+
+ // 파일 저장 경로 생성 (예시)
+ const fileName = file.name;
+ const filePath = `/uploads/compliance/${data.contractId}/${responseId}/${answerWithFiles.answerId}/${fileName}`;
+
+ const fileUpload = await saveFile({file,filePath })
+
+ const newFile: NewComplianceResponseFile = {
+ answerId: answerWithFiles.answerId,
+ fileName,
+ filePath,
+ fileSize: file.size,
+ mimeType: file.type || 'application/octet-stream'
+ };
+
+ await tx
+ .insert(complianceResponseFiles)
+ .values(newFile);
+
+ console.log(`📎 파일 메타데이터 저장: ${fileName}`);
+ }
+ }
+ }
+
+ return {
+ responseId,
+ answersCount: createdAnswers.length,
+ success: true
+ };
+ });
+
+ console.log('🎉 설문조사 완료 처리 성공:', result);
+
+
+ return {
+ success: true,
+ message: '설문조사가 성공적으로 완료되었습니다.',
+ data: result
+ };
+
+ } catch (error) {
+ console.error('❌ 설문조사 완료 처리 실패:', error);
+
+ return {
+ success: false,
+ message: error instanceof Error ? error.message : '설문조사 저장에 실패했습니다.',
+ data: null
+ };
+ }
+}
+
+// 설문조사 응답 조회 서버 액션
+export async function getSurveyResponse(contractId: number, templateId: number) {
+ try {
+ const response = await db
+ .select()
+ .from(complianceResponses)
+ .where(
+ and(
+ eq(complianceResponses.basicContractId, contractId),
+ eq(complianceResponses.templateId, templateId)
+ )
+ )
+ .limit(1);
+
+ if (response.length === 0) {
+ return { success: true, data: null };
+ }
+
+ // 답변들과 파일들도 함께 조회
+ const answers = await db
+ .select({
+ id: complianceResponseAnswers.id,
+ questionId: complianceResponseAnswers.questionId,
+ answerValue: complianceResponseAnswers.answerValue,
+ detailText: complianceResponseAnswers.detailText,
+ otherText: complianceResponseAnswers.otherText,
+ percentageValue: complianceResponseAnswers.percentageValue,
+ })
+ .from(complianceResponseAnswers)
+ .where(eq(complianceResponseAnswers.responseId, response[0].id));
+
+ // 각 답변의 파일들 조회
+ const answersWithFiles = await Promise.all(
+ answers.map(async (answer) => {
+ const files = await db
+ .select()
+ .from(complianceResponseFiles)
+ .where(eq(complianceResponseFiles.answerId, answer.id));
+
+ return {
+ ...answer,
+ files
+ };
+ })
+ );
+
+ return {
+ success: true,
+ data: {
+ response: response[0],
+ answers: answersWithFiles
+ }
+ };
+
+ } catch (error) {
+ console.error('❌ 설문조사 응답 조회 실패:', error);
+
+ return {
+ success: false,
+ message: error instanceof Error ? error.message : '설문조사 응답 조회에 실패했습니다.',
+ data: null
+ };
+ }
+}
+
+// 파일 업로드를 위한 별도 서버 액션 (실제 파일 저장 로직)
+export async function uploadSurveyFile(file: File, contractId: number, answerId: number) {
+ try {
+ // TODO: 실제 파일 저장 구현
+ // 예: AWS S3, 로컬 파일시스템, 등등
+
+ // 현재는 예시 구현
+ const fileName = `${Date.now()}-${file.name}`;
+ const filePath = `/uploads/compliance/${contractId}/${answerId}/${fileName}`;
+
+ // 실제로는 여기서 파일을 물리적으로 저장해야 함
+ // const savedPath = await saveFileToStorage(file, filePath);
+
+ return {
+ success: true,
+ filePath,
+ fileName: file.name,
+ fileSize: file.size,
+ mimeType: file.type
+ };
+
+ } catch (error) {
+ console.error('❌ 파일 업로드 실패:', error);
+
+ return {
+ success: false,
+ message: error instanceof Error ? error.message : '파일 업로드에 실패했습니다.'
+ };
+ }
+}
\ No newline at end of file diff --git a/lib/basic-contract/vendor-table/basic-contract-sign-dialog.tsx b/lib/basic-contract/vendor-table/basic-contract-sign-dialog.tsx index 7d828a7e..319ae4b9 100644 --- a/lib/basic-contract/vendor-table/basic-contract-sign-dialog.tsx +++ b/lib/basic-contract/vendor-table/basic-contract-sign-dialog.tsx @@ -19,7 +19,10 @@ import { User, AlertCircle, Calendar, - Loader2 + Loader2, + ArrowRight, + Trophy, + Target } from "lucide-react"; import { Input } from "@/components/ui/input"; import { Badge } from "@/components/ui/badge"; @@ -28,6 +31,13 @@ import { useRouter } from "next/navigation" import { BasicContractSignViewer } from "../viewer/basic-contract-sign-viewer"; import { getVendorAttachments } from "../service"; +// 계약서 상태 타입 정의 +interface ContractStatus { + id: number; + status: 'pending' | 'completed' | 'error'; + errorMessage?: string; +} + interface BasicContractSignDialogProps { contracts: BasicContractView[]; onSuccess?: () => void; @@ -51,6 +61,13 @@ export function BasicContractSignDialog({ const [additionalFiles, setAdditionalFiles] = React.useState<any[]>([]); const [isLoadingAttachments, setIsLoadingAttachments] = React.useState(false); + // 계약서 상태 관리 + const [contractStatuses, setContractStatuses] = React.useState<ContractStatus[]>([]); + + // 🔥 새로 추가: 서명/설문 완료 상태 관리 + const [surveyCompletionStatus, setSurveyCompletionStatus] = React.useState<Record<number, boolean>>({}); + const [signatureStatus, setSignatureStatus] = React.useState<Record<number, boolean>>({}); + const router = useRouter() console.log(selectedContract,"selectedContract") @@ -70,15 +87,81 @@ export function BasicContractSignDialog({ return ""; }; + // 🔥 현재 선택된 계약서의 서명 완료 가능 여부 확인 + const canCompleteCurrentContract = React.useMemo(() => { + if (!selectedContract) return false; + + const contractId = selectedContract.id; + const isComplianceTemplate = selectedContract.templateName?.includes('준법'); + + // 1. 준법 템플릿인 경우 설문조사 완료 여부 확인 + const surveyCompleted = isComplianceTemplate ? surveyCompletionStatus[contractId] === true : true; + + // 2. 서명 완료 여부 확인 + const signatureCompleted = signatureStatus[contractId] === true; + + console.log('🔍 서명 완료 가능 여부 체크:', { + contractId, + isComplianceTemplate, + surveyCompleted, + signatureCompleted, + canComplete: surveyCompleted && signatureCompleted + }); + + return surveyCompleted && signatureCompleted; + }, [selectedContract, surveyCompletionStatus, signatureStatus]); + + // 계약서별 상태 초기화 + React.useEffect(() => { + if (contracts.length > 0 && contractStatuses.length === 0) { + setContractStatuses( + contracts.map(contract => ({ + id: contract.id, + status: 'pending' as const + })) + ); + } + }, [contracts, contractStatuses.length]); + + // 완료된 계약서 수 계산 + const completedCount = contractStatuses.filter(status => status.status === 'completed').length; + const totalCount = contracts.length; + const allCompleted = completedCount === totalCount && totalCount > 0; + + // 현재 선택된 계약서의 상태 + const currentContractStatus = selectedContract + ? contractStatuses.find(status => status.id === selectedContract.id) + : null; + + // 다음 미완료 계약서 찾기 + const getNextPendingContract = () => { + const pendingStatuses = contractStatuses.filter(status => status.status === 'pending'); + if (pendingStatuses.length === 0) return null; + + const nextPendingId = pendingStatuses[0].id; + return contracts.find(contract => contract.id === nextPendingId) || null; + }; + // 다이얼로그 열기/닫기 핸들러 const handleOpenChange = (isOpen: boolean) => { + if (!isOpen && !allCompleted && completedCount > 0) { + // 완료되지 않은 계약서가 있으면 확인 대화상자 + const confirmClose = window.confirm( + `${completedCount}/${totalCount}개 계약서가 완료되었습니다. 정말 나가시겠습니까?` + ); + if (!confirmClose) return; + } + setOpen(isOpen); if (!isOpen) { // 다이얼로그 닫을 때 상태 초기화 setSelectedContract(null); setSearchTerm(""); - setAdditionalFiles([]); // 추가 파일 상태 초기화 + setAdditionalFiles([]); + setContractStatuses([]); + setSurveyCompletionStatus({}); // 🔥 추가 + setSignatureStatus({}); // 🔥 추가 // WebViewer 인스턴스 정리 if (instance) { try { @@ -108,12 +191,17 @@ export function BasicContractSignDialog({ ); }, [contracts, searchTerm]); - // 다이얼로그가 열릴 때 첫 번째 계약서 자동 선택 + // 다이얼로그가 열릴 때 첫 번째 미완료 계약서 자동 선택 React.useEffect(() => { if (open && contracts.length > 0 && !selectedContract) { - setSelectedContract(contracts[0]); + const firstPending = getNextPendingContract(); + if (firstPending) { + setSelectedContract(firstPending); + } else { + setSelectedContract(contracts[0]); + } } - }, [open, contracts, selectedContract]); + }, [open, contracts, selectedContract, contractStatuses]); // 추가 파일 가져오기 useEffect React.useEffect(() => { @@ -149,10 +237,54 @@ export function BasicContractSignDialog({ fetchAdditionalFiles(); }, [selectedContract]); - // 서명 완료 핸들러 + // 🔥 설문조사 완료 콜백 함수 + const handleSurveyComplete = React.useCallback((contractId: number) => { + console.log(`📋 설문조사 완료: 계약서 ${contractId}`); + setSurveyCompletionStatus(prev => ({ + ...prev, + [contractId]: true + })); + }, []); + + // 🔥 서명 완료 콜백 함수 + const handleSignatureComplete = React.useCallback((contractId: number) => { + console.log(`✍️ 서명 완료: 계약서 ${contractId}`); + setSignatureStatus(prev => ({ + ...prev, + [contractId]: true + })); + }, []); + + // 서명 완료 핸들러 (수정됨) const completeSign = async () => { if (!instance || !selectedContract) return; + // 🔥 서명 완료 가능 여부 재확인 + if (!canCompleteCurrentContract) { + const contractId = selectedContract.id; + const isComplianceTemplate = selectedContract.templateName?.includes('준법'); + const surveyCompleted = isComplianceTemplate ? surveyCompletionStatus[contractId] === true : true; + const signatureCompleted = signatureStatus[contractId] === true; + + if (!surveyCompleted) { + toast.error("준법 설문조사를 먼저 완료해주세요.", { + description: "설문조사 탭에서 모든 필수 항목을 완료해주세요.", + icon: <AlertCircle className="h-5 w-5 text-red-500" /> + }); + return; + } + + if (!signatureCompleted) { + toast.error("계약서에 서명을 먼저 완료해주세요.", { + description: "문서의 서명 필드에 서명해주세요.", + icon: <Target className="h-5 w-5 text-blue-500" /> + }); + return; + } + + return; + } + setIsSubmitting(true); try { const { documentViewer, annotationManager } = instance.Core; @@ -183,21 +315,6 @@ export function BasicContractSignDialog({ submitFormData.append('formData', JSON.stringify(formData)); } - // 준법 템플릿인 경우 필수 필드 검증 - if (selectedContract.templateName?.includes('준법')) { - const requiredFields = ['compliance_agreement', 'legal_review', 'risk_assessment']; - const missingFields = requiredFields.filter(field => !formData[field]); - - if (missingFields.length > 0) { - toast.error("필수 준법 항목이 누락되었습니다.", { - description: `다음 항목을 완료해주세요: ${missingFields.join(', ')}`, - icon: <AlertCircle className="h-5 w-5 text-red-500" /> - }); - setIsSubmitting(false); - return; - } - } - // API 호출 const response = await fetch('/api/upload/signed-contract', { method: 'POST', @@ -208,29 +325,82 @@ export function BasicContractSignDialog({ const result = await response.json(); if (result.result) { - toast.success(t("basicContracts.messages.signSuccess"), { - description: t("basicContracts.messages.documentProcessed"), + // 성공시 해당 계약서 상태를 완료로 업데이트 + setContractStatuses(prev => + prev.map(status => + status.id === selectedContract.id + ? { ...status, status: 'completed' as const } + : status + ) + ); + + toast.success("계약서 서명이 완료되었습니다!", { + description: `${selectedContract.templateName} - ${completedCount + 1}/${totalCount}개 완료`, icon: <CheckCircle2 className="h-5 w-5 text-green-500" /> }); - router.refresh(); - setOpen(false); - if (onSuccess) { - onSuccess(); + + // 다음 미완료 계약서로 자동 이동 + const nextContract = getNextPendingContract(); + if (nextContract) { + setSelectedContract(nextContract); + toast.info(`다음 계약서로 이동합니다`, { + description: nextContract.templateName, + icon: <ArrowRight className="h-4 w-4 text-blue-500" /> + }); + } else { + // 모든 계약서 완료시 + toast.success("🎉 모든 계약서 서명이 완료되었습니다!", { + description: `총 ${totalCount}개 계약서 서명 완료`, + icon: <Trophy className="h-5 w-5 text-yellow-500" /> + }); } + + router.refresh(); } else { - toast.error(t("basicContracts.messages.signError"), { + // 실패시 에러 상태 업데이트 + setContractStatuses(prev => + prev.map(status => + status.id === selectedContract.id + ? { ...status, status: 'error' as const, errorMessage: result.error } + : status + ) + ); + + toast.error("서명 처리 중 오류가 발생했습니다", { description: result.error, icon: <AlertCircle className="h-5 w-5 text-red-500" /> }); } } catch (error) { console.error("서명 완료 중 오류:", error); - toast.error(t("basicContracts.messages.signError")); + + // 에러 상태 업데이트 + setContractStatuses(prev => + prev.map(status => + status.id === selectedContract.id + ? { ...status, status: 'error' as const, errorMessage: '서명 처리 중 오류가 발생했습니다' } + : status + ) + ); + + toast.error("서명 처리 중 오류가 발생했습니다"); } finally { setIsSubmitting(false); } }; + // 모든 서명 완료 핸들러 + const completeAllSigns = () => { + setOpen(false); + if (onSuccess) { + onSuccess(); + } + toast.success("모든 계약서 서명이 완료되었습니다!", { + description: "계약서 관리 페이지가 새로고침됩니다.", + icon: <Trophy className="h-5 w-5 text-yellow-500" /> + }); + }; + return ( <> {/* 서명 버튼 */} @@ -260,19 +430,48 @@ export function BasicContractSignDialog({ </span> </Button> - {/* 서명 다이얼로그 - 레이아웃 개선 */} + {/* 서명 다이얼로그 */} <Dialog open={open} onOpenChange={handleOpenChange}> <DialogContent className="max-w-7xl w-[95vw] h-[90vh] p-0 flex flex-col overflow-hidden" style={{width:'95vw', maxWidth:'95vw'}}> - {/* 고정 헤더 */} + {/* 고정 헤더 - 진행 상황 표시 */} <DialogHeader className="px-6 py-4 bg-gradient-to-r from-blue-50 to-purple-50 border-b flex-shrink-0"> - <DialogTitle className="text-xl font-bold flex items-center text-gray-800"> - <FileSignature className="mr-2 h-5 w-5 text-blue-500" /> - {t("basicContracts.dialog.title")} - {/* 추가 파일 로딩 표시 */} - {isLoadingAttachments && ( - <Loader2 className="ml-2 h-4 w-4 animate-spin text-blue-500" /> + <DialogTitle className="text-xl font-bold flex items-center justify-between text-gray-800"> + <div className="flex items-center"> + <FileSignature className="mr-2 h-5 w-5 text-blue-500" /> + {t("basicContracts.dialog.title")} + {/* 진행 상황 표시 */} + <Badge variant="outline" className="ml-3 bg-blue-50 text-blue-700 border-blue-200"> + {completedCount}/{totalCount} 완료 + </Badge> + {/* 추가 파일 로딩 표시 */} + {isLoadingAttachments && ( + <Loader2 className="ml-2 h-4 w-4 animate-spin text-blue-500" /> + )} + </div> + + {allCompleted && ( + <Badge variant="default" className="bg-green-100 text-green-700 border-green-200"> + <Trophy className="h-4 w-4 mr-1" /> + 전체 완료! + </Badge> )} </DialogTitle> + + {/* 진행률 바 */} + {totalCount > 1 && ( + <div className="mt-3"> + <div className="flex justify-between text-xs text-gray-600 mb-1"> + <span>전체 진행률</span> + <span>{Math.round((completedCount / totalCount) * 100)}%</span> + </div> + <div className="w-full bg-gray-200 rounded-full h-2"> + <div + className="bg-gradient-to-r from-blue-500 to-green-500 h-2 rounded-full transition-all duration-500" + style={{ width: `${(completedCount / totalCount) * 100}%` }} + /> + </div> + </div> + )} </DialogHeader> {/* 메인 컨텐츠 영역 - Flexbox 사용 */} @@ -302,49 +501,101 @@ export function BasicContractSignDialog({ </div> ) : ( <div className="space-y-2"> - {filteredContracts.map((contract) => ( - <Button - key={contract.id} - variant="outline" - className={cn( - "w-full justify-start text-left h-auto p-2 bg-white hover:bg-blue-50 transition-colors", - "border border-gray-200 hover:border-blue-200 rounded-md", - selectedContract?.id === contract.id && "border-blue-500 bg-blue-50 shadow-sm" - )} - onClick={() => handleSelectContract(contract)} - > - <div className="flex flex-col w-full space-y-1"> - {/* 첫 번째 줄: 제목 + 상태 */} - <div className="flex items-center justify-between w-full"> - <span className="font-medium text-xs truncate text-gray-800 flex items-center min-w-0"> - <FileText className="h-3 w-3 mr-1 text-blue-500 flex-shrink-0" /> - <span className="truncate">{contract.templateName || t("basicContracts.dialog.document")}</span> - {/* 비밀유지 계약서인 경우 표시 */} - {contract.templateName === "비밀유지 계약서" && ( - <Badge variant="outline" className="ml-1 bg-green-50 text-green-700 border-green-200 text-xs"> - NDA + {filteredContracts.map((contract) => { + const contractStatus = contractStatuses.find(status => status.id === contract.id); + const isCompleted = contractStatus?.status === 'completed'; + const hasError = contractStatus?.status === 'error'; + + // 🔥 계약서별 완료 상태 확인 + const isComplianceTemplate = contract.templateName?.includes('준법'); + const hasSurveyCompleted = isComplianceTemplate ? surveyCompletionStatus[contract.id] === true : true; + const hasSignatureCompleted = signatureStatus[contract.id] === true; + + return ( + <Button + key={contract.id} + variant="outline" + className={cn( + "w-full justify-start text-left h-auto p-2 bg-white transition-colors", + "border border-gray-200 rounded-md", + selectedContract?.id === contract.id && !isCompleted && "border-blue-500 bg-blue-50 shadow-sm", + isCompleted && "border-green-200 bg-green-50", + hasError && "border-red-200 bg-red-50", + !isCompleted && !hasError && "hover:bg-blue-50 hover:border-blue-200" + )} + onClick={() => handleSelectContract(contract)} + disabled={isCompleted} + > + <div className="flex flex-col w-full space-y-1"> + {/* 첫 번째 줄: 제목 + 상태 */} + <div className="flex items-center justify-between w-full"> + <span className="font-medium text-xs truncate text-gray-800 flex items-center min-w-0"> + <FileText className="h-3 w-3 mr-1 text-blue-500 flex-shrink-0" /> + <span className="truncate">{contract.templateName || t("basicContracts.dialog.document")}</span> + {/* 비밀유지 계약서인 경우 표시 */} + {contract.templateName === "비밀유지 계약서" && ( + <Badge variant="outline" className="ml-1 bg-green-50 text-green-700 border-green-200 text-xs"> + NDA + </Badge> + )} + </span> + + {/* 상태 표시 */} + {isCompleted ? ( + <Badge variant="outline" className="bg-green-50 text-green-700 border-green-200 text-xs ml-2 flex-shrink-0"> + <CheckCircle2 className="h-3 w-3 mr-1" /> + 완료 + </Badge> + ) : hasError ? ( + <Badge variant="outline" className="bg-red-50 text-red-700 border-red-200 text-xs ml-2 flex-shrink-0"> + <AlertCircle className="h-3 w-3 mr-1" /> + 오류 + </Badge> + ) : ( + <Badge variant="outline" className="bg-yellow-50 text-yellow-700 border-yellow-200 text-xs ml-2 flex-shrink-0"> + 대기 </Badge> )} - </span> - <Badge variant="outline" className="bg-yellow-50 text-yellow-700 border-yellow-200 text-xs ml-2 flex-shrink-0"> - {t("basicContracts.statusValues.PENDING")} - </Badge> - </div> - - {/* 두 번째 줄: 사용자 + 날짜 */} - <div className="flex items-center justify-between text-xs text-gray-500"> - <div className="flex items-center min-w-0"> - <User className="h-3 w-3 mr-1 flex-shrink-0" /> - <span className="truncate">{contract.requestedByName || t("basicContracts.dialog.unknown")}</span> </div> - <div className="flex items-center ml-2 flex-shrink-0"> - <Calendar className="h-3 w-3 mr-1 flex-shrink-0" /> - <span>{formatDate(contract.createdAt)}</span> + + {/* 🔥 완료 상태 표시 */} + {!isCompleted && !hasError && ( + <div className="flex items-center space-x-2 text-xs"> + {isComplianceTemplate && ( + <span className={`flex items-center ${hasSurveyCompleted ? 'text-green-600' : 'text-gray-400'}`}> + <CheckCircle2 className={`h-3 w-3 mr-1 ${hasSurveyCompleted ? 'text-green-500' : 'text-gray-300'}`} /> + 설문 + </span> + )} + <span className={`flex items-center ${hasSignatureCompleted ? 'text-green-600' : 'text-gray-400'}`}> + <Target className={`h-3 w-3 mr-1 ${hasSignatureCompleted ? 'text-green-500' : 'text-gray-300'}`} /> + 서명 + </span> + </div> + )} + + {/* 두 번째 줄: 사용자 + 날짜 */} + <div className="flex items-center justify-between text-xs text-gray-500"> + <div className="flex items-center min-w-0"> + <User className="h-3 w-3 mr-1 flex-shrink-0" /> + <span className="truncate">{contract.requestedByName || t("basicContracts.dialog.unknown")}</span> + </div> + <div className="flex items-center ml-2 flex-shrink-0"> + <Calendar className="h-3 w-3 mr-1 flex-shrink-0" /> + <span>{formatDate(contract.createdAt)}</span> + </div> </div> + + {/* 에러 메시지 표시 */} + {hasError && contractStatus?.errorMessage && ( + <div className="text-xs text-red-600 mt-1"> + {contractStatus.errorMessage} + </div> + )} </div> - </div> - </Button> - ))} + </Button> + ); + })} </div> )} </div> @@ -360,12 +611,31 @@ export function BasicContractSignDialog({ <h3 className="font-semibold text-gray-800 flex items-center"> <FileText className="h-4 w-4 mr-2 text-blue-500" /> {selectedContract.templateName || t("basicContracts.dialog.document")} + + {/* 현재 계약서 상태 표시 */} + {currentContractStatus?.status === 'completed' ? ( + <Badge variant="outline" className="ml-2 bg-green-50 text-green-700 border-green-200"> + <CheckCircle2 className="h-3 w-3 mr-1" /> + 서명 완료 + </Badge> + ) : currentContractStatus?.status === 'error' ? ( + <Badge variant="outline" className="ml-2 bg-red-50 text-red-700 border-red-200"> + <AlertCircle className="h-3 w-3 mr-1" /> + 처리 실패 + </Badge> + ) : ( + <Badge variant="outline" className="ml-2 bg-yellow-50 text-yellow-700 border-yellow-200"> + 서명 대기 + </Badge> + )} + {/* 준법 템플릿 표시 */} {selectedContract.templateName?.includes('준법') && ( <Badge variant="outline" className="ml-2 bg-amber-50 text-amber-700 border-amber-200"> 준법 서류 </Badge> )} + {/* 비밀유지 계약서인 경우 추가 파일 수 표시 */} {selectedContract.templateName === "비밀유지 계약서" && additionalFiles.length > 0 && ( <Badge variant="outline" className="ml-2 bg-blue-50 text-blue-700 border-blue-200"> @@ -388,59 +658,128 @@ export function BasicContractSignDialog({ {/* 뷰어 영역 - 남은 공간 모두 사용 */} <div className="flex-1 min-h-0 overflow-hidden"> <BasicContractSignViewer - key={selectedContract.id} // key 추가로 컴포넌트 재생성 강제 + key={selectedContract.id} contractId={selectedContract.id} filePath={selectedContract.signedFilePath || undefined} templateName={selectedContract.templateName || ""} - additionalFiles={additionalFiles} // 추가 파일 전달 + additionalFiles={additionalFiles} instance={instance} setInstance={setInstance} + onSurveyComplete={() => handleSurveyComplete(selectedContract.id)} // 🔥 추가 + onSignatureComplete={() => handleSignatureComplete(selectedContract.id)} // 🔥 추가 t={t} /> </div> - {/* 고정 푸터 */} + {/* 고정 푸터 - 동적 버튼 */} <div className="p-4 flex justify-between items-center bg-gray-50 border-t flex-shrink-0"> <div className="flex items-center space-x-4"> - <p className="text-sm text-gray-600 flex items-center"> - <AlertCircle className="h-4 w-4 text-yellow-500 mr-1" /> - {t("basicContracts.dialog.signWarning")} - </p> - {/* 준법 템플릿인 경우 추가 안내 */} - {selectedContract.templateName?.includes('준법') && ( - <p className="text-xs text-amber-600 flex items-center"> - <AlertCircle className="h-3 w-3 text-amber-500 mr-1" /> - 모든 준법 항목을 체크해주세요 + {/* 현재 계약서가 완료된 경우 */} + {currentContractStatus?.status === 'completed' ? ( + <p className="text-sm text-green-600 flex items-center"> + <CheckCircle2 className="h-4 w-4 text-green-500 mr-1" /> + 이 계약서는 이미 서명이 완료되었습니다 </p> - )} - {/* 비밀유지 계약서인 경우 추가 안내 */} - {selectedContract.templateName === "비밀유지 계약서" && additionalFiles.length > 0 && ( - <p className="text-xs text-blue-600 flex items-center"> - <FileText className="h-3 w-3 text-blue-500 mr-1" /> - 첨부 서류도 확인해주세요 + ) : currentContractStatus?.status === 'error' ? ( + <p className="text-sm text-red-600 flex items-center"> + <AlertCircle className="h-4 w-4 text-red-500 mr-1" /> + 서명 처리 중 오류가 발생했습니다. 다시 시도해주세요. </p> - )} - </div> - <Button - className="gap-2 bg-blue-600 hover:bg-blue-700 transition-colors" - onClick={completeSign} - disabled={isSubmitting} - > - {isSubmitting ? ( - <> - <svg className="animate-spin -ml-1 mr-2 h-4 w-4 text-white" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"> - <circle className="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" strokeWidth="4"></circle> - <path className="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path> - </svg> - {t("basicContracts.dialog.processing")} - </> ) : ( <> - <FileSignature className="h-4 w-4" /> - {t("basicContracts.dialog.completeSign")} + {/* 🔥 완료 조건 안내 메시지 개선 */} + <div className="flex flex-col space-y-1"> + <p className="text-sm text-gray-600 flex items-center"> + <AlertCircle className="h-4 w-4 text-yellow-500 mr-1" /> + {t("basicContracts.dialog.signWarning")} + </p> + + {/* 완료 상태 체크리스트 */} + <div className="flex items-center space-x-4 text-xs"> + {selectedContract.templateName?.includes('준법') && ( + <span className={`flex items-center ${surveyCompletionStatus[selectedContract.id] ? 'text-green-600' : 'text-red-600'}`}> + <CheckCircle2 className={`h-3 w-3 mr-1 ${surveyCompletionStatus[selectedContract.id] ? 'text-green-500' : 'text-red-500'}`} /> + 설문조사 {surveyCompletionStatus[selectedContract.id] ? '완료' : '미완료'} + </span> + )} + <span className={`flex items-center ${signatureStatus[selectedContract.id] ? 'text-green-600' : 'text-red-600'}`}> + <Target className={`h-3 w-3 mr-1 ${signatureStatus[selectedContract.id] ? 'text-green-500' : 'text-red-500'}`} /> + 서명 {signatureStatus[selectedContract.id] ? '완료' : '미완료'} + </span> + </div> + </div> + + {/* 비밀유지 계약서인 경우 추가 안내 */} + {selectedContract.templateName === "비밀유지 계약서" && additionalFiles.length > 0 && ( + <p className="text-xs text-blue-600 flex items-center"> + <FileText className="h-3 w-3 text-blue-500 mr-1" /> + 첨부 서류도 확인해주세요 + </p> + )} </> )} - </Button> + </div> + + {/* 동적 버튼 영역 */} + <div className="flex items-center space-x-2"> + {allCompleted ? ( + // 모든 계약서 완료시 + <Button + className="gap-2 bg-green-600 hover:bg-green-700 transition-colors" + onClick={completeAllSigns} + > + <Trophy className="h-4 w-4" /> + 모든 서명 완료 + </Button> + ) : currentContractStatus?.status === 'completed' ? ( + // 현재 계약서가 완료된 경우 + <Button + variant="outline" + className="gap-2" + onClick={() => { + const nextContract = getNextPendingContract(); + if (nextContract) { + setSelectedContract(nextContract); + } + }} + disabled={!getNextPendingContract()} + > + <ArrowRight className="h-4 w-4" /> + 다음 계약서 + </Button> + ) : ( + // 현재 계약서를 서명해야 하는 경우 + <Button + className={`gap-2 transition-colors ${ + canCompleteCurrentContract + ? "bg-blue-600 hover:bg-blue-700" + : "bg-gray-400 cursor-not-allowed" + }`} + onClick={completeSign} + disabled={!canCompleteCurrentContract || isSubmitting} // 🔥 조건 수정 + > + {isSubmitting ? ( + <> + <svg className="animate-spin -ml-1 mr-2 h-4 w-4 text-white" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"> + <circle className="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" strokeWidth="4"></circle> + <path className="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path> + </svg> + 처리중... + </> + ) : ( + <> + <FileSignature className="h-4 w-4" /> + 서명 완료 + {totalCount > 1 && ( + <span className="ml-1 text-xs"> + ({completedCount + 1}/{totalCount}) + </span> + )} + </> + )} + </Button> + )} + </div> </div> </> ) : ( diff --git a/lib/basic-contract/vendor-table/basic-contract-table.tsx b/lib/basic-contract/vendor-table/basic-contract-table.tsx index f2575024..48298f21 100644 --- a/lib/basic-contract/vendor-table/basic-contract-table.tsx +++ b/lib/basic-contract/vendor-table/basic-contract-table.tsx @@ -38,7 +38,6 @@ export function BasicContractsVendorTable({ promises }: BasicTemplateTableProps) const [{ data, pageCount }] = React.use(promises) - console.log(data,"data") // 안전한 번역 함수 (fallback 포함) const safeT = React.useCallback((key: string, fallback: string) => { diff --git a/lib/basic-contract/vendor-table/survey-conditional.ts b/lib/basic-contract/vendor-table/survey-conditional.ts new file mode 100644 index 00000000..71c2c1ff --- /dev/null +++ b/lib/basic-contract/vendor-table/survey-conditional.ts @@ -0,0 +1,860 @@ +// lib/utils/survey-conditional.ts +import type { SurveyQuestion, SurveyTemplateWithQuestions } from '../service'; + +/** + * 조건부 질문 처리를 위한 유틸리티 클래스 + */ +export class ConditionalSurveyHandler { + private questions: SurveyQuestion[]; + private parentChildMap: Map<number, number[]>; + private childParentMap: Map<number, { parentId: number; conditionalValue: string }>; + + constructor(template: SurveyTemplateWithQuestions) { + this.questions = template.questions; + this.parentChildMap = new Map(); + this.childParentMap = new Map(); + + this.buildRelationshipMaps(); + } + + /** + * 부모-자식 관계 맵 구축 + */ + private buildRelationshipMaps() { + this.questions.forEach(question => { + if (question.parentQuestionId && question.conditionalValue) { + // 자식 -> 부모 맵핑 + this.childParentMap.set(question.id, { + parentId: question.parentQuestionId, + conditionalValue: question.conditionalValue + }); + + // 부모 -> 자식들 맵핑 + const existingChildren = this.parentChildMap.get(question.parentQuestionId) || []; + this.parentChildMap.set(question.parentQuestionId, [...existingChildren, question.id]); + } + }); + } + + + /** + * 질문이 완료되지 않은 이유를 반환 (디버깅용) + */ +public getIncompleteReason(question: SurveyQuestion, surveyAnswers: Record<number, any>): string { + const answer = surveyAnswers[question.id]; + + if (!answer?.answerValue) return '답변이 없음'; + + if (answer.answerValue === 'OTHER' && !answer.otherText?.trim()) { + return '기타 내용 입력 필요'; + } + + if (question.hasDetailText && ['YES', '네', 'Y'].includes(answer.answerValue) && !answer.detailText?.trim()) { + return '상세 내용 입력 필요'; + } + + if ((question.hasFileUpload || question.questionType === 'FILE') && + ['YES', '네', 'Y'].includes(answer.answerValue) && + (!answer.files || answer.files.length === 0)) { + return '파일 업로드 필요'; + } + + // ⭐ 조건부 자식 질문들 체크 + const childQuestions = this.getChildQuestions(question.id); + const triggeredChildren = childQuestions.filter(child => + child.conditionalValue === answer.answerValue && child.isRequired + ); + + for (const childQuestion of triggeredChildren) { + if (!this.isQuestionComplete(childQuestion, surveyAnswers)) { + return `조건부 질문 "${childQuestion.questionText?.substring(0, 30)}..."이 미완료`; + } + } + + return '완료됨'; + } + + /** + * 조건부 질문을 위한 단순 완료 체크 (자식 질문 체크 제외) + */ + private isSimpleQuestionComplete(question: SurveyQuestion, surveyAnswers: Record<number, any>): boolean { + const answer = surveyAnswers[question.id]; + + console.log(`🔍 조건부 질문 단순 완료 체크 [Q${question.questionNumber}]:`, { + questionId: question.id, + questionNumber: question.questionNumber, + isRequired: question.isRequired, + hasAnswer: !!answer, + answerValue: answer?.answerValue, + parentId: question.parentQuestionId, + conditionalValue: question.conditionalValue + }); + + if (!question.isRequired) { + console.log(`✅ Q${question.questionNumber}: 선택 질문이므로 완료`); + return true; + } + + if (!answer?.answerValue) { + console.log(`❌ Q${question.questionNumber}: 답변이 없음`); + return false; + } + + // 1. '기타' 선택 시 추가 입력이 필요한 경우 + if (answer.answerValue === 'OTHER' && !answer.otherText?.trim()) { + console.log(`❌ Q${question.questionNumber}: '기타' 선택했지만 상세 내용 없음`); + return false; + } + + // 2. 상세 텍스트가 필요한 경우 + if (question.hasDetailText) { + const needsDetailText = ['YES', '네', 'Y', 'true', '1'].includes(answer.answerValue); + + if (needsDetailText && !answer.detailText?.trim()) { + console.log(`❌ Q${question.questionNumber}: '${answer.answerValue}' 선택했지만 상세 내용 없음`); + return false; + } + } + + // 3. 파일 업로드가 필요한 경우 + if (question.hasFileUpload || question.questionType === 'FILE') { + const needsFileUpload = ['YES', '네', 'Y', 'true', '1'].includes(answer.answerValue); + + if (needsFileUpload && (!answer.files || answer.files.length === 0)) { + console.log(`❌ Q${question.questionNumber}: '${answer.answerValue}' 선택했지만 파일 업로드 없음`); + return false; + } + } + + // 조건부 질문은 자식 질문 체크를 하지 않음 (무한 루프 방지) + console.log(`✅ Q${question.questionNumber} 조건부 질문 완료 체크 통과`); + return true; + } + + private isQuestionCompleteEnhanced(question: SurveyQuestion, surveyAnswers: Record<number, any>): boolean { + const answer = surveyAnswers[question.id]; + + if (!answer) { + console.log(`❌ Q${question.questionNumber}: 답변 객체가 없음`); + return false; + } + + console.log(`🔍 Q${question.questionNumber} 답변 상세 체크:`, { + answerValue: answer.answerValue, + detailText: answer.detailText, + otherText: answer.otherText, + files: answer.files, + filesLength: answer.files?.length + }); + + // 1️⃣ answerValue 체크 (빈 문자열이 아닌 경우) + const hasAnswerValue = answer.answerValue && answer.answerValue.trim() !== ''; + + // 2️⃣ detailText 체크 (빈 문자열이 아닌 경우) + const hasDetailText = answer.detailText && answer.detailText.trim() !== ''; + + // 3️⃣ otherText 체크 (OTHER 선택 시) + const hasOtherText = answer.answerValue === 'OTHER' ? + (answer.otherText && answer.otherText.trim() !== '') : true; + + // 4️⃣ files 체크 (실제 파일이 있는 경우) + const hasValidFiles = answer.files && answer.files.length > 0 && + answer.files.every((file: any) => file && typeof file === 'object' && + (file.name || file.size || file.type)); // 빈 객체 {} 제외 + + console.log(`📊 Q${question.questionNumber} 완료 조건 체크:`, { + hasAnswerValue, + hasDetailText, + hasOtherText, + hasValidFiles, + questionType: question.questionType, + hasDetailTextRequired: question.hasDetailText, + hasFileUploadRequired: question.hasFileUpload || question.questionType === 'FILE' + }); + + // 🎯 질문 타입별 완료 조건 + switch (question.questionType) { + case 'RADIO': + case 'DROPDOWN': + // 선택형: answerValue가 있고, OTHER인 경우 otherText도 필요 + const isSelectComplete = hasAnswerValue && hasOtherText; + + // detailText가 필요한 경우 추가 체크 + if (question.hasDetailText && isSelectComplete) { + return hasDetailText; + } + + // 파일 업로드가 필요한 경우 추가 체크 + if ((question.hasFileUpload || question.questionType === 'FILE') && isSelectComplete) { + return hasValidFiles; + } + + return isSelectComplete; + + case 'TEXTAREA': + // 텍스트 영역: detailText 또는 answerValue 중 하나라도 있으면 됨 + return hasDetailText || hasAnswerValue; + + case 'FILE': + // 파일 업로드: 유효한 파일이 있어야 함 + return hasValidFiles; + + default: + // 기본: answerValue, detailText, 파일 중 하나라도 있으면 완료 + let isComplete = hasAnswerValue || hasDetailText || hasValidFiles; + + // detailText가 필수인 경우 + if (question.hasDetailText) { + isComplete = isComplete && hasDetailText; + } + + // 파일 업로드가 필수인 경우 + if (question.hasFileUpload) { + isComplete = isComplete && hasValidFiles; + } + + return isComplete; + } + } + + // 🎯 개선된 미완료 이유 제공 함수 +private getIncompleteReasonEnhanced(question: SurveyQuestion, surveyAnswers: Record<number, any>): string { + const answer = surveyAnswers[question.id]; + + if (!answer) { + return '답변이 없습니다'; + } + + const hasAnswerValue = answer.answerValue && answer.answerValue.trim() !== ''; + const hasDetailText = answer.detailText && answer.detailText.trim() !== ''; + const hasValidFiles = answer.files && answer.files.length > 0 && + answer.files.every((file: any) => file && typeof file === 'object' && + (file.name || file.size || file.type)); + + const reasons: string[] = []; + + switch (question.questionType) { + case 'RADIO': + case 'DROPDOWN': + if (!hasAnswerValue) { + reasons.push('선택 필요'); + } else if (answer.answerValue === 'OTHER' && (!answer.otherText || answer.otherText.trim() === '')) { + reasons.push('기타 내용 입력 필요'); + } + break; + + case 'TEXTAREA': + if (!hasDetailText && !hasAnswerValue) { + reasons.push('텍스트 입력 필요'); + } + break; + + case 'FILE': + if (!hasValidFiles) { + reasons.push('파일 업로드 필요'); + } + break; + } + + // 추가 요구사항 체크 + if (question.hasDetailText && !hasDetailText) { + reasons.push('상세 내용 입력 필요'); + } + + if ((question.hasFileUpload || question.questionType === 'FILE') && !hasValidFiles) { + reasons.push('파일 첨부 필요'); + } + + return reasons.length > 0 ? reasons.join(', ') : '알 수 없는 이유'; +} + +// 🎯 완료 상세 정보 제공 함수 +private getCompletionDetailsEnhanced(question: SurveyQuestion, answer: any): any { + if (!answer) return { status: 'no_answer' }; + + const hasAnswerValue = answer.answerValue && answer.answerValue.trim() !== ''; + const hasDetailText = answer.detailText && answer.detailText.trim() !== ''; + const hasValidFiles = answer.files && answer.files.length > 0 && + answer.files.every((file: any) => file && typeof file === 'object' && + (file.name || file.size || file.type)); + + return { + status: 'has_answer', + hasAnswerValue, + hasDetailText, + hasValidFiles, + answerValue: answer.answerValue, + detailTextLength: answer.detailText?.length || 0, + filesCount: answer.files?.length || 0, + validFilesCount: hasValidFiles ? answer.files.filter((file: any) => + file && typeof file === 'object' && (file.name || file.size || file.type)).length : 0 + }; +} + + getSimpleProgressStatus(surveyAnswers: Record<number, any>): { + visibleQuestions: SurveyQuestion[]; + totalRequired: number; + completedRequired: number; + completedQuestionIds: number[]; + incompleteQuestionIds: number[]; + progressPercentage: number; + debugInfo?: any; + } { + // 🎯 현재 답변 상태에 따라 표시되는 질문들 계산 + const visibleQuestions = this.getVisibleQuestions(surveyAnswers); + + console.log('🔍 표시되는 모든 질문들의 상세 정보:', visibleQuestions.map(q => ({ + id: q.id, + questionNumber: q.questionNumber, + questionText: q.questionText?.substring(0, 30) + '...', + isRequired: q.isRequired, + parentQuestionId: q.parentQuestionId, + conditionalValue: q.conditionalValue, + isConditional: !!q.parentQuestionId, + hasAnswer: !!surveyAnswers[q.id]?.answerValue, + answerValue: surveyAnswers[q.id]?.answerValue + }))); + + // 🚨 중요: 트리거된 조건부 질문들을 필수로 처리 + const requiredQuestions = visibleQuestions.filter(q => { + // 기본적으로 필수인 질문들 + if (q.isRequired) return true; + + // 조건부 질문인 경우, 트리거되었다면 필수로 간주 + if (q.parentQuestionId && q.conditionalValue) { + const parentAnswer = surveyAnswers[q.parentQuestionId]; + const isTriggered = parentAnswer?.answerValue === q.conditionalValue; + + if (isTriggered) { + console.log(`⚡ 조건부 질문 Q${q.questionNumber} (ID: ${q.id})를 필수로 처리 - 트리거됨`); + return true; + } + } + + return false; + }); + + console.log('📊 필수 질문 필터링 결과:', { + 전체질문수: this.questions.length, + 표시되는질문수: visibleQuestions.length, + 원래필수질문: visibleQuestions.filter(q => q.isRequired).length, + 트리거된조건부질문: visibleQuestions.filter(q => { + if (!q.parentQuestionId || !q.conditionalValue) return false; + const parentAnswer = surveyAnswers[q.parentQuestionId]; + return parentAnswer?.answerValue === q.conditionalValue; + }).length, + 최종필수질문: requiredQuestions.length, + 현재답변수: Object.keys(surveyAnswers).length, + 필수질문들: requiredQuestions.map(q => ({ + id: q.id, + questionNumber: q.questionNumber, + isRequired: q.isRequired, + isConditional: !!q.parentQuestionId, + hasAnswer: !!surveyAnswers[q.id]?.answerValue, + 처리방식: q.isRequired ? '원래필수' : '트리거됨' + })) + }); + + const completedQuestionIds: number[] = []; + const incompleteQuestionIds: number[] = []; + const debugInfo: any = {}; + + // 🔍 각 필수 질문의 완료 상태 확인 (개선된 완료 체크 로직) + requiredQuestions.forEach(question => { + console.log(`🔍 필수 질문 체크 시작: Q${question.questionNumber} (ID: ${question.id}, isRequired: ${question.isRequired})`); + + // 🎯 개선된 완료 체크: 모든 답변 형태를 고려 + const isComplete = this.isQuestionCompleteEnhanced(question, surveyAnswers); + + console.log(`📊 Q${question.questionNumber} 완료 상태: ${isComplete}`); + console.log(`📝 Q${question.questionNumber} 답변 내용:`, surveyAnswers[question.id]); + + // 디버깅 정보 수집 + debugInfo[question.id] = { + questionText: question.questionText, + questionNumber: question.questionNumber, + isRequired: question.isRequired, + isVisible: true, + isConditional: !!question.parentQuestionId, + parentQuestionId: question.parentQuestionId, + conditionalValue: question.conditionalValue, + answer: surveyAnswers[question.id], + isComplete: isComplete, + hasDetailText: question.hasDetailText, + hasFileUpload: question.hasFileUpload, + childQuestions: this.getChildQuestions(question.id).map(c => ({ + id: c.id, + condition: c.conditionalValue, + required: c.isRequired + })), + incompleteReason: isComplete ? null : this.getIncompleteReasonEnhanced(question, surveyAnswers) + }; + + if (isComplete) { + completedQuestionIds.push(question.id); + } else { + incompleteQuestionIds.push(question.id); + } + }); + + const progressPercentage = requiredQuestions.length > 0 + ? (completedQuestionIds.length / requiredQuestions.length) * 100 + : 100; + + const result = { + visibleQuestions, + totalRequired: requiredQuestions.length, + completedRequired: completedQuestionIds.length, + completedQuestionIds, + incompleteQuestionIds, + progressPercentage: Math.min(100, progressPercentage) + }; + + // 개발 환경에서만 디버깅 정보 포함 + if (process.env.NODE_ENV === 'development') { + (result as any).debugInfo = debugInfo; + + // 📋 상세한 진행 상황 로그 + console.log('📋 최종 진행 상황:', { + 총필수질문: requiredQuestions.length, + 완료된질문: completedQuestionIds.length, + 미완료질문: incompleteQuestionIds.length, + 진행률: `${Math.round(progressPercentage)}%`, + 기본질문: visibleQuestions.filter(q => !q.parentQuestionId).length, + 조건부질문: visibleQuestions.filter(q => q.parentQuestionId).length, + 완료된기본질문: completedQuestionIds.filter(id => !visibleQuestions.find(q => q.id === id)?.parentQuestionId).length, + 완료된조건부질문: completedQuestionIds.filter(id => !!visibleQuestions.find(q => q.id === id)?.parentQuestionId).length, + 필수질문상세: requiredQuestions.map(q => ({ + id: q.id, + questionNumber: q.questionNumber, + isRequired: q.isRequired, + isConditional: !!q.parentQuestionId, + isComplete: completedQuestionIds.includes(q.id) + })) + }); + + // 🔍 미완료 질문들의 구체적 이유 + if (incompleteQuestionIds.length > 0) { + console.log('🔍 미완료 질문들:', incompleteQuestionIds.map(id => ({ + id, + questionNumber: debugInfo[id]?.questionNumber, + text: debugInfo[id]?.questionText?.substring(0, 50) + '...', + reason: debugInfo[id]?.incompleteReason, + isConditional: !!debugInfo[id]?.parentQuestionId + }))); + } + + // ⚡ 조건부 질문 활성화 및 완료 현황 + const conditionalQuestions = visibleQuestions.filter(q => q.parentQuestionId); + if (conditionalQuestions.length > 0) { + console.log('⚡ 조건부 질문 상세 현황:', conditionalQuestions.map(q => ({ + id: q.id, + questionNumber: q.questionNumber, + isRequired: q.isRequired, + parentId: q.parentQuestionId, + condition: q.conditionalValue, + parentAnswer: surveyAnswers[q.parentQuestionId!]?.answerValue, + isTriggered: surveyAnswers[q.parentQuestionId!]?.answerValue === q.conditionalValue, + hasAnswer: !!surveyAnswers[q.id]?.answerValue, + answerValue: surveyAnswers[q.id]?.answerValue, + detailText: surveyAnswers[q.id]?.detailText, + files: surveyAnswers[q.id]?.files, + isComplete: debugInfo[q.id]?.isComplete, + isIncludedInRequired: requiredQuestions.some(rq => rq.id === q.id), + completionDetails: this.getCompletionDetailsEnhanced(q, surveyAnswers[q.id]) + }))); + } + } + + return result; + } + + /** + * 전체 설문조사의 진행 상태를 계산 (조건부 질문 고려) + * 표시되지 않는 질문들은 자동으로 완료된 것으로 간주하여 프로그레스가 역행하지 않도록 함 + */ +getOverallProgressStatus(surveyAnswers: Record<number, any>): { + totalQuestions: number; + completedQuestions: number; + visibleQuestions: number; + requiredVisible: number; + completedRequired: number; + completedQuestionIds: number[]; + incompleteQuestionIds: number[]; + progressPercentage: number; + } { + const allQuestions = this.questions; + const visibleQuestions = this.getVisibleQuestions(surveyAnswers); + const requiredQuestions = allQuestions.filter(q => q.isRequired); + + const completedQuestionIds: number[] = []; + const incompleteQuestionIds: number[] = []; + + let totalCompleted = 0; + + allQuestions.forEach(question => { + const isVisible = visibleQuestions.some(vq => vq.id === question.id); + + if (!isVisible && question.isRequired) { + // 조건에 맞지 않아 숨겨진 필수 질문들은 자동 완료로 간주 + totalCompleted++; + completedQuestionIds.push(question.id); + } else if (isVisible && question.isRequired) { + // 표시되는 필수 질문들은 실제 완료 여부 체크 + if (this.isQuestionComplete(question, surveyAnswers)) { + totalCompleted++; + completedQuestionIds.push(question.id); + } else { + incompleteQuestionIds.push(question.id); + } + } else if (!question.isRequired) { + // 선택 질문들은 완료된 것으로 간주 + totalCompleted++; + } + }); + + const progressPercentage = requiredQuestions.length > 0 + ? (totalCompleted / requiredQuestions.length) * 100 + : 100; + + return { + totalQuestions: allQuestions.length, + completedQuestions: totalCompleted, + visibleQuestions: visibleQuestions.length, + requiredVisible: visibleQuestions.filter(q => q.isRequired).length, + completedRequired: completedQuestionIds.length, + completedQuestionIds, + incompleteQuestionIds, + progressPercentage: Math.min(100, progressPercentage) + }; + } + + /** + * 현재 표시되는 질문들만의 완료 상태 (기존 메서드 유지) + */ + getVisibleRequiredStatus(surveyAnswers: Record<number, any>): { + total: number; + completed: number; + completedQuestionIds: number[]; + incompleteQuestionIds: number[]; + } { + const visibleQuestions = this.getVisibleQuestions(surveyAnswers); + const requiredQuestions = visibleQuestions.filter(q => q.isRequired); + + const completedQuestionIds: number[] = []; + const incompleteQuestionIds: number[] = []; + + requiredQuestions.forEach(question => { + if (this.isQuestionComplete(question, surveyAnswers)) { + completedQuestionIds.push(question.id); + } else { + incompleteQuestionIds.push(question.id); + } + }); + + return { + total: requiredQuestions.length, + completed: completedQuestionIds.length, + completedQuestionIds, + incompleteQuestionIds + }; + } + /** + * 현재 답변 상태에 따라 표시되어야 할 질문들 필터링 + */ + getVisibleQuestions(surveyAnswers: Record<number, any>): SurveyQuestion[] { + return this.questions.filter(question => this.shouldShowQuestion(question, surveyAnswers)); + } + + /** + * 특정 질문이 현재 표시되어야 하는지 판단 + */ + private shouldShowQuestion(question: SurveyQuestion, surveyAnswers: Record<number, any>): boolean { + // 최상위 질문 (부모가 없는 경우) + if (!question.parentQuestionId || !question.conditionalValue) { + return true; + } + + const parentAnswer = surveyAnswers[question.parentQuestionId]; + if (!parentAnswer || !parentAnswer.answerValue) { + return false; + } + + // 부모 질문의 답변이 조건값과 일치하는지 확인 + return parentAnswer.answerValue === question.conditionalValue; + } + + /** + * 부모 질문의 답변이 변경될 때 영향받는 자식 질문들의 답변 초기화 + */ + clearAffectedChildAnswers( + parentQuestionId: number, + newParentValue: string, + currentAnswers: Record<number, any> + ): Record<number, any> { + const updatedAnswers = { ...currentAnswers }; + const childQuestionIds = this.parentChildMap.get(parentQuestionId) || []; + + console.log(`🧹 질문 ${parentQuestionId}의 답변 변경으로 인한 자식 질문 정리:`, { + parentQuestionId, + newParentValue, + childQuestionIds, + 자식질문수: childQuestionIds.length + }); + + childQuestionIds.forEach(childId => { + const childQuestion = this.questions.find(q => q.id === childId); + if (!childQuestion) return; + + console.log(`🔍 자식 질문 ${childId} 체크:`, { + childId, + questionNumber: childQuestion.questionNumber, + conditionalValue: childQuestion.conditionalValue, + newParentValue, + shouldKeep: childQuestion.conditionalValue === newParentValue, + currentAnswer: updatedAnswers[childId]?.answerValue + }); + + // 새로운 부모 값이 자식의 조건과 맞지 않으면 자식 답변 삭제 + if (childQuestion.conditionalValue !== newParentValue) { + console.log(`🗑️ 자식 질문 Q${childQuestion.questionNumber} 답변 초기화 (조건 불일치)`); + delete updatedAnswers[childId]; + + // 재귀적으로 손자 질문들도 정리 + const grandChildAnswers = this.clearAffectedChildAnswers(childId, '', updatedAnswers); + Object.assign(updatedAnswers, grandChildAnswers); + } else { + console.log(`✅ 자식 질문 Q${childQuestion.questionNumber} 유지 (조건 일치)`); + } + }); + + const clearedCount = childQuestionIds.filter(childId => !updatedAnswers[childId]).length; + const keptCount = childQuestionIds.filter(childId => !!updatedAnswers[childId]).length; + + console.log(`📊 자식 질문 정리 완료:`, { + parentQuestionId, + 총자식질문: childQuestionIds.length, + 초기화된질문: clearedCount, + 유지된질문: keptCount + }); + + return updatedAnswers; + } + + /** + * 표시되는 질문들 중 필수 질문의 완료 여부 체크 + */ + getRequiredQuestionsStatus(surveyAnswers: Record<number, any>): { + total: number; + completed: number; + completedQuestionIds: number[]; + incompleteQuestionIds: number[]; + } { + const status = this.getSimpleProgressStatus(surveyAnswers); + return { + total: status.totalRequired, + completed: status.completedRequired, + completedQuestionIds: status.completedQuestionIds, + incompleteQuestionIds: status.incompleteQuestionIds + }; + } + + /** + * 개별 질문의 완료 여부 체크 + */ + private isQuestionComplete(question: SurveyQuestion, surveyAnswers: Record<number, any>): boolean { + const answer = surveyAnswers[question.id]; + + // 🔍 상세한 완료 체크 로깅 + const logData = { + questionId: question.id, + questionNumber: question.questionNumber, + questionText: question.questionText?.substring(0, 30) + '...', + isRequired: question.isRequired, + hasAnswer: !!answer, + answerValue: answer?.answerValue, + hasDetailText: question.hasDetailText, + hasFileUpload: question.hasFileUpload, + isConditional: !!question.parentQuestionId, + parentId: question.parentQuestionId, + conditionalValue: question.conditionalValue + }; + + console.log(`🔍 질문 완료 체크 [Q${question.questionNumber}]:`, logData); + + if (!question.isRequired) { + console.log(`✅ Q${question.questionNumber}: 선택 질문이므로 완료`); + return true; + } + + if (!answer?.answerValue) { + console.log(`❌ Q${question.questionNumber}: 답변이 없음`); + return false; + } + + // 1. '기타' 선택 시 추가 입력이 필요한 경우 + if (answer.answerValue === 'OTHER' && !answer.otherText?.trim()) { + console.log(`❌ Q${question.questionNumber}: '기타' 선택했지만 상세 내용 없음`); + return false; + } + + // 2. 상세 텍스트가 필요한 경우 + if (question.hasDetailText) { + const needsDetailText = ['YES', '네', 'Y', 'true', '1'].includes(answer.answerValue); + + console.log(`📝 Q${question.questionNumber} 상세텍스트 체크:`, { + hasDetailText: question.hasDetailText, + answerValue: answer.answerValue, + needsDetailText, + detailText: answer.detailText?.length || 0, + detailTextExists: !!answer.detailText?.trim() + }); + + if (needsDetailText && !answer.detailText?.trim()) { + console.log(`❌ Q${question.questionNumber}: '${answer.answerValue}' 선택했지만 상세 내용 없음`); + return false; + } + } + + // 3. 파일 업로드가 필요한 경우 + if (question.hasFileUpload || question.questionType === 'FILE') { + const needsFileUpload = ['YES', '네', 'Y', 'true', '1'].includes(answer.answerValue); + + console.log(`📁 Q${question.questionNumber} 파일업로드 체크:`, { + hasFileUpload: question.hasFileUpload, + questionType: question.questionType, + answerValue: answer.answerValue, + needsFileUpload, + filesCount: answer.files?.length || 0, + hasFiles: !!answer.files && answer.files.length > 0 + }); + + if (needsFileUpload && (!answer.files || answer.files.length === 0)) { + console.log(`❌ Q${question.questionNumber}: '${answer.answerValue}' 선택했지만 파일 업로드 없음`); + return false; + } + } + + // 4. ⭐ 핵심: 조건부 자식 질문들 체크 + const childQuestions = this.getChildQuestions(question.id); + + if (childQuestions.length > 0) { + console.log(`🔗 Q${question.questionNumber} 부모 질문 - 자식 질문들:`, + childQuestions.map(c => ({ + id: c.id, + questionNumber: c.questionNumber, + condition: c.conditionalValue, + required: c.isRequired, + text: c.questionText?.substring(0, 20) + '...' + })) + ); + + // 현재 답변으로 트리거되는 자식 질문들 찾기 + const triggeredChildren = childQuestions.filter(child => + child.conditionalValue === answer.answerValue + ); + + console.log(`🎯 Q${question.questionNumber} 답변 '${answer.answerValue}'로 트리거된 자식들:`, + triggeredChildren.map(c => ({ + id: c.id, + questionNumber: c.questionNumber, + required: c.isRequired, + text: c.questionText?.substring(0, 30) + '...' + })) + ); + + // 트리거된 필수 자식 질문들이 모두 완료되었는지 확인 + for (const childQuestion of triggeredChildren) { + if (childQuestion.isRequired) { + console.log(`🔄 자식 질문 Q${childQuestion.questionNumber} 완료 체크 시작...`); + const childComplete = this.isQuestionComplete(childQuestion, surveyAnswers); + console.log(`📊 자식 질문 Q${childQuestion.questionNumber} 완료 상태: ${childComplete}`); + + if (!childComplete) { + console.log(`❌ 부모 Q${question.questionNumber}의 자식 Q${childQuestion.questionNumber} 미완료`); + return false; + } + } + } + + if (triggeredChildren.filter(c => c.isRequired).length > 0) { + console.log(`✅ Q${question.questionNumber}의 모든 필수 조건부 자식 질문들 완료됨`); + } + } + + console.log(`✅ Q${question.questionNumber} 완료 체크 통과`); + return true; + } + + /** + * 전체 설문조사 완료 여부 + */ + isSurveyComplete(surveyAnswers: Record<number, any>): boolean { + const status = this.getRequiredQuestionsStatus(surveyAnswers); + return status.total === status.completed; + } + + /** + * 디버깅을 위한 관계 맵 출력 + */ + debugRelationships(): void { + console.log('=== 조건부 질문 관계 맵 ==='); + console.log('부모 -> 자식:', Array.from(this.parentChildMap.entries())); + console.log('자식 -> 부모:', Array.from(this.childParentMap.entries())); + } + + /** + * 특정 질문의 자식 질문들 가져오기 + */ + getChildQuestions(parentQuestionId: number): SurveyQuestion[] { + const childIds = this.parentChildMap.get(parentQuestionId) || []; + return this.questions.filter(q => childIds.includes(q.id)); + } + + /** + * 질문 트리 구조 생성 (중첩된 조건부 질문 처리) + */ + buildQuestionTree(): QuestionNode[] { + const rootQuestions = this.questions.filter(q => !q.parentQuestionId); + return rootQuestions.map(q => this.buildQuestionNode(q)); + } + + private buildQuestionNode(question: SurveyQuestion): QuestionNode { + const childQuestions = this.getChildQuestions(question.id); + return { + question, + children: childQuestions.map(child => this.buildQuestionNode(child)) + }; + } +} + +/** + * 질문 트리 노드 인터페이스 + */ +export interface QuestionNode { + question: SurveyQuestion; + children: QuestionNode[]; +} + +/** + * React Hook으로 조건부 설문조사 상태 관리 + */ +import React from 'react'; + +export function useConditionalSurvey(template: SurveyTemplateWithQuestions | null) { + const [handler, setHandler] = React.useState<ConditionalSurveyHandler | null>(null); + + React.useEffect(() => { + if (template) { + const newHandler = new ConditionalSurveyHandler(template); + setHandler(newHandler); + + // 개발 환경에서 디버깅 정보 출력 + if (process.env.NODE_ENV === 'development') { + newHandler.debugRelationships(); + } + } + }, [template]); + + return handler; +}
\ No newline at end of file diff --git a/lib/basic-contract/viewer/basic-contract-sign-viewer.tsx b/lib/basic-contract/viewer/basic-contract-sign-viewer.tsx index b92df089..fbf36738 100644 --- a/lib/basic-contract/viewer/basic-contract-sign-viewer.tsx +++ b/lib/basic-contract/viewer/basic-contract-sign-viewer.tsx @@ -1,11 +1,13 @@ "use client"; import React, { -useState, -useEffect, -useRef, -SetStateAction, -Dispatch, + useState, + useEffect, + useRef, + SetStateAction, + Dispatch, + useMemo, + useCallback, } from "react"; import { WebViewerInstance } from "@pdftron/webviewer"; import { Loader2, FileText, ClipboardList, AlertTriangle, FileSignature, Target, CheckCircle2 } from "lucide-react"; @@ -15,43 +17,55 @@ import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { -Dialog, -DialogContent, -DialogHeader, -DialogTitle, -DialogDescription, -DialogFooter, + Dialog, + DialogContent, + DialogHeader, + DialogTitle, + DialogDescription, + DialogFooter, } from "@/components/ui/dialog"; import { Label } from "@/components/ui/label"; import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"; -import { Checkbox } from "@/components/ui/checkbox"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { Input } from "@/components/ui/input"; import { Textarea } from "@/components/ui/textarea"; import { Upload } from "lucide-react"; - - +import { CompleteSurveyRequest, SurveyAnswerData, completeSurvey, getActiveSurveyTemplate, type SurveyTemplateWithQuestions } from '../service'; +import { ConditionalSurveyHandler, useConditionalSurvey } from '../vendor-table/survey-conditional'; +import { useForm, useWatch, Controller } from "react-hook-form"; interface FileInfo { -path: string; -name: string; -type: 'main' | 'attachment' | 'survey'; + path: string; + name: string; + type: 'main' | 'attachment' | 'survey'; } interface BasicContractSignViewerProps { -contractId?: number; -filePath?: string; -additionalFiles?: FileInfo[]; -templateName?: string; -isOpen?: boolean; -onClose?: () => void; -onSign?: (documentData: ArrayBuffer, surveyData?: any) => Promise<void>; -instance: WebViewerInstance | null; -setInstance: Dispatch<SetStateAction<WebViewerInstance | null>>; -t?: (key: string) => string; + contractId?: number; + filePath?: string; + additionalFiles?: FileInfo[]; + templateName?: string; + isOpen?: boolean; + onClose?: () => void; + onSign?: (documentData: ArrayBuffer, surveyData?: any) => Promise<void>; + instance: WebViewerInstance | null; + setInstance: Dispatch<SetStateAction<WebViewerInstance | null>>; + onSurveyComplete?: () => void; // 🔥 새로 추가 + onSignatureComplete?: () => void; // 🔥 새로 추가 + t?: (key: string) => string; +} + +// 폼 데이터 타입 정의 +interface SurveyFormData { + [key: string]: { + answerValue?: string; + detailText?: string; + otherText?: string; + files?: File[]; + }; } -// ✅ 자동 서명 필드 생성을 위한 타입 정의 +// 자동 서명 필드 생성을 위한 타입 정의 interface SignaturePattern { regex: RegExp; name: string; @@ -62,22 +76,7 @@ interface SignaturePattern { height?: number; } -interface DetectedSignatureLocation { - pageIndex: number; - text: string; - rect: { - x1: number; - y1: number; - x2: number; - y2: number; - }; - pattern: SignaturePattern; - confidence: number; -} - -// ✅ 개선된 자동 서명 필드 감지 클래스 - -// ✅ 초간단 안전한 서명 필드 감지 클래스 (새로고침 제거) +// 초간단 안전한 서명 필드 감지 클래스 class AutoSignatureFieldDetector { private instance: WebViewerInstance; private signaturePatterns: SignaturePattern[]; @@ -89,7 +88,6 @@ class AutoSignatureFieldDetector { private initializePatterns(): SignaturePattern[] { return [ - // 한국어 패턴들 { regex: /서명\s*[::]\s*[_\-\s]{3,}/gi, name: "한국어_서명_콜론", @@ -108,7 +106,6 @@ class AutoSignatureFieldDetector { width: 150, height: 40 }, - // 영어 패턴들 { regex: /signature\s*[::]\s*[_\-\s]{3,}/gi, name: "영어_signature_콜론", @@ -132,37 +129,29 @@ class AutoSignatureFieldDetector { async detectAndCreateSignatureFields(): Promise<string[]> { console.log("🔍 안전한 서명 필드 감지 시작..."); - + try { - // ✅ 1단계: 기본 유효성 검사만 if (!this.instance?.Core?.documentViewer) { throw new Error("WebViewer 인스턴스가 유효하지 않습니다."); } const { Core } = this.instance; const { documentViewer } = Core; - - // ✅ 2단계: 문서 존재 확인만 (getPDFDoc 호출 안함) + const document = documentViewer.getDocument(); if (!document) { throw new Error("PDF 문서가 로드되지 않았습니다."); } - console.log("📄 문서 확인 완료, 기존 필드 검사..."); - - - // ✅ 4단계: 단순 기본 서명 필드 생성 (텍스트 분석 스킵) - console.log("📝 기본 서명 필드 생성..."); + console.log("📄 문서 확인 완료, 기본 서명 필드 생성..."); const defaultField = await this.createSimpleSignatureField(); - - // ✅ 5단계: 새로고침 없이 완료 - console.log("✅ 서명 필드 생성 완료 (새로고침 스킵)"); + + console.log("✅ 서명 필드 생성 완료"); return [defaultField]; } catch (error) { - console.error("📛 안전한 서명 필드 생성 실패:", error); - - // 에러 타입별 메시지 + console.error("📛 서명 필드 생성 실패:", error); + let errorMessage = "서명 필드 생성에 실패했습니다."; if (error instanceof Error) { if (error.message.includes("인스턴스")) { @@ -171,35 +160,24 @@ class AutoSignatureFieldDetector { errorMessage = "문서를 불러오는 중입니다."; } } - + throw new Error(errorMessage); } } - - - // ✅ 초간단 서명 필드 생성 (복잡한 텍스트 분석 없이) private async createSimpleSignatureField(): Promise<string> { try { - const { Core, UI } = this.instance; + const { Core } = this.instance; const { documentViewer, annotationManager, Annotations } = Core; - - // 페이지 정보 안전하게 가져오기 + const pageCount = documentViewer.getPageCount(); - const lastPageIndex = Math.max(0, pageCount - 1); - - // 페이지 크기 안전하게 가져오기 const pageWidth = documentViewer.getPageWidth(pageCount) || 612; const pageHeight = documentViewer.getPageHeight(pageCount) || 792; - + console.log(`📏 페이지 정보: ${pageCount}페이지, 크기 ${pageWidth}x${pageHeight}`); - - // ✅ 간단한 서명 어노테이션 생성 (PDFDoc 접근 없이) - const fieldName = `simple_signature_${Date.now()}`; + const fieldName = `simple_signature_${Date.now()}`; const flags = new Annotations.WidgetFlags(); - // flags.set(Annotations.WidgetFlags.REQUIRED, true); - // flags.set(Annotations.WidgetFlags.READ_ONLY, true); const formField = new Core.Annotations.Forms.Field( `SignatureFormField`, @@ -208,89 +186,36 @@ class AutoSignatureFieldDetector { flags, } ); - - // 서명 위젯 어노테이션 생성 - const signatureWidget = new Annotations.SignatureWidgetAnnotation(formField,{ - // appearance: Annotations.SignatureWidgetAnnotation.DefaultAppearance.MATERIAL_OUTLINE, + + const signatureWidget = new Annotations.SignatureWidgetAnnotation(formField, { Width: 150, Height: 50 }); - - // 위치 설정 (마지막 페이지 하단) + signatureWidget.setPageNumber(pageCount); signatureWidget.setX(pageWidth * 0.7); signatureWidget.setY(pageHeight * 0.85); signatureWidget.setWidth(150); signatureWidget.setHeight(50); - - // 필드명 설정 - // signatureWidget.setFieldName(fieldName); - // signatureWidget.setCustomData('fieldName', fieldName); - - // // 스타일 설정 - // signatureWidget.StrokeColor = new Annotations.Color(0, 100, 200); // 파란색 - // signatureWidget.StrokeThickness = 2; - - // 어노테이션 추가 + annotationManager.addAnnotation(signatureWidget); annotationManager.redrawAnnotation(signatureWidget); - - console.log(`✅ 간단 서명 필드 생성: ${fieldName}`); + + console.log(`✅ 서명 필드 생성: ${fieldName}`); return fieldName; - + } catch (error) { - console.error("📛 간단 서명 필드 생성 실패:", error); - - // ✅ 최후의 수단: 텍스트 어노테이션으로 안내 - // return await this.createTextGuidance(); + console.error("📛 서명 필드 생성 실패:", error); + return "manual_signature_required"; } } - - // ✅ 최후의 수단: 텍스트 안내 생성 - // private async createTextGuidance(): Promise<string> { - // try { - // const { Core } = this.instance; - // const { documentViewer, annotationManager, Annotations } = Core; - - // const pageCount = documentViewer.getPageCount(); - // const pageWidth = documentViewer.getPageWidth(pageCount) || 612; - // const pageHeight = documentViewer.getPageHeight(pageCount) || 792; - - // // 텍스트 어노테이션으로 서명 안내 - // const textAnnot = new Annotations.FreeTextAnnotation(); - // textAnnot.setPageNumber(pageCount); - // textAnnot.setX(pageWidth * 0.25); - // textAnnot.setY(pageHeight * 0.1); - // textAnnot.setWidth(pageWidth * 0.5); - // textAnnot.setHeight(60); - // textAnnot.setContents("👆 여기를 클릭하여 서명해주세요"); - // textAnnot.FontSize = '14pt'; - // textAnnot.TextColor = new Annotations.Color(255, 0, 0); // 빨간색 - // textAnnot.StrokeColor = new Annotations.Color(255, 200, 200); - // textAnnot.FillColor = new Annotations.Color(255, 240, 240); - - // const fieldName = `text_guidance_${Date.now()}`; - // textAnnot.setCustomData('fieldName', fieldName); - - // annotationManager.addAnnotation(textAnnot); - // annotationManager.redrawAnnotation(textAnnot); - - // console.log(`✅ 텍스트 안내 생성: ${fieldName}`); - // return fieldName; - - // } catch (error) { - // console.error("📛 텍스트 안내 생성도 실패:", error); - // return "manual_signature_required"; - // } - // } } function useAutoSignatureFields(instance: WebViewerInstance | null) { const [signatureFields, setSignatureFields] = useState<string[]>([]); const [isProcessing, setIsProcessing] = useState(false); const [error, setError] = useState<string | null>(null); - - // 중복 실행 방지 + const processingRef = useRef(false); const timeoutRef = useRef<NodeJS.Timeout | null>(null); @@ -298,65 +223,46 @@ function useAutoSignatureFields(instance: WebViewerInstance | null) { if (!instance) return; const { documentViewer } = instance.Core; - + const handleDocumentLoaded = () => { - // ✅ 중복 실행 방지 if (processingRef.current) { console.log("📛 이미 처리 중이므로 스킵"); return; } - // ✅ 기존 타이머 정리 if (timeoutRef.current) { clearTimeout(timeoutRef.current); timeoutRef.current = null; } - // ✅ 짧은 지연 후 실행 (3초) timeoutRef.current = setTimeout(async () => { if (processingRef.current) return; - + processingRef.current = true; setIsProcessing(true); setError(null); - + try { - console.log("📄 문서 로드 완료, 안전한 서명 필드 처리 시작..."); - - // ✅ 최종 유효성 검사 + console.log("📄 문서 로드 완료, 서명 필드 처리 시작..."); + if (!instance?.Core?.documentViewer?.getDocument()) { throw new Error("문서가 준비되지 않았습니다."); } const detector = new AutoSignatureFieldDetector(instance); const fields = await detector.detectAndCreateSignatureFields(); - + setSignatureFields(fields); - - // ✅ 결과에 따른 토스트 메시지 + if (fields.length > 0) { const hasSimpleField = fields.some(field => field.startsWith('simple_signature_')); - const hasTextGuidance = fields.some(field => field.startsWith('text_guidance_')); - const hasManualRequired = fields.includes('manual_signature_required'); - + if (hasSimpleField) { toast.success("📝 서명 필드가 생성되었습니다.", { description: "마지막 페이지 하단의 파란색 영역에서 서명해주세요.", icon: <FileSignature className="h-4 w-4 text-blue-500" />, duration: 5000 }); - } else if (hasTextGuidance) { - toast.success("📍 서명 안내가 표시되었습니다.", { - description: "빨간색 텍스트 영역을 클릭하여 서명해주세요.", - icon: <Target className="h-4 w-4 text-red-500" />, - duration: 6000 - }); - } else if (hasManualRequired) { - toast.info("수동 서명이 필요합니다.", { - description: "문서에서 서명할 위치를 직접 클릭해주세요.", - icon: <AlertTriangle className="h-4 w-4 text-amber-500" />, - duration: 5000 - }); } else { toast.success(`📋 ${fields.length}개의 서명 필드를 확인했습니다.`, { description: "기존 서명 필드가 발견되었습니다.", @@ -364,56 +270,40 @@ function useAutoSignatureFields(instance: WebViewerInstance | null) { duration: 4000 }); } - } else { - toast.info("서명 필드 준비 중", { - description: "문서에서 서명할 위치를 클릭해주세요.", - icon: <FileSignature className="h-4 w-4 text-blue-500" />, - duration: 4000 - }); } - + } catch (error) { - console.error("📛 안전한 서명 필드 처리 실패:", error); - + console.error("📛 서명 필드 처리 실패:", error); + const errorMessage = error instanceof Error ? error.message : "서명 필드 처리에 실패했습니다."; setError(errorMessage); - - // ✅ 부드러운 에러 처리 - if (errorMessage.includes("준비")) { - toast.info("문서 로딩 중", { - description: "잠시 후 다시 시도하거나 수동으로 서명해주세요.", - icon: <Loader2 className="h-4 w-4 text-blue-500" /> - }); - } else { - toast.info("수동 서명 모드", { - description: "문서에서 서명할 위치를 직접 클릭해주세요.", - icon: <FileSignature className="h-4 w-4 text-blue-500" /> - }); - } + + toast.info("수동 서명 모드", { + description: "문서에서 서명할 위치를 직접 클릭해주세요.", + icon: <FileSignature className="h-4 w-4 text-blue-500" /> + }); } finally { setIsProcessing(false); processingRef.current = false; } - }, 3000); // 3초 지연 + }, 3000); }; - // ✅ 이벤트 리스너 등록 documentViewer.removeEventListener('documentLoaded', handleDocumentLoaded); documentViewer.addEventListener('documentLoaded', handleDocumentLoaded); return () => { documentViewer.removeEventListener('documentLoaded', handleDocumentLoaded); - + if (timeoutRef.current) { clearTimeout(timeoutRef.current); timeoutRef.current = null; } - + processingRef.current = false; }; }, [instance]); - // ✅ 컴포넌트 언마운트 시 정리 useEffect(() => { return () => { if (timeoutRef.current) { @@ -431,1083 +321,1574 @@ function useAutoSignatureFields(instance: WebViewerInstance | null) { }; } -export function BasicContractSignViewer({ -contractId, -filePath, -additionalFiles = [], -templateName = "", -isOpen = false, -onClose, -onSign, -instance, -setInstance, -t = (key: string) => key, -}: BasicContractSignViewerProps) { +// 🔥 서명 감지를 위한 커스텀 훅 수정 +function useSignatureDetection(instance: WebViewerInstance | null, onSignatureComplete?: () => void) { + const [hasValidSignature, setHasValidSignature] = useState(false); + const checkIntervalRef = useRef<NodeJS.Timeout | null>(null); + const lastSignatureStateRef = useRef(false); + const onSignatureCompleteRef = useRef(onSignatureComplete); - console.log("🔍 BasicContractSignViewer props:", { - contractId, - filePath, - additionalFiles, - templateName, - isNDATemplate: templateName.includes('비밀유지') || templateName.includes('NDA') - }); - -const [fileLoading, setFileLoading] = useState<boolean>(true); -const [activeTab, setActiveTab] = useState<string>("main"); -const [surveyData, setSurveyData] = useState<any>({}); -const [surveyAnswers, setSurveyAnswers] = useState<Record<number, any>>({}); -const [surveyTemplate, setSurveyTemplate] = useState<any>(null); -const [surveyLoading, setSurveyLoading] = useState<boolean>(false); -const [uploadedFiles, setUploadedFiles] = useState<Record<number, File[]>>({}); -const [isInitialLoaded, setIsInitialLoaded] = useState<boolean>(false); - -const viewer = useRef<HTMLDivElement>(null); -const initialized = useRef(false); -const isCancelled = useRef(false); -const currentDocumentPath = useRef<string>(""); -const [showDialog, setShowDialog] = useState(isOpen); -const webViewerInstance = useRef<WebViewerInstance | null>(null); - -// ✅ 자동 서명 필드 생성 훅 사용 -const { signatureFields, isProcessing: isAutoSignProcessing, hasSignatureFields, error: autoSignError } = useAutoSignatureFields(webViewerInstance.current || instance); - -// 템플릿 타입 판단 -const isComplianceTemplate = templateName.includes('준법'); -const isNDATemplate = templateName.includes('비밀유지') || templateName.includes('NDA'); - -// 파일 목록 생성 -const allFiles: FileInfo[] = React.useMemo(() => { - const files: FileInfo[] = []; - - if (filePath) { - files.push({ - path: filePath, - name: templateName || "기본 계약서", - type: "main", - }); - } - - const normalizedAttachments: FileInfo[] = (additionalFiles || []) - .map((f: any, idx: number) => ({ - path: f.path ?? f.filePath ?? "", - name: `첨부파일 ${idx + 1}`, - type: "attachment" as const, - })) - .filter(f => !!f.path); - - files.push(...normalizedAttachments); - - if (isComplianceTemplate) { - files.push({ - path: "", - name: "준법 설문조사", - type: "survey", - }); - } + // 콜백 레퍼런스 업데이트 + useEffect(() => { + onSignatureCompleteRef.current = onSignatureComplete; + }, [onSignatureComplete]); - console.log("📂 생성된 allFiles:", files, { isNDATemplate, isComplianceTemplate }); - return files; -}, [filePath, additionalFiles, templateName, isComplianceTemplate, isNDATemplate]); + const checkSignatureFields = useCallback(async () => { + if (!instance?.Core?.annotationManager) { + console.log('🔍 서명 체크: annotationManager 없음'); + return false; + } -// WebViewer 정리 함수 -const cleanupWebViewer = () => { - console.log("🧹 WebViewer 정리 시작"); - - if (webViewerInstance.current) { try { - const { documentViewer } = webViewerInstance.current.Core; - if (documentViewer && documentViewer.getDocument()) { - documentViewer.closeDocument(); + const { annotationManager, documentViewer } = instance.Core; + + // 문서가 로드되지 않았으면 false 반환 + if (!documentViewer.getDocument()) { + console.log('🔍 서명 체크: 문서 미로드'); + return false; } + + let hasSignature = false; + + // 1. Form Fields 확인 (더 정확한 방법) + const fieldManager = annotationManager.getFieldManager(); + const fields = fieldManager.getFields(); - if (webViewerInstance.current.UI && typeof webViewerInstance.current.UI.dispose === 'function') { - webViewerInstance.current.UI.dispose(); + console.log('🔍 폼 필드 확인:', fields.map(field => ({ + name: field.name, + type: field.type, + value: field.value, + hasValue: !!field.value + }))); + + // 서명 필드 확인 + for (const field of fields) { + // PDFTron에서 서명 필드는 보통 'Sig' 타입이지만, 값이 있는지 정확히 확인 + if (field.type === 'Sig' || field.name?.toLowerCase().includes('signature')) { + if (field.value && ( + typeof field.value === 'string' && field.value.length > 0 || + typeof field.value === 'object' && field.value !== null + )) { + hasSignature = true; + console.log('🔍 서명 필드에서 서명 발견:', field.name, field.value); + break; + } + } } + + // 2. Signature Widget Annotations 확인 + if (!hasSignature) { + const annotations = annotationManager.getAnnotationsList(); + console.log('🔍 주석 확인:', annotations.length, '개'); + + for (const annotation of annotations) { + // SignatureWidgetAnnotation 타입 확인 + if (annotation.elementName === 'signatureWidget' || + annotation.constructor.name === 'SignatureWidgetAnnotation' || + annotation.Subject === 'Signature') { + + // 서명 데이터가 있는지 확인 + const hasSignatureData = annotation.getImageData && annotation.getImageData() || + annotation.getPath && annotation.getPath() || + annotation.getCustomData && annotation.getCustomData('signature-data'); + + if (hasSignatureData) { + hasSignature = true; + console.log('🔍 서명 위젯에서 서명 발견:', annotation); + break; + } + } + } + } + + // 3. Ink/FreeHand Annotations 확인 (직접 그린 서명) + if (!hasSignature) { + const annotations = annotationManager.getAnnotationsList(); + + for (const annotation of annotations) { + if (annotation.elementName === 'freeHand' || + annotation.elementName === 'ink' || + annotation.constructor.name === 'FreeHandAnnotation') { + + // 경로 데이터가 있으면 서명으로 간주 + const hasPath = annotation.getPath && annotation.getPath().length > 0; + if (hasPath) { + hasSignature = true; + console.log('🔍 자유 그리기에서 서명 발견:', annotation); + break; + } + } + } + } + + console.log('🔍 최종 서명 감지 결과:', { + hasSignature, + fieldsCount: fields.length, + annotationsCount: annotationManager.getAnnotationsList().length + }); + + return hasSignature; } catch (error) { - console.warn("WebViewer 정리 중 에러 (무시됨):", error); + console.error('📛 서명 확인 중 에러:', error); + return false; } + }, [instance]); + + // 실시간 서명 감지 (무한 렌더링 방지) + useEffect(() => { + if (!instance?.Core) return; + + const startMonitoring = () => { + // 기존 인터벌 정리 + if (checkIntervalRef.current) { + clearInterval(checkIntervalRef.current); + checkIntervalRef.current = null; + } + + console.log('🔍 서명 모니터링 시작'); + + // 2초마다 서명 상태 확인 (1초보다 간격을 늘려 성능 개선) + checkIntervalRef.current = setInterval(async () => { + try { + const hasSignature = await checkSignatureFields(); + + // 상태가 실제로 변경되었을 때만 업데이트 + if (hasSignature !== lastSignatureStateRef.current) { + console.log('🔍 서명 상태 변경:', lastSignatureStateRef.current, '->', hasSignature); + + lastSignatureStateRef.current = hasSignature; + setHasValidSignature(hasSignature); + + // 서명이 완료되었을 때 콜백 실행 + if (hasSignature && onSignatureCompleteRef.current) { + console.log('✍️ 서명 완료 콜백 실행!'); + onSignatureCompleteRef.current(); + } + } + } catch (error) { + console.error('📛 서명 모니터링 에러:', error); + } + }, 2000); + }; + + // 문서 로드 후 모니터링 시작 + const { documentViewer } = instance.Core; - webViewerInstance.current = null; - } - - if (instance && setInstance) { - setInstance(null); - } - - setTimeout(() => cleanupHtmlStyle(), 100); -}; + const handleDocumentLoaded = () => { + console.log('📄 문서 로드 완료, 서명 모니터링 준비'); + // 문서 로드 후 3초 뒤에 모니터링 시작 (안정성 확보) + setTimeout(startMonitoring, 3000); + }; -// 다이얼로그 및 파일 상태 변경 시 리셋 -useEffect(() => { - setShowDialog(isOpen); - - if (isOpen && isComplianceTemplate && !surveyTemplate) { - loadSurveyTemplate(); - } + if (documentViewer?.getDocument()) { + // 이미 문서가 로드되어 있다면 바로 시작 + setTimeout(startMonitoring, 1000); + } else { + // 문서 로드 대기 + documentViewer?.addEventListener('documentLoaded', handleDocumentLoaded); + } + + // 클리너 함수 + return () => { + console.log('🧹 서명 모니터링 정리'); + if (checkIntervalRef.current) { + clearInterval(checkIntervalRef.current); + checkIntervalRef.current = null; + } + documentViewer?.removeEventListener('documentLoaded', handleDocumentLoaded); + }; + }, [instance]); // onSignatureComplete 제거하여 무한 렌더링 방지 + + // 수동 서명 확인 함수 + const manualCheckSignature = useCallback(async () => { + console.log('🔍 수동 서명 확인 요청'); + const hasSignature = await checkSignatureFields(); + setHasValidSignature(hasSignature); + lastSignatureStateRef.current = hasSignature; + return hasSignature; + }, [checkSignatureFields]); + + return { + hasValidSignature, + checkSignature: manualCheckSignature + }; +} + +export function BasicContractSignViewer({ + contractId, + filePath, + additionalFiles = [], + templateName = "", + isOpen = false, + onClose, + onSign, + instance, + setInstance, + onSurveyComplete, // 🔥 추가 + onSignatureComplete, // 🔥 추가 + t = (key: string) => key, +}: BasicContractSignViewerProps) { + + const [fileLoading, setFileLoading] = useState<boolean>(true); + const [activeTab, setActiveTab] = useState<string>("main"); + const [surveyData, setSurveyData] = useState<any>({}); + const [isInitialLoaded, setIsInitialLoaded] = useState<boolean>(false); + const [surveyTemplate, setSurveyTemplate] = useState<SurveyTemplateWithQuestions | null>(null); + const [surveyLoading, setSurveyLoading] = useState<boolean>(false); + const [isSubmitting, setIsSubmitting] = useState(false); // 제출 상태 추가 + + const conditionalHandler = useConditionalSurvey(surveyTemplate); + + const viewer = useRef<HTMLDivElement>(null); + const initialized = useRef(false); + const isCancelled = useRef(false); + const currentDocumentPath = useRef<string>(""); + const [showDialog, setShowDialog] = useState(isOpen); + const webViewerInstance = useRef<WebViewerInstance | null>(null); + + const { signatureFields, isProcessing: isAutoSignProcessing, hasSignatureFields, error: autoSignError } = useAutoSignatureFields(webViewerInstance.current || instance); - if (isOpen) { + // 🔥 서명 감지 훅 사용 + const { hasValidSignature } = useSignatureDetection(webViewerInstance.current || instance, onSignatureComplete); + + const isComplianceTemplate = templateName.includes('준법'); + const isNDATemplate = templateName.includes('비밀유지') || templateName.includes('NDA'); + + const allFiles: FileInfo[] = React.useMemo(() => { + const files: FileInfo[] = []; + + if (filePath) { + files.push({ + path: filePath, + name: templateName || "기본 계약서", + type: "main", + }); + } + + const normalizedAttachments: FileInfo[] = (additionalFiles || []) + .map((f: any, idx: number) => ({ + path: f.path ?? f.filePath ?? "", + name: `첨부파일 ${idx + 1}`, + type: "attachment" as const, + })) + .filter(f => !!f.path); + + files.push(...normalizedAttachments); + + if (isComplianceTemplate) { + files.push({ + path: "", + name: "준법 설문조사", + type: "survey", + }); + } + + return files; + }, [filePath, additionalFiles, templateName, isComplianceTemplate]); + + const cleanupHtmlStyle = () => { + const elements = document.querySelectorAll('.Document_container'); + elements.forEach((elem) => { + elem.remove(); + }); + }; + + const cleanupWebViewer = () => { + console.log("🧹 WebViewer 정리 시작"); + + if (webViewerInstance.current) { + try { + const { documentViewer } = webViewerInstance.current.Core; + if (documentViewer && documentViewer.getDocument()) { + documentViewer.closeDocument(); + } + + if (webViewerInstance.current.UI && typeof webViewerInstance.current.UI.dispose === 'function') { + webViewerInstance.current.UI.dispose(); + } + } catch (error) { + console.warn("WebViewer 정리 중 에러 (무시됨):", error); + } + + webViewerInstance.current = null; + } + + if (instance && setInstance) { + setInstance(null); + } + + setTimeout(() => cleanupHtmlStyle(), 100); + }; + + useEffect(() => { + setShowDialog(isOpen); + + if (isOpen && isComplianceTemplate && !surveyTemplate) { + loadSurveyTemplate(); + } + + if (isOpen) { + setIsInitialLoaded(false); + currentDocumentPath.current = ""; + } + }, [isOpen, isComplianceTemplate]); + + useEffect(() => { + if (!filePath) return; + setIsInitialLoaded(false); currentDocumentPath.current = ""; - console.log("🔄 새로운 계약서 열림, 상태 리셋"); - } -}, [isOpen, isComplianceTemplate]); + setActiveTab("main"); -// filePath 변경 시 상태 리셋 및 즉시 문서 로드 -useEffect(() => { - if (!filePath) return; - - console.log("🔄 filePath 변경으로 상태 리셋 및 문서 로드:", filePath); - - setIsInitialLoaded(false); - currentDocumentPath.current = ""; - setActiveTab("main"); - - const currentInstance = webViewerInstance.current || instance; - - if (currentInstance) { - const normalizedPath = filePath.startsWith('/') ? filePath.substring(1) : filePath; - const encodedPath = normalizedPath.split('/').map(part => encodeURIComponent(part)).join('/'); - const apiFilePath = `/api/files/${encodedPath}`; - - console.log("📄 filePath 변경으로 즉시 문서 로드:", apiFilePath); - - loadDocument(currentInstance, apiFilePath, true).then(() => { - setIsInitialLoaded(true); - console.log("✅ filePath 변경 문서 로드 완료"); - }).catch((error) => { - console.error("📛 filePath 변경 문서 로드 실패:", error); - }); - } -}, [filePath, instance]); + const currentInstance = webViewerInstance.current || instance; -const loadSurveyTemplate = async () => { - setSurveyLoading(true); - - const mockTemplate = { - id: 1, - name: '기본 준법 설문조사', - description: '모든 계약업체 대상 기본 준법 설문조사', - questions: [ - { - id: 4, - questionNumber: '4', - questionText: '귀사의 법률적 조직형태는?', - questionType: 'DROPDOWN', - isRequired: true, - hasDetailText: false, - hasFileUpload: false, - options: [ - { id: 1, optionValue: 'COMPANY_CORP', optionText: '주식회사/유한회사' }, - { id: 2, optionValue: 'INDIVIDUAL', optionText: '개인회사' }, - { id: 3, optionValue: 'PARTNERSHIP', optionText: '조합' }, - { id: 4, optionValue: 'JOINT_VENTURE', optionText: '조인트벤처' }, - { id: 5, optionValue: 'OTHER', optionText: '기타', allowsOtherInput: true }, - ] - }, - { - id: 6, - questionNumber: '6', - questionText: '부패방지와 관련한 귀사의 준법정책이 있습니까? 있다면 첨부파일로 제공하여 주시기 바랍니다.', - questionType: 'RADIO', - isRequired: true, - hasDetailText: false, - hasFileUpload: true, - options: [ - { id: 6, optionValue: 'YES', optionText: '네' }, - { id: 7, optionValue: 'NO', optionText: '아니오' }, - ] - }, - { - id: 11, - questionNumber: '11', - questionText: '귀사의 사주, 임원 중에서 전(최근 3년내)·현직 공직자인 사람이 있습니까? 만약 있다면 상세하게 기술해 주십시오.', - questionType: 'RADIO', - isRequired: true, - hasDetailText: true, - hasFileUpload: false, - options: [ - { id: 11, optionValue: 'YES', optionText: '네' }, - { id: 12, optionValue: 'NO', optionText: '아니오' }, - ] - }, - ] + if (currentInstance) { + const normalizedPath = filePath.startsWith('/') ? filePath.substring(1) : filePath; + const encodedPath = normalizedPath.split('/').map(part => encodeURIComponent(part)).join('/'); + const apiFilePath = `/api/files/${encodedPath}`; + + loadDocument(currentInstance, apiFilePath, true).then(() => { + setIsInitialLoaded(true); + }).catch((error) => { + console.error("📛 문서 로드 실패:", error); + }); + } + }, [filePath, instance]); + + const loadSurveyTemplate = async () => { + setSurveyLoading(true); + + try { + const template = await getActiveSurveyTemplate(); + setSurveyTemplate(template); + } catch (error) { + console.error('📛 설문조사 템플릿 로드 실패:', error); + setSurveyTemplate(null); + } finally { + setSurveyLoading(false); + } }; - - setSurveyTemplate(mockTemplate); - setSurveyLoading(false); -}; - -// WebViewer 초기화 개선 -useEffect(() => { - if (!initialized.current && viewer.current) { - initialized.current = true; - isCancelled.current = false; - - const initializeWebViewer = () => { - if (!viewer.current || isCancelled.current) { - console.log("📛 WebViewer 초기화 취소됨 (DOM 없음)"); - return; - } - const viewerElement = viewer.current; - - if (!viewerElement.isConnected) { - console.log("📛 WebViewer DOM이 연결되지 않음, 재시도..."); - setTimeout(initializeWebViewer, 100); - return; - } + useEffect(() => { + if (!initialized.current && viewer.current) { + initialized.current = true; + isCancelled.current = false; - cleanupWebViewer(); + const initializeWebViewer = () => { + if (!viewer.current || isCancelled.current) { + return; + } - console.log("📄 WebViewer 초기화 시작..."); - - import("@pdftron/webviewer").then(({ default: WebViewer }) => { - if (isCancelled.current || !viewer.current) { - console.log("📛 WebViewer 초기화 취소됨 (import 후)"); + const viewerElement = viewer.current; + + if (!viewerElement.isConnected) { + setTimeout(initializeWebViewer, 100); return; } - WebViewer( - { - path: "/pdftronWeb", - licenseKey: process.env.NEXT_PUBLIC_PDFTRON_WEBVIEW_KEY, - fullAPI: true , - disabledElements: [ - - ] - }, - viewerElement - ).then((newInstance) => { - if (isCancelled.current) { - console.log("📛 WebViewer 인스턴스 생성 후 취소됨"); + cleanupWebViewer(); + + import("@pdftron/webviewer").then(({ default: WebViewer }) => { + if (isCancelled.current || !viewer.current) { return; } - console.log("📄 WebViewer 초기화 완료"); - - webViewerInstance.current = newInstance; - setInstance(newInstance); - setFileLoading(false); - - const { documentViewer } = newInstance.Core; - const FitMode = newInstance.UI.FitMode; - - // 문서 로드 완료 시 처리 - const handleDocumentLoaded = () => { + WebViewer( + { + path: "/pdftronWeb", + licenseKey: process.env.NEXT_PUBLIC_PDFTRON_WEBVIEW_KEY, + fullAPI: true, + }, + viewerElement + ).then((newInstance) => { + if (isCancelled.current) { + return; + } + + webViewerInstance.current = newInstance; + setInstance(newInstance); setFileLoading(false); - newInstance.UI.setFitMode(FitMode.FitWidth); - - requestAnimationFrame(() => { - try { - documentViewer.refreshAll(); - documentViewer.updateView(); - window.dispatchEvent(new Event("resize")); - setTimeout(() => window.dispatchEvent(new Event("resize")), 100); - } catch (e) { - console.warn("layout refresh skipped", e); + + const { documentViewer } = newInstance.Core; + const FitMode = newInstance.UI.FitMode; + + const handleDocumentLoaded = () => { + setFileLoading(false); + newInstance.UI.setFitMode(FitMode.FitWidth); + + requestAnimationFrame(() => { + try { + documentViewer.refreshAll(); + documentViewer.updateView(); + window.dispatchEvent(new Event("resize")); + setTimeout(() => window.dispatchEvent(new Event("resize")), 100); + } catch (e) { + console.warn("layout refresh skipped", e); + } + }); + }; + + documentViewer.addEventListener('documentLoaded', handleDocumentLoaded); + + newInstance.UI.setMinZoomLevel('25%'); + newInstance.UI.setMaxZoomLevel('400%'); + + newInstance.UI.disableElements([ + "toolbarGroup-Annotate", + "toolbarGroup-Shapes", + "toolbarGroup-Insert", + "toolbarGroup-Edit", + "toolbarGroup-FillAndSign", + "toolbarGroup-Forms", + "saveAsButton", + "downloadButton", + ]); + + documentViewer.addEventListener('documentLoadingError', (error) => { + console.error("📛 문서 로딩 에러:", error); + + let showToast = true; + let errorMessage = "문서를 불러오는데 실패했습니다."; + + if (error && typeof error === 'object') { + const errorStr = JSON.stringify(error).toLowerCase(); + + if (errorStr.includes('linearized') || errorStr.includes('getreference')) { + showToast = false; + } else if (errorStr.includes('network')) { + errorMessage = "네트워크 연결을 확인해주세요."; + } else if (errorStr.includes('permission')) { + errorMessage = "문서에 접근할 권한이 없습니다."; + } } - }); - }; - - documentViewer.addEventListener('documentLoaded', handleDocumentLoaded); - - documentViewer.addEventListener('layoutChanged', () => { - if (newInstance.UI.getFitMode && newInstance.UI.getFitMode() !== FitMode.Zoom) { - newInstance.UI.setFitMode(FitMode.Zoom); - } - }); - - newInstance.UI.setMinZoomLevel('25%'); - newInstance.UI.setMaxZoomLevel('400%'); - - newInstance.UI.disableElements([ - "toolbarGroup-Annotate", - "toolbarGroup-Shapes", - "toolbarGroup-Insert", - "toolbarGroup-Edit", - "toolbarGroup-FillAndSign", - "toolbarGroup-Forms", - "saveAsButton", - "downloadButton", - - ]) - - documentViewer.addEventListener('documentLoadingError', (error) => { - console.error("📛 WebViewer 문서 로딩 에러:", error); - - let showToast = true; - let errorMessage = "문서를 불러오는데 실패했습니다."; - - if (error && typeof error === 'object') { - const errorStr = JSON.stringify(error).toLowerCase(); - - if (errorStr.includes('linearized') || errorStr.includes('getreference')) { - console.warn("⚠️ PDF 구조 경고 (문서 로드는 진행됨)"); - showToast = false; - } else if (errorStr.includes('network')) { - errorMessage = "네트워크 연결을 확인해주세요."; - } else if (errorStr.includes('permission')) { - errorMessage = "문서에 접근할 권한이 없습니다."; + if (showToast) { + setFileLoading(false); + toast.error(errorMessage); } - } - - if (showToast) { - setFileLoading(false); - toast.error(errorMessage); - } - }); + }); + }).catch((error) => { + console.error("📛 WebViewer 초기화 실패:", error); + setFileLoading(false); + toast.error("뷰어 초기화에 실패했습니다."); + }); }).catch((error) => { - console.error("📛 WebViewer 초기화 실패:", error); + console.error("📛 WebViewer 모듈 로드 실패:", error); setFileLoading(false); - toast.error("뷰어 초기화에 실패했습니다."); + toast.error("뷰어 모듈을 불러오는데 실패했습니다."); }); - }).catch((error) => { - console.error("📛 WebViewer 모듈 로드 실패:", error); - setFileLoading(false); - toast.error("뷰어 모듈을 불러오는데 실패했습니다."); + }; + + requestAnimationFrame(() => { + setTimeout(initializeWebViewer, 50); }); - }; + } - requestAnimationFrame(() => { - setTimeout(initializeWebViewer, 50); - }); - } + return () => { + isCancelled.current = true; + cleanupWebViewer(); + }; + }, [setInstance]); - return () => { - isCancelled.current = true; - cleanupWebViewer(); + const getExtFromPath = (p: string) => { + const m = p.toLowerCase().match(/\.([a-z0-9]+)(?:\?.*)?$/); + return m ? m[1] : undefined; }; -}, [setInstance]); - -// 확장자 추출 유틸 -const getExtFromPath = (p: string) => { - const m = p.toLowerCase().match(/\.([a-z0-9]+)(?:\?.*)?$/); - return m ? m[1] : undefined; -}; - -// 문서 로드 함수 개선 -const loadDocument = async ( - instance: WebViewerInstance, - documentPath: string, - forceReload = false -) => { - if (!forceReload && currentDocumentPath.current === documentPath) { - console.log("📄 동일한 문서이므로 스킵:", documentPath); - return; - } - - setFileLoading(true); - try { - console.log("📄 문서 로드 시작(UI):", documentPath, forceReload ? "(강제 리로드)" : ""); - if (!instance || !instance.UI || !instance.Core) { - throw new Error("WebViewer 인스턴스가 유효하지 않습니다."); + const loadDocument = async ( + instance: WebViewerInstance, + documentPath: string, + forceReload = false + ) => { + if (!forceReload && currentDocumentPath.current === documentPath) { + return; } - const ext = getExtFromPath(documentPath); - await instance.UI.loadDocument(documentPath, { - ...(ext ? { extension: ext } : {}), - filename: documentPath.split("/").pop(), - }); + setFileLoading(true); + try { + if (!instance || !instance.UI || !instance.Core) { + throw new Error("WebViewer 인스턴스가 유효하지 않습니다."); + } - currentDocumentPath.current = documentPath; - console.log("📄 문서 로드 완료(UI):", documentPath); + const ext = getExtFromPath(documentPath); + await instance.UI.loadDocument(documentPath, { + ...(ext ? { extension: ext } : {}), + filename: documentPath.split("/").pop(), + }); - const { documentViewer } = instance.Core; - requestAnimationFrame(() => { - try { - documentViewer.refreshAll(); - documentViewer.updateView(); - window.dispatchEvent(new Event("resize")); - setTimeout(() => window.dispatchEvent(new Event("resize")), 100); - } catch (e) { - console.warn("레이아웃 새로고침 스킵:", e); - } - }); - } catch (error) { - console.error("📛 문서 로딩 실패(UI):", error); - currentDocumentPath.current = ""; - - let msg = "문서를 불러오는데 실패했습니다."; - if (error instanceof Error) { - const s = error.message.toLowerCase(); - if (s.includes("network") || s.includes("fetch")) { - msg = "네트워크 연결을 확인해주세요."; - } else if (s.includes("permission") || s.includes("access")) { - msg = "문서에 접근할 권한이 없습니다."; - } else if (s.includes("corrupt") || s.includes("invalid")) { - msg = "파일이 손상되었거나 형식이 올바르지 않습니다."; - } else if (s.includes("linearized") || s.includes("getreference")) { - msg = ""; + currentDocumentPath.current = documentPath; + + const { documentViewer } = instance.Core; + requestAnimationFrame(() => { + try { + documentViewer.refreshAll(); + documentViewer.updateView(); + window.dispatchEvent(new Event("resize")); + setTimeout(() => window.dispatchEvent(new Event("resize")), 100); + } catch (e) { + console.warn("레이아웃 새로고침 스킵:", e); + } + }); + } catch (error) { + console.error("📛 문서 로딩 실패:", error); + currentDocumentPath.current = ""; + + let msg = "문서를 불러오는데 실패했습니다."; + if (error instanceof Error) { + const s = error.message.toLowerCase(); + if (s.includes("network") || s.includes("fetch")) { + msg = "네트워크 연결을 확인해주세요."; + } else if (s.includes("permission") || s.includes("access")) { + msg = "문서에 접근할 권한이 없습니다."; + } else if (s.includes("corrupt") || s.includes("invalid")) { + msg = "파일이 손상되었거나 형식이 올바르지 않습니다."; + } else if (s.includes("linearized") || s.includes("getreference")) { + msg = ""; + } } + if (msg) toast.error(msg); + } finally { + setFileLoading(false); } - if (msg) toast.error(msg); - } finally { - setFileLoading(false); - } -}; - -// 폼 데이터 수집 함수 -const collectFormData = async (instance: WebViewerInstance) => { - try { - const { documentViewer, annotationManager } = instance.Core; - const fieldManager = annotationManager.getFieldManager(); - const fields = fieldManager.getFields(); - - const formData: any = {}; - fields.forEach((field: any) => { - formData[field.name] = field.value; - }); - - console.log('📝 폼 데이터 수집:', formData); - return formData; - } catch (error) { - console.error('📛 폼 데이터 수집 실패:', error); - return {}; - } -}; + }; -// 탭 변경 핸들러 -const handleTabChange = async (newTab: string) => { - setActiveTab(newTab); - if (newTab === "survey") return; - - const currentInstance = webViewerInstance.current || instance; - if (!currentInstance || fileLoading) return; - - let targetFile: FileInfo | undefined; - if (newTab === "main") { - targetFile = allFiles.find(f => f.type === "main"); - } else if (newTab.startsWith("file-")) { - const fileIndex = parseInt(newTab.replace("file-", ""), 10); - targetFile = allFiles.filter(f => f.type !== 'survey')[fileIndex]; - } + const collectFormData = async (instance: WebViewerInstance) => { + try { + const { annotationManager } = instance.Core; + const fieldManager = annotationManager.getFieldManager(); + const fields = fieldManager.getFields(); - if (!targetFile?.path) { - console.warn("📛 대상 파일을 찾을 수 없음:", newTab, allFiles); - return; - } + const formData: any = {}; + fields.forEach((field: any) => { + formData[field.name] = field.value; + }); - const normalizedPath = targetFile.path.startsWith("/") - ? targetFile.path.substring(1) - : targetFile.path; - const encodedPath = normalizedPath.split("/").map(encodeURIComponent).join("/"); - const apiFilePath = `/api/files/${encodedPath}`; + return formData; + } catch (error) { + console.error('📛 폼 데이터 수집 실패:', error); + return {}; + } + }; - console.log("📄 탭 변경으로 문서 로드:", { newTab, targetFile, apiFilePath }); + const handleTabChange = async (newTab: string) => { + setActiveTab(newTab); + if (newTab === "survey") return; - try { - currentDocumentPath.current = ""; - await loadDocument(currentInstance, apiFilePath, true); - setIsInitialLoaded(true); + const currentInstance = webViewerInstance.current || instance; + if (!currentInstance || fileLoading) return; - const { documentViewer } = currentInstance.Core; - requestAnimationFrame(() => { - try { - documentViewer.refreshAll(); - documentViewer.updateView(); - window.dispatchEvent(new Event("resize")); - } catch (e) { - console.warn("탭 변경 후 레이아웃 새로고침 스킵:", e); - } - }); - } catch (e) { - console.error("📛 탭 변경 실패:", e); - } -}; - -// 초기 메인 문서 로드 개선 -useEffect(() => { - console.log("🔍 초기 로드 체크:", { - hasInstance: !!(webViewerInstance.current || instance), - hasFilePath: !!filePath, - activeTab, - isInitialLoaded, - allFilesLength: allFiles.length, - isNDATemplate - }); - - const currentInstance = webViewerInstance.current || instance; - - if (!currentInstance || !filePath || isInitialLoaded) { - return; - } - - const isMainTab = activeTab === 'main'; - const shouldLoadInitial = allFiles.length === 1 || isMainTab; - - if (!shouldLoadInitial || currentDocumentPath.current !== "") { - return; - } - - const normalizedPath = filePath.startsWith('/') ? filePath.substring(1) : filePath; - const encodedPath = normalizedPath.split('/').map(part => encodeURIComponent(part)).join('/'); - const apiFilePath = `/api/files/${encodedPath}`; - - console.log("📄 초기 마운트 문서 로드:", { apiFilePath, isNDATemplate, activeTab }); - - currentDocumentPath.current = ""; - - loadDocument(currentInstance, apiFilePath, true).then(() => { - setIsInitialLoaded(true); - console.log("✅ 초기 마운트 로드 완료"); - }).catch((error) => { - console.error("📛 초기 마운트 로드 실패:", error); - }); -}, [webViewerInstance.current, instance, filePath, activeTab, isInitialLoaded, allFiles.length, isNDATemplate]); - -// 설문조사 답변 업데이트 함수 -const updateSurveyAnswer = (questionId: number, field: string, value: any) => { - setSurveyAnswers(prev => ({ - ...prev, - [questionId]: { - ...prev[questionId], - questionId, - [field]: value + let targetFile: FileInfo | undefined; + if (newTab === "main") { + targetFile = allFiles.find(f => f.type === "main"); + } else if (newTab.startsWith("file-")) { + const fileIndex = parseInt(newTab.replace("file-", ""), 10); + targetFile = allFiles.filter(f => f.type !== 'survey')[fileIndex]; } - })); -}; -// 파일 업로드 핸들러 -const handleSurveyFileUpload = (questionId: number, files: FileList | null) => { - if (!files) return; - - const fileArray = Array.from(files); - setUploadedFiles(prev => ({ - ...prev, - [questionId]: fileArray - })); - - updateSurveyAnswer(questionId, 'files', fileArray); -}; + if (!targetFile?.path) { + console.warn("📛 대상 파일을 찾을 수 없음:", newTab, allFiles); + return; + } -// 질문 완료 여부 체크 -const isSurveyQuestionComplete = (question: any): boolean => { - const answer = surveyAnswers[question.id]; - - if (!question.isRequired) return true; - if (!answer?.answerValue) return false; - - if (question.hasDetailText && answer.answerValue === 'YES' && !answer.detailText) { - return false; - } - - if (question.hasFileUpload && answer.answerValue === 'YES' && (!answer.files || answer.files.length === 0)) { - return false; - } - - return true; -}; - -// 전체 설문조사 완료 여부 체크 -const isSurveyComplete = (): boolean => { - if (!surveyTemplate?.questions) return false; - return surveyTemplate.questions.every((question: any) => isSurveyQuestionComplete(question)); -}; - -// 설문조사 데이터 처리 -const handleSurveyComplete = async () => { - if (!isSurveyComplete()) { - toast.error('모든 필수 항목을 완료해주세요.', { - description: '미완성된 질문이 있습니다.', - icon: <AlertTriangle className="h-5 w-5 text-red-500" /> - }); - return; - } + const normalizedPath = targetFile.path.startsWith("/") + ? targetFile.path.substring(1) + : targetFile.path; + const encodedPath = normalizedPath.split("/").map(encodeURIComponent).join("/"); + const apiFilePath = `/api/files/${encodedPath}`; - try { - console.log('설문조사 답변:', surveyAnswers); - - setSurveyData({ - completed: true, - answers: Object.values(surveyAnswers), - timestamp: new Date().toISOString() - }); - - toast.success("설문조사가 완료되었습니다!", { - icon: <CheckCircle2 className="h-5 w-5 text-green-500" /> - }); - } catch (error) { - console.error('설문조사 저장 실패:', error); - toast.error('설문조사 저장에 실패했습니다.'); - } -}; + try { + currentDocumentPath.current = ""; + await loadDocument(currentInstance, apiFilePath, true); + setIsInitialLoaded(true); -// 서명 저장 핸들러 -const handleSave = async () => { - const currentInstance = webViewerInstance.current || instance; - if (!currentInstance) return; - - try { - const { documentViewer, annotationManager } = currentInstance.Core; - const doc = documentViewer.getDocument(); - - if (!doc) { - toast.error("문서가 로드되지 않았습니다."); + const { documentViewer } = currentInstance.Core; + requestAnimationFrame(() => { + try { + documentViewer.refreshAll(); + documentViewer.updateView(); + window.dispatchEvent(new Event("resize")); + } catch (e) { + console.warn("탭 변경 후 레이아웃 새로고침 스킵:", e); + } + }); + } catch (e) { + console.error("📛 탭 변경 실패:", e); + } + }; + + useEffect(() => { + const currentInstance = webViewerInstance.current || instance; + + if (!currentInstance || !filePath || isInitialLoaded) { return; } - - const formData = await collectFormData(currentInstance); - - const xfdfString = await annotationManager.exportAnnotations(); - const documentData = await doc.getFileData({ - xfdfString, - downloadType: "pdf", - }); - - if (isComplianceTemplate && !surveyData.completed) { - toast.error("준법 설문조사를 먼저 완료해주세요."); - setActiveTab('survey'); + + const isMainTab = activeTab === 'main'; + const shouldLoadInitial = allFiles.length === 1 || isMainTab; + + if (!shouldLoadInitial || currentDocumentPath.current !== "") { return; } - - if (onSign) { - await onSign(documentData, { formData, surveyData, signatureFields }); + + const normalizedPath = filePath.startsWith('/') ? filePath.substring(1) : filePath; + const encodedPath = normalizedPath.split('/').map(part => encodeURIComponent(part)).join('/'); + const apiFilePath = `/api/files/${encodedPath}`; + + currentDocumentPath.current = ""; + + loadDocument(currentInstance, apiFilePath, true).then(() => { + setIsInitialLoaded(true); + }).catch((error) => { + console.error("📛 초기 마운트 로드 실패:", error); + }); + }, [webViewerInstance.current, instance, filePath, activeTab, isInitialLoaded, allFiles.length]); + + const handleSave = async () => { + const currentInstance = webViewerInstance.current || instance; + if (!currentInstance) return; + + try { + const { documentViewer, annotationManager } = currentInstance.Core; + const doc = documentViewer.getDocument(); + + if (!doc) { + toast.error("문서가 로드되지 않았습니다."); + return; + } + + const formData = await collectFormData(currentInstance); + + const xfdfString = await annotationManager.exportAnnotations(); + const documentData = await doc.getFileData({ + xfdfString, + downloadType: "pdf", + }); + + if (isComplianceTemplate && !surveyData.completed) { + toast.error("준법 설문조사를 먼저 완료해주세요."); + setActiveTab('survey'); + return; + } + + if (onSign) { + await onSign(documentData, { formData, surveyData, signatureFields }); + } else { + toast.success("계약서가 성공적으로 서명되었습니다."); + } + + handleClose(); + } catch (error) { + console.error("📛 서명 저장 실패:", error); + toast.error("서명을 저장하는데 실패했습니다."); + } + }; + + const handleClose = () => { + if (onClose) { + onClose(); } else { - toast.success("계약서가 성공적으로 서명되었습니다."); + setShowDialog(false); } - - handleClose(); - } catch (error) { - console.error("📛 서명 저장 실패:", error); - toast.error("서명을 저장하는데 실패했습니다."); - } -}; - -// 다이얼로그 닫기 핸들러 -const handleClose = () => { - if (onClose) { - onClose(); - } else { - setShowDialog(false); - } -}; + }; -// 동적 설문조사 컴포넌트 -const SurveyComponent = () => { - if (surveyLoading) { - return ( - <div className="h-full w-full"> - <Card className="h-full"> - <CardContent className="flex flex-col items-center justify-center h-full py-12"> - <Loader2 className="h-8 w-8 text-blue-500 animate-spin mb-4" /> - <p className="text-sm text-muted-foreground">설문조사를 불러오는 중...</p> - </CardContent> - </Card> - </div> - ); - } + // 개선된 SurveyComponent + const SurveyComponent = () => { + const { + control, + watch, + setValue, + getValues, + formState: { errors }, + trigger, + } = useForm<SurveyFormData>({ + defaultValues: {}, + mode: 'onChange' + }); - if (!surveyTemplate) { - return ( - <div className="h-full w-full"> - <Card className="h-full"> - <CardContent className="flex flex-col items-center justify-center h-full py-12"> - <AlertTriangle className="h-8 w-8 text-red-500 mb-4" /> - <p className="text-sm text-muted-foreground">설문조사 템플릿을 불러올 수 없습니다.</p> - <Button - variant="outline" - onClick={loadSurveyTemplate} - className="mt-2" - > - 다시 시도 - </Button> - </CardContent> - </Card> - </div> - ); - } + const watchedValues = watch(); + const [uploadedFiles, setUploadedFiles] = useState<Record<number, File[]>>({}); + + // 📊 실시간 진행 상태 계산 + const progressStatus = useMemo(() => { + if (!conditionalHandler || !surveyTemplate) { + return { + visibleQuestions: [], + totalRequired: 0, + completedRequired: 0, + completedQuestionIds: [], + incompleteQuestionIds: [], + progressPercentage: 0, + debugInfo: {} + }; + } - const completedCount = surveyTemplate.questions.filter((q: any) => isSurveyQuestionComplete(q)).length; - const progressPercentage = surveyTemplate.questions.length > 0 ? (completedCount / surveyTemplate.questions.length) * 100 : 0; + console.log('🔄 실시간 프로그레스 재계산 중...'); + console.log('📝 원본 watchedValues:', watchedValues); + + // 현재 답변을 조건부 핸들러가 인식할 수 있는 형태로 변환 + const convertedAnswers: Record<number, any> = {}; + Object.entries(watchedValues).forEach(([questionId, value]) => { + const id = parseInt(questionId); + const convertedValue = { + questionId: id, + answerValue: value?.answerValue || '', + detailText: value?.detailText || '', + otherText: value?.otherText || '', + files: value?.files || [] + }; + + convertedAnswers[id] = convertedValue; + + // 각 질문의 변환 과정 로그 + if (value?.answerValue) { + console.log(`📝 질문 ${id} 변환:`, { + 원본: value, + 변환후: convertedValue + }); + } + }); -const renderSurveyQuestion = (question: any) => { - const answer = surveyAnswers[question.id]; - const isComplete = isSurveyQuestionComplete(question); - - return ( - <div key={question.id} className="mb-6 p-4 border rounded-lg bg-gray-50"> - <div className="flex items-start justify-between mb-3"> - <div className="flex-1"> - <Label className="text-sm font-medium text-gray-900 flex items-center"> - <span className="mr-2 px-2 py-1 bg-blue-100 text-blue-700 rounded text-xs"> - {question.questionNumber} - </span> - {question.questionText} - {question.isRequired && <span className="text-red-500 ml-1">*</span>} - </Label> + console.log('📝 변환된 답변들 최종:', convertedAnswers); + + const result = conditionalHandler.getSimpleProgressStatus(convertedAnswers); + + console.log('📊 실시간 진행 상태 최종 결과:', { + 전체표시질문: result.visibleQuestions.length, + 필수질문수: result.totalRequired, + 완료된필수질문: result.completedRequired, + 진행률: result.progressPercentage, + 완료된질문들: result.completedQuestionIds, + 미완료질문들: result.incompleteQuestionIds, + 기본질문: result.visibleQuestions.filter(q => !q.parentQuestionId).length, + 조건부질문: result.visibleQuestions.filter(q => q.parentQuestionId).length, + 완료된기본질문: result.completedQuestionIds.filter(id => !result.visibleQuestions.find(q => q.id === id)?.parentQuestionId).length, + 완료된조건부질문: result.completedQuestionIds.filter(id => !!result.visibleQuestions.find(q => q.id === id)?.parentQuestionId).length + }); + + // 🚨 조건부 질문들의 답변 상태 특별 점검 + const conditionalQuestions = result.visibleQuestions.filter(q => q.parentQuestionId); + if (conditionalQuestions.length > 0) { + console.log('🚨 조건부 질문들 답변 상태 점검:', conditionalQuestions.map(q => ({ + id: q.id, + questionNumber: q.questionNumber, + isRequired: q.isRequired, + parentId: q.parentQuestionId, + watchedValue: watchedValues[q.id], + convertedAnswer: convertedAnswers[q.id], + hasWatchedAnswer: !!watchedValues[q.id]?.answerValue, + hasConvertedAnswer: !!convertedAnswers[q.id]?.answerValue, + isInRequiredList: result.totalRequired, + isCompleted: result.completedQuestionIds.includes(q.id) + }))); + } + + return result; + }, [conditionalHandler, watchedValues, surveyTemplate]); + + // 🎯 동적 상태 정보 + const visibleQuestions = progressStatus.visibleQuestions; + const totalVisibleQuestions = visibleQuestions.length; + const baseQuestionCount = surveyTemplate?.questions.length || 0; + const conditionalQuestionCount = totalVisibleQuestions - baseQuestionCount; + const hasConditionalQuestions = conditionalQuestionCount > 0; + + // ✅ 완료 가능 여부 + const canComplete = progressStatus.totalRequired > 0 && + progressStatus.completedRequired === progressStatus.totalRequired; + + if (surveyLoading) { + return ( + <div className="h-full w-full"> + <Card className="h-full"> + <CardContent className="flex flex-col items-center justify-center h-full py-12"> + <Loader2 className="h-8 w-8 text-blue-500 animate-spin mb-4" /> + <p className="text-sm text-muted-foreground">설문조사를 불러오는 중...</p> + </CardContent> + </Card> </div> - {isComplete && ( - <CheckCircle2 className="h-5 w-5 text-green-500 ml-2" /> - )} - </div> + ); + } - {question.questionType === 'RADIO' && ( - <RadioGroup - value={answer?.answerValue || ''} - onValueChange={(value) => updateSurveyAnswer(question.id, 'answerValue', value)} - className="space-y-2" - > - {question.options?.map((option: any) => ( - <div key={option.id} className="flex items-center space-x-2"> - <RadioGroupItem value={option.optionValue} id={`${question.id}-${option.id}`} /> - <Label htmlFor={`${question.id}-${option.id}`} className="text-sm"> - {option.optionText} - </Label> - </div> - ))} - </RadioGroup> - )} - - {question.questionType === 'DROPDOWN' && ( - <div className="space-y-2"> - <Select - value={answer?.answerValue || ''} - onValueChange={(value) => updateSurveyAnswer(question.id, 'answerValue', value)} - > - <SelectTrigger> - <SelectValue placeholder="선택해주세요" /> - </SelectTrigger> - <SelectContent> - {question.options?.map((option: any) => ( - <SelectItem key={option.id} value={option.optionValue}> - {option.optionText} - </SelectItem> - ))} - </SelectContent> - </Select> - - {answer?.answerValue === 'OTHER' && ( + if (!surveyTemplate) { + return ( + <div className="h-full w-full"> + <Card className="h-full"> + <CardContent className="flex flex-col items-center justify-center h-full py-12"> + <AlertTriangle className="h-8 w-8 text-red-500 mb-4" /> + <p className="text-sm text-muted-foreground">설문조사 템플릿을 불러올 수 없습니다.</p> + <Button + variant="outline" + onClick={loadSurveyTemplate} + className="mt-2" + > + 다시 시도 + </Button> + </CardContent> + </Card> + </div> + ); + } + + // 🚨 템플릿이 로드되면 모든 질문들의 isRequired 속성 확인 + React.useEffect(() => { + if (surveyTemplate && surveyTemplate.questions) { + console.log('🚨 설문 템플릿의 모든 질문들 isRequired 속성 확인:', surveyTemplate.questions.map(q => ({ + id: q.id, + questionNumber: q.questionNumber, + questionText: q.questionText?.substring(0, 30) + '...', + isRequired: q.isRequired, + parentQuestionId: q.parentQuestionId, + conditionalValue: q.conditionalValue, + isConditional: !!q.parentQuestionId + }))); + + const allQuestions = surveyTemplate.questions.length; + const requiredQuestions = surveyTemplate.questions.filter(q => q.isRequired).length; + const conditionalQuestions = surveyTemplate.questions.filter(q => q.parentQuestionId).length; + const requiredConditionalQuestions = surveyTemplate.questions.filter(q => q.parentQuestionId && q.isRequired).length; + + console.log('📊 템플릿 질문 통계:', { + 전체질문수: allQuestions, + 전체필수질문수: requiredQuestions, + 조건부질문수: conditionalQuestions, + 필수조건부질문수: requiredConditionalQuestions, + 기본질문수: allQuestions - conditionalQuestions, + 필수기본질문수: requiredQuestions - requiredConditionalQuestions + }); + + // 🚨 만약 조건부 질문들이 필수가 아니라면 경고 + if (conditionalQuestions > 0 && requiredConditionalQuestions === 0) { + console.warn('⚠️ 경고: 조건부 질문들이 모두 필수가 아닙니다! 데이터베이스 확인 필요'); + console.warn('조건부 질문들:', surveyTemplate.questions.filter(q => q.parentQuestionId)); + } + } + }, [surveyTemplate]); + + const handleFileUpload = useCallback((questionId: number, files: FileList | null) => { + if (!files) return; + + const fileArray = Array.from(files); + setUploadedFiles(prev => ({ + ...prev, + [questionId]: fileArray + })); + + setValue(`${questionId}.files`, fileArray); + }, [setValue]); + + const handleAnswerChange = useCallback((questionId: number, field: string, value: any) => { + console.log(`📝 답변 변경: 질문 ${questionId}, 필드 ${field}, 값:`, value); + + // 해당 질문이 조건부 질문인지 확인 + const question = visibleQuestions.find(q => q.id === questionId); + if (question) { + console.log(`📋 질문 ${questionId} 상세 정보:`, { + id: question.id, + questionNumber: question.questionNumber, + isRequired: question.isRequired, + parentQuestionId: question.parentQuestionId, + conditionalValue: question.conditionalValue, + isConditional: !!question.parentQuestionId + }); + } + + setValue(`${questionId}.${field}`, value); + + // setValue 후 현재 값 확인 + setTimeout(() => { + const currentFormValues = getValues(); + console.log(`✅ setValue 후 확인 - 질문 ${questionId}:`, { + 설정한값: value, + 저장된전체값: currentFormValues[questionId], + 전체폼값: currentFormValues + }); + }, 0); + + // 부모 질문의 답변이 변경되면 조건부 자식 질문들 처리 + if (field === 'answerValue' && conditionalHandler) { + const currentValues = getValues(); + const convertedAnswers: Record<number, any> = {}; + + Object.entries(currentValues).forEach(([qId, qValue]) => { + const id = parseInt(qId); + convertedAnswers[id] = { + questionId: id, + answerValue: qValue?.answerValue || '', + detailText: qValue?.detailText || '', + otherText: qValue?.otherText || '', + files: qValue?.files || [] + }; + }); + + // 새로운 답변 반영 + convertedAnswers[questionId] = { + ...convertedAnswers[questionId], + questionId, + [field]: value + }; + + console.log(`🔄 질문 ${questionId}의 답변 변경으로 인한 조건부 질문 처리...`); + console.log(`🔄 변경 후 전체 답변:`, convertedAnswers); + + // 영향받는 자식 질문들의 답변 초기화 + const clearedAnswers = conditionalHandler.clearAffectedChildAnswers(questionId, value, convertedAnswers); + + console.log(`🧹 정리된 답변들:`, clearedAnswers); + + // 삭제된 답변들을 폼에서도 제거 + Object.keys(convertedAnswers).forEach(qId => { + const id = parseInt(qId); + if (id !== questionId && !clearedAnswers[id]) { + console.log(`🗑️ 질문 ${id} 답변 초기화`); + setValue(`${id}`, { + answerValue: '', + detailText: '', + otherText: '', + files: [] + }); + + // 업로드된 파일도 초기화 + setUploadedFiles(prev => { + const updated = { ...prev }; + delete updated[id]; + return updated; + }); + } + }); + } + }, [setValue, getValues, conditionalHandler, visibleQuestions]); + + // 🔥 설문조사 완료 핸들러 수정 + const handleSurveyComplete = useCallback(async () => { + console.log('🎯 설문조사 완료 시도'); + + // 이미 제출 중이면 중복 실행 방지 + if (isSubmitting) { + console.log('⚠️ 이미 제출 중...'); + return; + } + + setIsSubmitting(true); + + try { + const currentValues = getValues(); + console.log('📝 현재 폼 값들:', currentValues); + + // 폼 검증 + const isValid = await trigger(); + console.log('🔍 폼 검증 결과:', isValid); + + // 진행 상태 최종 확인 + console.log('📊 최종 진행 상태:', { + totalRequired: progressStatus.totalRequired, + completedRequired: progressStatus.completedRequired, + canComplete, + 완료된질문들: progressStatus.completedQuestionIds, + 미완료질문들: progressStatus.incompleteQuestionIds + }); + + if (!canComplete) { + let errorMessage = '모든 필수 항목을 완료해주세요.'; + let errorDescription = `${progressStatus.completedRequired}/${progressStatus.totalRequired} 완료됨`; + + // 구체적인 미완료 이유 표시 + if (progressStatus.incompleteQuestionIds.length > 0) { + const incompleteReasons = progressStatus.incompleteQuestionIds.map(id => { + const debug = progressStatus.debugInfo?.[id]; + const question = visibleQuestions.find(q => q.id === id); + return `• Q${question?.questionNumber}: ${question?.questionText?.substring(0, 40)}...\n → ${debug?.incompleteReason || '답변 필요'}`; + }).slice(0, 3); + + errorDescription = incompleteReasons.join('\n\n'); + + if (progressStatus.incompleteQuestionIds.length > 3) { + errorDescription += `\n\n... 외 ${progressStatus.incompleteQuestionIds.length - 3}개 항목`; + } + } + + toast.error(errorMessage, { + description: errorDescription, + icon: <AlertTriangle className="h-5 w-5 text-red-500" />, + duration: 12000 + }); + + // 첫 번째 미완료 질문으로 스크롤 + if (progressStatus.incompleteQuestionIds.length > 0) { + const firstIncompleteId = progressStatus.incompleteQuestionIds[0]; + const element = document.getElementById(`question-${firstIncompleteId}`); + if (element) { + element.scrollIntoView({ behavior: 'smooth', block: 'center' }); + } + } + + return; + } + + // 필수 데이터 확인 + if (!contractId || !surveyTemplate?.id) { + toast.error('계약서 정보 또는 설문 템플릿 정보가 없습니다.'); + return; + } + + // 서버 액션에 전달할 데이터 준비 + const surveyAnswers: SurveyAnswerData[] = Object.entries(currentValues) + .map(([questionId, value]) => ({ + questionId: parseInt(questionId), + answerValue: value?.answerValue || '', + detailText: value?.detailText || '', + otherText: value?.otherText || '', + files: value?.files || [] + })) + .filter(answer => + // 빈 답변 필터링 (하지만 필수 질문의 답변이 완료되었음을 이미 확인했음) + answer.answerValue || answer.detailText || (answer.files && answer.files.length > 0) + ); + + const requestData: CompleteSurveyRequest = { + contractId: contractId, + templateId: surveyTemplate.id, + answers: surveyAnswers, + progressStatus: progressStatus // 디버깅용 추가 정보 + }; + + console.log('📤 서버로 전송할 데이터:', { + contractId: requestData.contractId, + templateId: requestData.templateId, + answersCount: requestData.answers.length, + answers: requestData.answers.map(a => ({ + questionId: a.questionId, + hasAnswer: !!a.answerValue, + hasDetail: !!a.detailText, + hasOther: !!a.otherText, + filesCount: a.files?.length || 0 + })) + }); + + // 제출 중 토스트 표시 + const submitToast = toast.loading('설문조사를 저장하는 중...', { + description: '잠시만 기다려주세요.', + duration: Infinity + }); + + // 서버 액션 호출 + const result = await completeSurvey(requestData); + + // 로딩 토스트 제거 + toast.dismiss(submitToast); + + if (result.success) { + // 클라이언트 상태 업데이트 (기존 로직 유지) + setSurveyData({ + completed: true, + answers: surveyAnswers, + timestamp: new Date().toISOString(), + progressStatus: progressStatus, + totalQuestions: totalVisibleQuestions, + conditionalQuestions: conditionalQuestionCount, + responseId: result.data?.responseId // 서버에서 반환된 응답 ID 저장 + }); + + // 🔥 부모 컴포넌트에 설문조사 완료 알림 + if (onSurveyComplete) { + onSurveyComplete(); + } + + toast.success("🎉 설문조사가 완료되었습니다!", { + description: `총 ${progressStatus.totalRequired}개 필수 질문 완료${hasConditionalQuestions ? ` (조건부 ${conditionalQuestionCount}개 포함)` : ''}`, + icon: <CheckCircle2 className="h-5 w-5 text-green-500" />, + duration: 5000 + }); + + console.log('✅ 설문조사 완료:', { + totalAnswered: surveyAnswers.length, + totalRequired: progressStatus.totalRequired, + conditionalQuestions: conditionalQuestionCount, + responseId: result.data?.responseId + }); + + // 자동으로 메인 탭으로 이동 (선택사항) + setTimeout(() => { + setActiveTab('main'); + }, 2000); + + } else { + // 서버 에러 처리 + console.error('❌ 서버 응답 에러:', result.message); + toast.error('설문조사 저장 실패', { + description: result.message || '서버에서 오류가 발생했습니다.', + icon: <AlertTriangle className="h-5 w-5 text-red-500" />, + duration: 8000 + }); + } + + } catch (error) { + console.error('❌ 설문조사 저장 중 예외 발생:', error); + + let errorMessage = '설문조사 저장에 실패했습니다.'; + let errorDescription = '네트워크 연결을 확인하고 다시 시도해주세요.'; + + if (error instanceof Error) { + errorDescription = error.message; + } + + toast.error(errorMessage, { + description: errorDescription, + icon: <AlertTriangle className="h-5 w-5 text-red-500" />, + duration: 10000 + }); + } finally { + setIsSubmitting(false); + } + }, [ + getValues, + trigger, + progressStatus, + visibleQuestions, + canComplete, + contractId, + surveyTemplate?.id, + totalVisibleQuestions, + conditionalQuestionCount, + hasConditionalQuestions, + isSubmitting, + setActiveTab, + onSurveyComplete // 🔥 추가 + ]); + + // OTHER 텍스트 입력 컴포넌트 + const OtherTextInput = ({ questionId, fieldName }: { questionId: number; fieldName: string }) => { + const answerValue = useWatch({ + control, + name: `${fieldName}.answerValue` + }); + + if (answerValue !== 'OTHER') return null; + + return ( + <Controller + name={`${fieldName}.otherText`} + control={control} + render={({ field }) => ( <Input + {...field} placeholder="기타 내용을 입력해주세요" - value={answer?.otherText || ''} - onChange={(e) => updateSurveyAnswer(question.id, 'otherText', e.target.value)} className="mt-2" /> )} - </div> - )} - - {question.questionType === 'TEXTAREA' && ( - <Textarea - placeholder="상세한 내용을 입력해주세요" - value={answer?.detailText || ''} - onChange={(e) => updateSurveyAnswer(question.id, 'detailText', e.target.value)} - rows={4} /> - )} - - {question.hasDetailText && answer?.answerValue === 'YES' && ( - <div className="mt-3"> - <Label className="text-sm text-gray-700 mb-2 block">상세 내용을 기술해주세요:</Label> - <Textarea - placeholder="상세한 내용을 입력해주세요" - value={answer?.detailText || ''} - onChange={(e) => updateSurveyAnswer(question.id, 'detailText', e.target.value)} - rows={3} - className="w-full" - /> - </div> - )} - - {question.hasFileUpload && answer?.answerValue === 'YES' && ( - <div className="mt-3"> - <Label className="text-sm text-gray-700 mb-2 block">첨부파일:</Label> - <div className="border-2 border-dashed border-gray-300 rounded-lg p-4"> - <input - type="file" - multiple - onChange={(e) => handleSurveyFileUpload(question.id, e.target.files)} - className="hidden" - id={`file-${question.id}`} - /> - <label htmlFor={`file-${question.id}`} className="cursor-pointer"> - <div className="flex flex-col items-center"> - <Upload className="h-8 w-8 text-gray-400 mb-2" /> - <span className="text-sm text-gray-500">파일을 선택하거나 여기에 드래그하세요</span> + ); + }; + + return ( + <div className="h-full w-full flex flex-col"> + <Card className="h-full flex flex-col"> + <CardHeader className="flex-shrink-0"> + <CardTitle className="flex items-center justify-between"> + <div className="flex items-center"> + <ClipboardList className="h-5 w-5 mr-2 text-amber-500" /> + {surveyTemplate.name} + {conditionalHandler && ( + <Badge variant="outline" className="ml-2 text-xs"> + 조건부 질문 지원 + </Badge> + )} </div> - </label> - - {uploadedFiles[question.id] && uploadedFiles[question.id].length > 0 && ( - <div className="mt-3 space-y-1"> - {uploadedFiles[question.id].map((file, index) => ( - <div key={index} className="flex items-center space-x-2 text-sm"> - <FileText className="h-4 w-4 text-blue-500" /> - <span>{file.name}</span> - <span className="text-gray-500">({(file.size / 1024).toFixed(1)} KB)</span> + <div className="text-sm text-gray-600"> + {progressStatus.completedRequired}/{progressStatus.totalRequired} 완료 + </div> + </CardTitle> + + <CardDescription> + {surveyTemplate.description} + + {/* 🎯 동적 질문 수 표시 */} + <div className="mt-2 space-y-1"> + <div className="flex items-center text-sm"> + <span className="text-gray-600"> + 📋 총 {totalVisibleQuestions}개 질문 + {hasConditionalQuestions && ( + <span className="text-blue-600 ml-1"> + (기본 {baseQuestionCount}개 + 조건부 {conditionalQuestionCount}개) + </span> + )} + </span> + </div> + + {hasConditionalQuestions && ( + <div className="text-blue-600 text-sm"> + ⚡ 답변에 따라 {conditionalQuestionCount}개 추가 질문이 나타났습니다 </div> - ))} + )} + </div> + </CardDescription> + + {/* 📊 동적 프로그레스 바 */} + <div className="space-y-2"> + <div className="flex justify-between text-xs text-gray-600"> + <span>필수 질문 진행률</span> + <span> + {Math.round(progressStatus.progressPercentage)}% + {hasConditionalQuestions && ( + <span className="ml-1 text-blue-600"> + (조건부 포함) + </span> + )} + </span> + </div> + <div className="w-full bg-gray-200 rounded-full h-2"> + <div + className="bg-gradient-to-r from-blue-500 to-blue-600 h-2 rounded-full transition-all duration-500 ease-out" + style={{ width: `${progressStatus.progressPercentage}%` }} + /> </div> - )} - </div> - </div> - )} - </div> - ); -}; - return ( - <div className="h-full w-full flex flex-col"> - <Card className="h-full flex flex-col"> - <CardHeader className="flex-shrink-0"> - <CardTitle className="flex items-center justify-between"> - <div className="flex items-center"> - <ClipboardList className="h-5 w-5 mr-2 text-amber-500" /> - {surveyTemplate.name} - </div> - <div className="text-sm text-gray-500"> - {completedCount}/{surveyTemplate.questions.length} 완료 + {/* 세부 진행 상황 */} + {progressStatus.totalRequired > 0 && ( + <div className="text-xs text-gray-500 flex justify-between"> + <span>완료: {progressStatus.completedRequired}개</span> + <span>남은 필수: {progressStatus.totalRequired - progressStatus.completedRequired}개</span> + </div> + )} </div> - </CardTitle> - <CardDescription> - {surveyTemplate.description} - </CardDescription> - - <div className="w-full bg-gray-200 rounded-full h-2"> - <div - className="bg-blue-600 h-2 rounded-full transition-all duration-300" - style={{ width: `${progressPercentage}%` }} - /> - </div> - </CardHeader> - - <CardContent className="flex-1 min-h-0 overflow-y-auto"> - <div className="space-y-6"> - <div className="p-4 border rounded-lg bg-yellow-50"> - <div className="flex items-start"> - <AlertTriangle className="h-5 w-5 text-yellow-600 mt-0.5 mr-2" /> - <div> - <p className="font-medium text-yellow-800">중요 안내</p> - <p className="text-sm text-yellow-700 mt-1"> - 본 설문조사는 준법 의무 확인을 위한 필수 절차입니다. 모든 항목을 정확히 작성해주세요. - </p> + </CardHeader> + + <CardContent className="flex-1 min-h-0 overflow-y-auto"> + <form onSubmit={(e) => e.preventDefault()} className="space-y-6"> + <div className="p-4 border rounded-lg bg-yellow-50"> + <div className="flex items-start"> + <AlertTriangle className="h-5 w-5 text-yellow-600 mt-0.5 mr-2" /> + <div> + <p className="font-medium text-yellow-800">중요 안내</p> + <p className="text-sm text-yellow-700 mt-1"> + 본 설문조사는 준법 의무 확인을 위한 필수 절차입니다. 모든 항목을 정확히 작성해주세요. + {conditionalHandler && ( + <span className="block mt-1"> + ⚡ 답변에 따라 추가 질문이 나타날 수 있으며, 이 경우 모든 추가 질문도 완료해야 합니다. + </span> + )} + </p> + </div> </div> </div> - </div> - <div className="space-y-4"> - {surveyTemplate.questions.map((question: any) => renderSurveyQuestion(question))} - </div> + <div className="space-y-4"> + {visibleQuestions.map((question: any) => { + const fieldName = `${question.id}`; + const isComplete = progressStatus.completedQuestionIds.includes(question.id); + const isConditional = !!question.parentQuestionId; - <div className="flex justify-end pt-6 border-t"> - <Button - onClick={handleSurveyComplete} - disabled={!isSurveyComplete()} - className="bg-blue-600 hover:bg-blue-700" - > - <CheckCircle2 className="h-4 w-4 mr-2" /> - 설문조사 완료 - </Button> - </div> - </div> - </CardContent> - </Card> - </div> - ); -}; - -// 디버깅을 위한 useEffect -useEffect(() => { - if (isNDATemplate) { - console.log("🔍 NDA 템플릿 디버깅:", { - filePath, - additionalFiles, - allFiles, - activeTab, - isInitialLoaded, - currentDocumentPath: currentDocumentPath.current, - hasWebViewerInstance: !!webViewerInstance.current, - hasParentInstance: !!instance, - signatureFields, - hasSignatureFields, - isAutoSignProcessing, - autoSignError - }); - } -}, [isNDATemplate, filePath, additionalFiles, allFiles, activeTab, isInitialLoaded, signatureFields, hasSignatureFields, isAutoSignProcessing, autoSignError]); + return ( + <div + key={question.id} + id={`question-${question.id}`} + className={`mb-6 p-4 border rounded-lg transition-colors duration-200 ${isConditional + ? 'bg-blue-50 border-blue-200' + : 'bg-gray-50 border-gray-200' + } ${!isComplete && question.isRequired ? 'ring-2 ring-red-100' : ''}`} + > + <div className="flex items-start justify-between mb-3"> + <div className="flex-1"> + <Label className="text-sm font-medium text-gray-900 flex items-center flex-wrap gap-2"> + <span className="px-2 py-1 bg-blue-100 text-blue-700 rounded text-xs"> + Q{question.questionNumber} + </span> + + {isConditional && ( + <span className="px-2 py-1 bg-amber-100 text-amber-700 rounded text-xs"> + ⚡ 조건부 질문 + </span> + )} + + {question.questionType === 'FILE' && ( + <span className="px-2 py-1 bg-green-100 text-green-700 rounded text-xs"> + 📎 파일 업로드 + </span> + )} + + <div className="w-full mt-1"> + {question.questionText} + {question.isRequired && <span className="text-red-500 ml-1">*</span>} + </div> + </Label> + </div> + + {isComplete && ( + <CheckCircle2 className="h-5 w-5 text-green-500 ml-2 flex-shrink-0" /> + )} + </div> -// ✅ 서명 필드 상태 표시 컴포넌트 -const SignatureFieldsStatus = () => { - if (!hasSignatureFields && !isAutoSignProcessing && !autoSignError) return null; + {/* 질문 타입별 렌더링 (기존 코드와 동일) */} + {/* RADIO 타입 */} + {question.questionType === 'RADIO' && ( + <Controller + name={`${fieldName}.answerValue`} + control={control} + rules={{ required: question.isRequired ? '필수 항목입니다.' : false }} + render={({ field }) => ( + <RadioGroup + value={field.value || ''} + onValueChange={(value) => { + field.onChange(value); + handleAnswerChange(question.id, 'answerValue', value); + }} + className="space-y-2" + > + {question.options?.map((option: any) => ( + <div key={option.id} className="flex items-center space-x-2"> + <RadioGroupItem value={option.optionValue} id={`${question.id}-${option.id}`} /> + <Label htmlFor={`${question.id}-${option.id}`} className="text-sm"> + {option.optionText} + </Label> + </div> + ))} + </RadioGroup> + )} + /> + )} - return ( - <div className="mb-2"> - {isAutoSignProcessing ? ( - <Badge variant="secondary" className="text-xs"> - <Loader2 className="h-3 w-3 mr-1 animate-spin" /> - 서명 필드 생성 중... - </Badge> - ) : autoSignError ? ( - <Badge variant="destructive" className="text-xs bg-red-50 text-red-700 border-red-200"> - <AlertTriangle className="h-3 w-3 mr-1" /> - 자동 생성 실패 - </Badge> - ) : hasSignatureFields ? ( - <Badge variant="outline" className="text-xs bg-blue-50 text-blue-700 border-blue-200"> - <Target className="h-3 w-3 mr-1" /> - {signatureFields.length}개 서명 필드 자동 생성됨 - </Badge> - ) : null} - </div> - ); -}; + {/* DROPDOWN 타입 */} + {question.questionType === 'DROPDOWN' && ( + <div className="space-y-2"> + <Controller + name={`${fieldName}.answerValue`} + control={control} + rules={{ required: question.isRequired ? '필수 항목입니다.' : false }} + render={({ field }) => ( + <Select + value={field.value || ''} + onValueChange={(value) => { + field.onChange(value); + handleAnswerChange(question.id, 'answerValue', value); + }} + > + <SelectTrigger> + <SelectValue placeholder="선택해주세요" /> + </SelectTrigger> + <SelectContent> + {question.options?.map((option: any) => ( + <SelectItem key={option.id} value={option.optionValue}> + {option.optionText} + </SelectItem> + ))} + </SelectContent> + </Select> + )} + /> + + <OtherTextInput questionId={question.id} fieldName={fieldName} /> + </div> + )} -// 인라인 뷰어 렌더링 부분 수정 -if (!isOpen && !onClose) { - return ( - <div className="h-full w-full flex flex-col overflow-hidden"> - {allFiles.length > 1 ? ( - <Tabs value={activeTab} onValueChange={handleTabChange} className="h-full flex flex-col"> - <div className="border-b bg-gray-50 px-3 py-2 flex-shrink-0"> - <SignatureFieldsStatus /> - <TabsList className="grid w-full h-8" style={{ gridTemplateColumns: `repeat(${allFiles.length}, 1fr)` }}> - {allFiles.map((file, index) => { - let tabId: string; - if (index === 0) { - tabId = 'main'; - } else if (file.type === 'survey') { - tabId = 'survey'; - } else { - const fileOnlyIndex = allFiles.slice(0, index).filter(f => f.type !== 'survey').length; - tabId = `file-${fileOnlyIndex}`; - } - - return ( - <TabsTrigger key={tabId} value={tabId} className="text-xs"> - <div className="flex items-center space-x-1"> - {file.type === 'survey' ? ( - <ClipboardList className="h-3 w-3" /> - ) : ( - <FileText className="h-3 w-3" /> + {/* TEXTAREA 타입 */} + {question.questionType === 'TEXTAREA' && ( + <Controller + name={`${fieldName}.detailText`} + control={control} + rules={{ required: question.isRequired ? '필수 항목입니다.' : false }} + render={({ field }) => ( + <Textarea + {...field} + placeholder="상세한 내용을 입력해주세요" + rows={4} + /> + )} + /> )} - <span className="truncate">{file.name}</span> - {file.type === 'survey' && surveyData.completed && ( - <Badge variant="secondary" className="ml-1 h-4 px-1 text-xs">완료</Badge> + + {/* 상세 텍스트 입력 */} + {question.hasDetailText && ( + <div className="mt-3"> + <Label className="text-sm text-gray-700 mb-2 block">상세 내용을 기술해주세요:</Label> + <Controller + name={`${fieldName}.detailText`} + control={control} + rules={{ required: question.isRequired ? '상세 내용을 입력해주세요.' : false }} + render={({ field }) => ( + <Textarea + {...field} + placeholder="상세한 내용을 입력해주세요" + rows={3} + className="w-full" + /> + )} + /> + </div> + )} + + {/* 파일 업로드 */} + {(question.hasFileUpload || question.questionType === 'FILE') && ( + <div className="mt-3"> + <Label className="text-sm text-gray-700 mb-2 block">첨부파일:</Label> + <div className="border-2 border-dashed border-gray-300 rounded-lg p-4"> + <input + type="file" + multiple + onChange={(e) => handleFileUpload(question.id, e.target.files)} + className="hidden" + id={`file-${question.id}`} + /> + <label htmlFor={`file-${question.id}`} className="cursor-pointer"> + <div className="flex flex-col items-center"> + <Upload className="h-8 w-8 text-gray-400 mb-2" /> + <span className="text-sm text-gray-500">파일을 선택하거나 여기에 드래그하세요</span> + </div> + </label> + + {uploadedFiles[question.id] && uploadedFiles[question.id].length > 0 && ( + <div className="mt-3 space-y-1"> + {uploadedFiles[question.id].map((file, index) => ( + <div key={index} className="flex items-center space-x-2 text-sm"> + <FileText className="h-4 w-4 text-blue-500" /> + <span>{file.name}</span> + <span className="text-gray-500">({(file.size / 1024).toFixed(1)} KB)</span> + </div> + ))} + </div> + )} + </div> + </div> + )} + + {/* 에러 메시지 */} + {errors[fieldName] && ( + <p className="mt-2 text-sm text-red-600 flex items-center"> + <AlertTriangle className="h-4 w-4 mr-1" /> + {errors[fieldName]?.answerValue?.message || + errors[fieldName]?.detailText?.message || + '필수 항목을 완료해주세요.'} + </p> )} </div> - </TabsTrigger> - ); - })} - </TabsList> - </div> - - <div className="flex-1 min-h-0 overflow-hidden relative"> - <div - className={`absolute inset-0 p-3 ${activeTab === 'survey' ? 'block' : 'hidden'}`} - > - <SurveyComponent /> - </div> - - <div - className={`absolute inset-0 ${activeTab !== 'survey' ? 'block' : 'hidden'}`} - > - {/* ✅ 수정: 동일한 구조로 통일하고 스크롤 활성화 */} - <div className="w-full h-full overflow-auto"> - <div - ref={viewer} - className="w-full h-full min-h-[400px]" - style={{ - position: 'relative', - // ✅ WebViewer가 스크롤을 제어하도록 설정 - overflow: 'visible' - }} - > - {fileLoading && ( - <div className="absolute inset-0 flex flex-col items-center justify-center bg-white z-10"> - <Loader2 className="h-8 w-8 text-blue-500 animate-spin mb-4" /> - <p className="text-sm text-muted-foreground">문서 로딩 중...</p> - </div> - )} - </div> + ); + })} </div> - </div> - </div> - </Tabs> - ) : ( - // ✅ 수정: Tabs가 없는 경우도 동일한 구조로 변경 - <div className="h-full w-full flex flex-col"> - <div className="flex-shrink-0 p-2"> - <SignatureFieldsStatus /> - </div> - <div className="flex-1 min-h-0 overflow-hidden relative"> - <div className="absolute inset-0"> - <div className="w-full h-full overflow-auto"> - <div - ref={viewer} - className="w-full h-full min-h-[400px]" - style={{ - position: 'relative', - // ✅ WebViewer가 스크롤을 제어하도록 설정 - overflow: 'visible' - }} - > - {fileLoading && ( - <div className="absolute inset-0 flex flex-col items-center justify-center bg-white z-10"> - <Loader2 className="h-8 w-8 text-blue-500 animate-spin mb-4" /> - <p className="text-sm text-muted-foreground">문서 로딩 중...</p> - </div> - )} + + {/* ✅ 향상된 완료 버튼 */} + <div className="flex justify-end pt-6 border-t"> + <div className="flex items-center space-x-4"> + {/* 진행 상황 요약 */} + <div className="text-sm"> + {canComplete ? ( + <div className="text-green-600 font-medium flex items-center"> + <CheckCircle2 className="h-4 w-4 mr-1" /> + 모든 필수 항목 완료됨 + {hasConditionalQuestions && ( + <span className="ml-2 text-xs text-blue-600"> + (조건부 {conditionalQuestionCount}개 포함) + </span> + )} + </div> + ) : ( + <div className="space-y-1"> + <div className="flex items-center text-gray-600"> + <AlertTriangle className="h-4 w-4 mr-1 text-red-500" /> + {progressStatus.completedRequired}/{progressStatus.totalRequired} 완료 + </div> + {hasConditionalQuestions && ( + <div className="text-xs text-blue-600"> + 기본 + 조건부 {conditionalQuestionCount}개 포함 + </div> + )} + </div> + )} + </div> + + <Button + type="button" + onClick={handleSurveyComplete} + disabled={!canComplete || isSubmitting} + className={`transition-all duration-200 ${canComplete && !isSubmitting + ? 'bg-green-600 hover:bg-green-700 shadow-lg' + : 'bg-gray-400 cursor-not-allowed' + }`} + > + {isSubmitting ? ( + <> + <Loader2 className="h-4 w-4 mr-2 animate-spin" /> + 저장 중... + </> + ) : ( + <> + <CheckCircle2 className="h-4 w-4 mr-2" /> + 설문조사 완료 + </> + )} + <span className="ml-1 text-xs"> + ({progressStatus.completedRequired}/{progressStatus.totalRequired}) + </span> + </Button> </div> </div> - </div> - </div> - </div> - )} - </div> - ); -} + </form> + </CardContent> + </Card> + </div> + ); + }; + + // 🔥 서명 상태 표시 컴포넌트 개선 + const SignatureFieldsStatus = () => { + if (!hasSignatureFields && !isAutoSignProcessing && !autoSignError && !hasValidSignature) return null; -// 다이얼로그 뷰어 렌더링 부분도 동일하게 수정 -return ( - <Dialog open={showDialog} onOpenChange={handleClose}> - <DialogContent className="w-[90vw] max-w-6xl h-[90vh] flex flex-col p-0"> - <DialogHeader className="px-6 py-4 border-b flex-shrink-0"> - <DialogTitle className="flex items-center justify-between"> - <span>기본계약서 서명</span> - <SignatureFieldsStatus /> - </DialogTitle> - <DialogDescription> - 계약서를 확인하고 서명을 진행해주세요. - {isComplianceTemplate && ( - <span className="block mt-1 text-amber-600">📋 준법 설문조사를 먼저 완료해주세요.</span> - )} - {isNDATemplate && additionalFiles.length > 0 && ( - <span className="block mt-1 text-blue-600">📎 첨부서류 {additionalFiles.length}개를 각 탭에서 확인해주세요.</span> - )} - {hasSignatureFields && ( - <span className="block mt-1 text-green-600"> - 🎯 서명 위치가 자동으로 감지되었습니다. - {signatureFields.some(f => f.includes('_text')) && ( - <span className="block text-sm text-amber-600"> - 💡 빨간색 텍스트로 표시된 영역을 찾아 서명해주세요. - </span> - )} - {signatureFields.some(f => f.startsWith('default_signature_')) && !signatureFields.some(f => f.includes('_text')) && ( - <span className="block text-sm text-amber-600"> - 💡 마지막 페이지 하단의 핑크색 영역에서 서명해주세요. - </span> - )} - </span> - )} - {autoSignError && ( - <span className="block mt-1 text-red-600">⚠️ 자동 서명 필드 생성 실패 - 수동으로 서명 위치를 클릭해주세요.</span> - )} - </DialogDescription> - </DialogHeader> + return ( + <div className="mb-2 flex items-center space-x-2"> + {isAutoSignProcessing ? ( + <Badge variant="secondary" className="text-xs"> + <Loader2 className="h-3 w-3 mr-1 animate-spin" /> + 서명 필드 생성 중... + </Badge> + ) : autoSignError ? ( + <Badge variant="destructive" className="text-xs bg-red-50 text-red-700 border-red-200"> + <AlertTriangle className="h-3 w-3 mr-1" /> + 자동 생성 실패 + </Badge> + ) : hasSignatureFields ? ( + <Badge variant="outline" className="text-xs bg-blue-50 text-blue-700 border-blue-200"> + <Target className="h-3 w-3 mr-1" /> + {signatureFields.length}개 서명 필드 자동 생성됨 + </Badge> + ) : null} + + {/* 🔥 서명 완료 상태 표시 */} + {hasValidSignature && ( + <Badge variant="outline" className="text-xs bg-green-50 text-green-700 border-green-200"> + <CheckCircle2 className="h-3 w-3 mr-1" /> + 서명 완료됨 + </Badge> + )} + </div> + ); + }; - <div className="flex-1 min-h-0 overflow-hidden"> + // 인라인 뷰어 렌더링 + if (!isOpen && !onClose) { + return ( + <div className="h-full w-full flex flex-col overflow-hidden"> {allFiles.length > 1 ? ( <Tabs value={activeTab} onValueChange={handleTabChange} className="h-full flex flex-col"> <div className="border-b bg-gray-50 px-3 py-2 flex-shrink-0"> + <SignatureFieldsStatus /> <TabsList className="grid w-full h-8" style={{ gridTemplateColumns: `repeat(${allFiles.length}, 1fr)` }}> {allFiles.map((file, index) => { - const tabId = index === 0 ? 'main' : file.type === 'survey' ? 'survey' : `file-${index}`; + let tabId: string; + if (index === 0) { + tabId = 'main'; + } else if (file.type === 'survey') { + tabId = 'survey'; + } else { + const fileOnlyIndex = allFiles.slice(0, index).filter(f => f.type !== 'survey').length; + tabId = `file-${fileOnlyIndex}`; + } + return ( <TabsTrigger key={tabId} value={tabId} className="text-xs"> <div className="flex items-center space-x-1"> - {file.type === 'survey' ? <ClipboardList className="h-3 w-3" /> : <FileText className="h-3 w-3" />} + {file.type === 'survey' ? ( + <ClipboardList className="h-3 w-3" /> + ) : ( + <FileText className="h-3 w-3" /> + )} <span className="truncate">{file.name}</span> {file.type === 'survey' && surveyData.completed && ( <Badge variant="secondary" className="ml-1 h-4 px-1 text-xs">완료</Badge> @@ -1520,17 +1901,20 @@ return ( </div> <div className="flex-1 min-h-0 overflow-hidden relative"> - <div className={`absolute inset-0 p-3 ${activeTab === 'survey' ? 'block' : 'hidden'}`}> + <div + className={`absolute inset-0 p-3 ${activeTab === 'survey' ? 'block' : 'hidden'}`} + > <SurveyComponent /> </div> - <div className={`absolute inset-0 ${activeTab !== 'survey' ? 'block' : 'hidden'}`}> - {/* ✅ 수정: 스크롤 활성화 */} + <div + className={`absolute inset-0 ${activeTab !== 'survey' ? 'block' : 'hidden'}`} + > <div className="w-full h-full overflow-auto"> - <div - ref={viewer} + <div + ref={viewer} className="w-full h-full min-h-[400px]" - style={{ + style={{ position: 'relative', overflow: 'visible' }} @@ -1547,15 +1931,17 @@ return ( </div> </Tabs> ) : ( - // ✅ 수정: 다이얼로그에서 뷰어만 있는 경우도 동일한 구조 - <div className="h-full flex flex-col"> + <div className="h-full w-full flex flex-col"> + <div className="flex-shrink-0 p-2"> + <SignatureFieldsStatus /> + </div> <div className="flex-1 min-h-0 overflow-hidden relative"> <div className="absolute inset-0"> <div className="w-full h-full overflow-auto"> - <div - ref={viewer} + <div + ref={viewer} className="w-full h-full min-h-[400px]" - style={{ + style={{ position: 'relative', overflow: 'visible' }} @@ -1573,133 +1959,120 @@ return ( </div> )} </div> + ); + } - <DialogFooter className="px-6 py-4 border-t bg-white flex-shrink-0"> - <Button variant="outline" onClick={handleClose} disabled={fileLoading}>취소</Button> - <Button onClick={handleSave} disabled={fileLoading || isAutoSignProcessing}> - <FileSignature className="h-4 w-4 mr-2" /> - 서명 완료 - </Button> - </DialogFooter> - </DialogContent> - </Dialog> -); - -// 다이얼로그 뷰어 렌더링 -return ( - <Dialog open={showDialog} onOpenChange={handleClose}> - <DialogContent className="w-[90vw] max-w-6xl h-[90vh] flex flex-col p-0"> - <DialogHeader className="px-6 py-4 border-b flex-shrink-0"> - <DialogTitle className="flex items-center justify-between"> - <span>기본계약서 서명</span> - <SignatureFieldsStatus /> - </DialogTitle> - <DialogDescription> - 계약서를 확인하고 서명을 진행해주세요. - {isComplianceTemplate && ( - <span className="block mt-1 text-amber-600">📋 준법 설문조사를 먼저 완료해주세요.</span> - )} - {isNDATemplate && additionalFiles.length > 0 && ( - <span className="block mt-1 text-blue-600">📎 첨부서류 {additionalFiles.length}개를 각 탭에서 확인해주세요.</span> - )} - {hasSignatureFields && ( - <span className="block mt-1 text-green-600"> - 🎯 서명 위치가 자동으로 감지되었습니다. - {signatureFields.some(f => f.includes('_text')) && ( - <span className="block text-sm text-amber-600"> - 💡 빨간색 텍스트로 표시된 영역을 찾아 서명해주세요. - </span> - )} - {signatureFields.some(f => f.startsWith('default_signature_')) && !signatureFields.some(f => f.includes('_text')) && ( - <span className="block text-sm text-amber-600"> - 💡 마지막 페이지 하단의 핑크색 영역에서 서명해주세요. - </span> - )} - </span> - )} - {autoSignError && ( - <span className="block mt-1 text-red-600">⚠️ 자동 서명 필드 생성 실패 - 수동으로 서명 위치를 클릭해주세요.</span> - )} - </DialogDescription> - </DialogHeader> - - <div className="flex-1 min-h-0 overflow-hidden"> - {allFiles.length > 1 ? ( - <Tabs value={activeTab} onValueChange={handleTabChange} className="h-full flex flex-col"> - <div className="border-b bg-gray-50 px-3 py-2 flex-shrink-0"> - <TabsList className="grid w-full h-8" style={{ gridTemplateColumns: `repeat(${allFiles.length}, 1fr)` }}> - {allFiles.map((file, index) => { - const tabId = index === 0 ? 'main' : file.type === 'survey' ? 'survey' : `file-${index}`; - return ( - <TabsTrigger key={tabId} value={tabId} className="text-xs"> - <div className="flex items-center space-x-1"> - {file.type === 'survey' ? <ClipboardList className="h-3 w-3" /> : <FileText className="h-3 w-3" />} - <span className="truncate">{file.name}</span> - {file.type === 'survey' && surveyData.completed && ( - <Badge variant="secondary" className="ml-1 h-4 px-1 text-xs">완료</Badge> - )} - </div> - </TabsTrigger> - ); - })} - </TabsList> - </div> - - <div className="flex-1 min-h-0 overflow-hidden relative"> - <div className={`absolute inset-0 p-3 ${activeTab === 'survey' ? 'block' : 'hidden'}`}> - <SurveyComponent /> + // 다이얼로그 뷰어 렌더링 + return ( + <Dialog open={showDialog} onOpenChange={handleClose}> + <DialogContent className="w-[90vw] max-w-6xl h-[90vh] flex flex-col p-0"> + <DialogHeader className="px-6 py-4 border-b flex-shrink-0"> + <DialogTitle className="flex items-center justify-between"> + <span>기본계약서 서명</span> + <SignatureFieldsStatus /> + </DialogTitle> + <DialogDescription> + 계약서를 확인하고 서명을 진행해주세요. + {isComplianceTemplate && ( + <span className="block mt-1 text-amber-600">📋 준법 설문조사를 먼저 완료해주세요.</span> + )} + {hasSignatureFields && ( + <span className="block mt-1 text-green-600"> + 🎯 서명 위치가 자동으로 감지되었습니다. + </span> + )} + {/* 🔥 서명 완료 상태 안내 */} + {hasValidSignature && ( + <span className="block mt-1 text-green-600"> + ✅ 서명이 완료되었습니다. + </span> + )} + </DialogDescription> + </DialogHeader> + + <div className="flex-1 min-h-0 overflow-hidden"> + {allFiles.length > 1 ? ( + <Tabs value={activeTab} onValueChange={handleTabChange} className="h-full flex flex-col"> + <div className="border-b bg-gray-50 px-3 py-2 flex-shrink-0"> + <TabsList className="grid w-full h-8" style={{ gridTemplateColumns: `repeat(${allFiles.length}, 1fr)` }}> + {allFiles.map((file, index) => { + const tabId = index === 0 ? 'main' : file.type === 'survey' ? 'survey' : `file-${index}`; + return ( + <TabsTrigger key={tabId} value={tabId} className="text-xs"> + <div className="flex items-center space-x-1"> + {file.type === 'survey' ? <ClipboardList className="h-3 w-3" /> : <FileText className="h-3 w-3" />} + <span className="truncate">{file.name}</span> + {file.type === 'survey' && surveyData.completed && ( + <Badge variant="secondary" className="ml-1 h-4 px-1 text-xs">완료</Badge> + )} + </div> + </TabsTrigger> + ); + })} + </TabsList> </div> - <div className={`absolute inset-0 ${activeTab !== 'survey' ? 'block' : 'hidden'}`}> - <div - ref={viewer} - className="w-full h-full" - style={{ position: 'relative', minHeight: '400px' }} - > - {fileLoading && ( - <div className="absolute inset-0 flex flex-col items-center justify-center bg-white z-10"> - <Loader2 className="h-8 w-8 text-blue-500 animate-spin mb-4" /> - <p className="text-sm text-muted-foreground">문서 로딩 중...</p> + <div className="flex-1 min-h-0 overflow-hidden relative"> + <div className={`absolute inset-0 p-3 ${activeTab === 'survey' ? 'block' : 'hidden'}`}> + <SurveyComponent /> + </div> + + <div className={`absolute inset-0 ${activeTab !== 'survey' ? 'block' : 'hidden'}`}> + <div className="w-full h-full overflow-auto"> + <div + ref={viewer} + className="w-full h-full min-h-[400px]" + style={{ + position: 'relative', + overflow: 'visible' + }} + > + {fileLoading && ( + <div className="absolute inset-0 flex flex-col items-center justify-center bg-white z-10"> + <Loader2 className="h-8 w-8 text-blue-500 animate-spin mb-4" /> + <p className="text-sm text-muted-foreground">문서 로딩 중...</p> + </div> + )} </div> - )} + </div> </div> </div> - </div> - </Tabs> - ) : ( - <div className="h-full relative"> - <div - ref={viewer} - className="absolute inset-0" - style={{ position: 'relative', minHeight: '400px' }} - > - {fileLoading && ( - <div className="absolute inset-0 flex flex-col items-center justify-center bg-white z-10"> - <Loader2 className="h-8 w-8 text-blue-500 animate-spin mb-4" /> - <p className="text-sm text-muted-foreground">문서 로딩 중...</p> + </Tabs> + ) : ( + <div className="h-full flex flex-col"> + <div className="flex-1 min-h-0 overflow-hidden relative"> + <div className="absolute inset-0"> + <div className="w-full h-full overflow-auto"> + <div + ref={viewer} + className="w-full h-full min-h-[400px]" + style={{ + position: 'relative', + overflow: 'visible' + }} + > + {fileLoading && ( + <div className="absolute inset-0 flex flex-col items-center justify-center bg-white z-10"> + <Loader2 className="h-8 w-8 text-blue-500 animate-spin mb-4" /> + <p className="text-sm text-muted-foreground">문서 로딩 중...</p> + </div> + )} + </div> + </div> </div> - )} + </div> </div> - </div> - )} - </div> - - <DialogFooter className="px-6 py-4 border-t bg-white flex-shrink-0"> - <Button variant="outline" onClick={handleClose} disabled={fileLoading}>취소</Button> - <Button onClick={handleSave} disabled={fileLoading || isAutoSignProcessing}> - <FileSignature className="h-4 w-4 mr-2" /> - 서명 완료 - </Button> - </DialogFooter> - </DialogContent> - </Dialog> -); -} + )} + </div> -// WebViewer 정리 함수 -const cleanupHtmlStyle = () => { -const elements = document.querySelectorAll('.Document_container'); -elements.forEach((elem) => { - elem.remove(); -}); -};
\ No newline at end of file + <DialogFooter className="px-6 py-4 border-t bg-white flex-shrink-0"> + <Button variant="outline" onClick={handleClose} disabled={fileLoading}>취소</Button> + <Button onClick={handleSave} disabled={fileLoading || isAutoSignProcessing}> + <FileSignature className="h-4 w-4 mr-2" /> + 서명 완료 + </Button> + </DialogFooter> + </DialogContent> + </Dialog> + ); +}
\ No newline at end of file diff --git a/lib/compliance/table/compliance-template-create-dialog.tsx b/lib/compliance/table/compliance-template-create-dialog.tsx index 4d16b0a1..5b7e1092 100644 --- a/lib/compliance/table/compliance-template-create-dialog.tsx +++ b/lib/compliance/table/compliance-template-create-dialog.tsx @@ -106,7 +106,7 @@ export function ComplianceTemplateCreateDialog() { <FormLabel>템플릿명 *</FormLabel> <FormControl> <Input - placeholder="예: ESG 준법 설문조사" + placeholder="예: 준법 설문조사" {...field} /> </FormControl> diff --git a/lib/dashboard/dashboard-client.tsx b/lib/dashboard/dashboard-client.tsx index 398a18f2..fef279e5 100644 --- a/lib/dashboard/dashboard-client.tsx +++ b/lib/dashboard/dashboard-client.tsx @@ -68,7 +68,7 @@ export function DashboardClient({ initialData }: DashboardClientProps) { <div className="flex items-center justify-between"> <div> <h2 className="text-2xl font-bold tracking-tight"> - {getDomainDisplayName(domain)} 대시보드 + {getDomainDisplayName(domain)} 대시보드 </h2> {/* <p className="text-muted-foreground"> {domain === "partners" diff --git a/lib/items-tech/service.ts b/lib/items-tech/service.ts index e0896144..59aa7c6e 100644 --- a/lib/items-tech/service.ts +++ b/lib/items-tech/service.ts @@ -1460,6 +1460,102 @@ export async function getShipTypes() { }
}
+/**
+ * 조선 아이템에서 IM으로 시작하는 최대 itemCode 번호 조회
+ */
+export async function getMaxShipbuildingIMCode(): Promise<number> {
+ unstable_noStore();
+
+ try {
+ const result = await db
+ .select({ itemCode: itemShipbuilding.itemCode })
+ .from(itemShipbuilding)
+ .where(sql`${itemShipbuilding.itemCode} LIKE 'IM%'`)
+ .orderBy(desc(itemShipbuilding.itemCode))
+ .limit(1);
+
+ if (result.length === 0) {
+ return 0; // IM 코드가 없으면 0부터 시작
+ }
+
+ const lastCode = result[0].itemCode;
+ const match = lastCode?.match(/^IM(\d+)$/);
+
+ if (match) {
+ return parseInt(match[1], 10);
+ }
+
+ return 0;
+ } catch (err) {
+ console.error("조선 IM 코드 조회 오류:", err);
+ return 0;
+ }
+}
+
+/**
+ * 해양 TOP 아이템에서 IM으로 시작하는 최대 itemCode 번호 조회
+ */
+export async function getMaxOffshoreTopIMCode(): Promise<number> {
+ unstable_noStore();
+
+ try {
+ const result = await db
+ .select({ itemCode: itemOffshoreTop.itemCode })
+ .from(itemOffshoreTop)
+ .where(sql`${itemOffshoreTop.itemCode} LIKE 'IM%'`)
+ .orderBy(desc(itemOffshoreTop.itemCode))
+ .limit(1);
+
+ if (result.length === 0) {
+ return 0; // IM 코드가 없으면 0부터 시작
+ }
+
+ const lastCode = result[0].itemCode;
+ const match = lastCode?.match(/^IM(\d+)$/);
+
+ if (match) {
+ return parseInt(match[1], 10);
+ }
+
+ return 0;
+ } catch (err) {
+ console.error("해양 TOP IM 코드 조회 오류:", err);
+ return 0;
+ }
+}
+
+/**
+ * 해양 HULL 아이템에서 IM으로 시작하는 최대 itemCode 번호 조회
+ */
+export async function getMaxOffshoreHullIMCode(): Promise<number> {
+ unstable_noStore();
+
+ try {
+ const result = await db
+ .select({ itemCode: itemOffshoreHull.itemCode })
+ .from(itemOffshoreHull)
+ .where(sql`${itemOffshoreHull.itemCode} LIKE 'IM%'`)
+ .orderBy(desc(itemOffshoreHull.itemCode))
+ .limit(1);
+
+ if (result.length === 0) {
+ return 0; // IM 코드가 없으면 0부터 시작
+ }
+
+ const lastCode = result[0].itemCode;
+ const match = lastCode?.match(/^IM(\d+)$/);
+
+ if (match) {
+ return parseInt(match[1], 10);
+ }
+
+ return 0;
+ } catch (err) {
+ console.error("해양 HULL IM 코드 조회 오류:", err);
+ return 0;
+ }
+}
+
// -----------------------------------------------------------
// 기술영업을 위한 로직 끝
// -----------------------------------------------------------
\ No newline at end of file diff --git a/lib/items-tech/table/hull/import-item-handler.tsx b/lib/items-tech/table/hull/import-item-handler.tsx index 9090dab1..90ff47ae 100644 --- a/lib/items-tech/table/hull/import-item-handler.tsx +++ b/lib/items-tech/table/hull/import-item-handler.tsx @@ -1,7 +1,8 @@ "use client"
import { z } from "zod"
-import { createOffshoreHullItem } from "../../service"
+import { createOffshoreHullItem, getMaxOffshoreHullIMCode } from "../../service"
+import { splitItemCodes, createErrorExcelFile, ExtendedProcessResult, processEmptyItemCodes } from "../../utils/import-utils"
// 해양 HULL 기능(공종) 유형 enum
const HULL_WORK_TYPES = ["HA", "HE", "HH", "HM", "HO", "HP", "NC"] as const;
@@ -16,23 +17,25 @@ const itemSchema = z.object({ subItemList: z.string().nullable().optional(),
});
-interface ProcessResult {
- successCount: number;
- errorCount: number;
- errors: Array<{ row: number; message: string }>;
-}
-
/**
* Excel 파일에서 가져온 해양 HULL 아이템 데이터 처리하는 함수
*/
export async function processHullFileImport(
jsonData: Record<string, unknown>[],
progressCallback?: (current: number, total: number) => void
-): Promise<ProcessResult> {
+): Promise<ExtendedProcessResult> {
// 결과 카운터 초기화
let successCount = 0;
let errorCount = 0;
- const errors: Array<{ row: number; message: string }> = [];
+ const errors: Array<{
+ row: number;
+ message: string;
+ itemCode?: string;
+ workType?: string;
+ originalData?: Record<string, any>;
+ }> = [];
+ const processedItemCodes: string[] = [];
+ const duplicateItemCodes: string[] = [];
// 빈 행 등 필터링
const dataRows = jsonData.filter(row => {
@@ -45,9 +48,19 @@ export async function processHullFileImport( // 데이터 행이 없으면 빈 결과 반환
if (dataRows.length === 0) {
- return { successCount: 0, errorCount: 0, errors: [] };
+ return {
+ successCount: 0,
+ errorCount: 0,
+ errors: [],
+ processedItemCodes: [],
+ duplicateItemCodes: []
+ };
}
+ // 기존 IM 코드의 최대 번호 조회
+ const maxIMCode = await getMaxOffshoreHullIMCode();
+ let nextIMNumber = maxIMCode + 1;
+
// 각 행에 대해 처리
for (let i = 0; i < dataRows.length; i++) {
const row = dataRows[i];
@@ -81,33 +94,76 @@ export async function processHullFileImport( err => `${err.path.join('.')}: ${err.message}`
).join(', ');
- errors.push({ row: rowIndex, message: errorMessage });
+ errors.push({
+ row: rowIndex,
+ message: errorMessage,
+ originalData: cleanedRow
+ });
errorCount++;
continue;
}
- // 해양 HULL 아이템 생성
- const result = await createOffshoreHullItem({
- itemCode: cleanedRow.itemCode,
- workType: cleanedRow.workType as "HA" | "HE" | "HH" | "HM" | "HO" | "HP" | "NC",
- itemList: cleanedRow.itemList,
- subItemList: cleanedRow.subItemList,
- });
+ // itemCode 분할 처리
+ const rawItemCodes = splitItemCodes(cleanedRow.itemCode);
- if (result.success) {
- successCount++;
- } else {
- errors.push({
- row: rowIndex,
- message: result.message || result.error || "알 수 없는 오류"
- });
- errorCount++;
+ // 빈 itemCode 처리 (임시 코드 생성)
+ const { codes: itemCodes, nextNumber } = processEmptyItemCodes(rawItemCodes, nextIMNumber);
+ nextIMNumber = nextNumber;
+
+ // 각 itemCode에 대해 개별 처리
+ let rowSuccessCount = 0;
+ let rowErrorCount = 0;
+
+ for (const singleItemCode of itemCodes) {
+ try {
+ // 해양 HULL 아이템 생성
+ const result = await createOffshoreHullItem({
+ itemCode: singleItemCode,
+ workType: cleanedRow.workType as "HA" | "HE" | "HH" | "HM" | "HO" | "HP" | "NC",
+ itemList: cleanedRow.itemList,
+ subItemList: cleanedRow.subItemList,
+ });
+
+ if (result.success) {
+ rowSuccessCount++;
+ processedItemCodes.push(singleItemCode);
+ } else {
+ rowErrorCount++;
+ if (result.message?.includes('중복') || result.error?.includes('중복')) {
+ duplicateItemCodes.push(singleItemCode);
+ }
+
+ errors.push({
+ row: rowIndex,
+ message: `${singleItemCode}: ${result.message || result.error || "알 수 없는 오류"}`,
+ itemCode: singleItemCode,
+ workType: cleanedRow.workType,
+ originalData: cleanedRow
+ });
+ }
+ } catch (error) {
+ rowErrorCount++;
+ console.error(`${rowIndex}행 ${singleItemCode} 처리 오류:`, error);
+ errors.push({
+ row: rowIndex,
+ message: `${singleItemCode}: ${error instanceof Error ? error.message : "알 수 없는 오류"}`,
+ itemCode: singleItemCode,
+ workType: cleanedRow.workType,
+ originalData: cleanedRow
+ });
+ }
}
+
+ // 행별 성공/실패 카운트 업데이트
+ successCount += rowSuccessCount;
+ errorCount += rowErrorCount;
+
} catch (error) {
console.error(`${rowIndex}행 처리 오류:`, error);
errors.push({
row: rowIndex,
- message: error instanceof Error ? error.message : "알 수 없는 오류"
+ message: error instanceof Error ? error.message : "알 수 없는 오류",
+ originalData: row as Record<string, any>
});
errorCount++;
}
@@ -118,10 +174,17 @@ export async function processHullFileImport( }
}
+ // 에러가 있으면 Excel 파일 생성
+ if (errors.length > 0) {
+ await createErrorExcelFile(errors, 'hull');
+ }
+
// 처리 결과 반환
return {
successCount,
errorCount,
- errors: errors.length > 0 ? errors : []
+ errors,
+ processedItemCodes,
+ duplicateItemCodes
};
}
diff --git a/lib/items-tech/table/import-excel-button.tsx b/lib/items-tech/table/import-excel-button.tsx index f8ba9f6d..c0c37b75 100644 --- a/lib/items-tech/table/import-excel-button.tsx +++ b/lib/items-tech/table/import-excel-button.tsx @@ -19,7 +19,7 @@ import { processFileImport } from "./ship/import-item-handler" import { processTopFileImport } from "./top/import-item-handler"
import { processHullFileImport } from "./hull/import-item-handler"
import { decryptWithServerAction } from "@/components/drm/drmUtils"
-
+import { ExtendedProcessResult } from "../utils/import-utils"
// 선박 아이템 타입
type ItemType = "ship" | "top" | "hull";
@@ -58,7 +58,6 @@ export function ImportItemButton({ itemType, onSuccess }: ImportItemButtonProps) setError(null);
};
-
// 데이터 가져오기 처리
const handleImport = async () => {
if (!file) {
@@ -84,6 +83,7 @@ export function ImportItemButton({ itemType, onSuccess }: ImportItemButtonProps) // 복호화 실패 시 원본 파일 사용
arrayBuffer = await file.arrayBuffer();
}
+
// ExcelJS 워크북 로드
const workbook = new ExcelJS.Workbook();
await workbook.xlsx.load(arrayBuffer);
@@ -93,12 +93,12 @@ export function ImportItemButton({ itemType, onSuccess }: ImportItemButtonProps) if (!worksheet) {
throw new Error("Excel 파일에 워크시트가 없습니다.");
}
+
// 헤더 행 찾기
let headerRowIndex = 1;
let headerRow: ExcelJS.Row | undefined;
let headerValues: (string | null)[] = [];
-
worksheet.eachRow((row, rowNumber) => {
const values = row.values as (string | null)[];
if (!headerRow && values.some(v => v === "자재 그룹" || v === "자재 코드" || v === "itemCode" || v === "item_code")) {
@@ -172,7 +172,7 @@ export function ImportItemButton({ itemType, onSuccess }: ImportItemButtonProps) };
// 선택된 타입에 따라 적절한 프로세스 함수 호출
- let result: { successCount: number; errorCount: number; errors?: Array<{ row: number; message: string }> };
+ let result: ExtendedProcessResult;
if (itemType === "top") {
result = await processTopFileImport(dataRows, updateProgress);
} else if (itemType === "hull") {
@@ -181,15 +181,26 @@ export function ImportItemButton({ itemType, onSuccess }: ImportItemButtonProps) result = await processFileImport(dataRows, updateProgress);
}
- toast.success(`${result.successCount}개의 ${ITEM_TYPE_NAMES[itemType]}이(가) 성공적으로 가져와졌습니다.`);
+ // 성공 메시지 표시
+ const successMessage = `${result.successCount}개의 ${ITEM_TYPE_NAMES[itemType]}이(가) 성공적으로 가져와졌습니다.`;
+ if (result.processedItemCodes.length > 0) {
+ toast.success(successMessage);
+ }
+ // 에러 처리 및 상세 정보 표시
if (result.errorCount > 0) {
- const errorDetails = result.errors?.map((error: { row: number; message: string; itemCode?: string; workType?: string }) =>
+ const errorDetails = result.errors?.map((error) =>
`행 ${error.row}: ${error.itemCode || '알 수 없음'} (${error.workType || '알 수 없음'}) - ${error.message}`
).join('\n') || '오류 정보를 가져올 수 없습니다.';
console.error('Import 오류 상세:', errorDetails);
- toast.error(`${result.errorCount}개의 항목 처리 실패. 콘솔에서 상세 내용을 확인하세요.`);
+
+ // 중복된 아이템코드가 있는 경우 별도 메시지
+ if (result.duplicateItemCodes.length > 0) {
+ toast.error(`${result.duplicateItemCodes.length}개의 중복 아이템코드가 발견되었습니다. 오류 Excel 파일을 확인하세요.`);
+ } else {
+ toast.error(`${result.errorCount}개의 항목 처리 실패. 오류 Excel 파일을 확인하세요.`);
+ }
}
// 상태 초기화 및 다이얼로그 닫기
@@ -208,8 +219,6 @@ export function ImportItemButton({ itemType, onSuccess }: ImportItemButtonProps) }
};
-
-
// 다이얼로그 열기/닫기 핸들러
const handleOpenChange = (newOpen: boolean) => {
if (!newOpen) {
@@ -245,6 +254,10 @@ export function ImportItemButton({ itemType, onSuccess }: ImportItemButtonProps) {ITEM_TYPE_NAMES[itemType]}을 Excel 파일에서 가져옵니다.
<br />
올바른 형식의 Excel 파일(.xlsx)을 업로드하세요.
+ <br />
+ <strong>참고:</strong> 아이템코드는 공백이나 콤마로 구분하여 여러 개를 입력할 수 있습니다.
+ <br />
+ <strong>자동 코드 생성:</strong> 아이템코드가 비어있으면 IM0001부터 자동으로 생성됩니다.
</DialogDescription>
</DialogHeader>
diff --git a/lib/items-tech/table/ship/import-item-handler.tsx b/lib/items-tech/table/ship/import-item-handler.tsx index b0f475ff..e95d1987 100644 --- a/lib/items-tech/table/ship/import-item-handler.tsx +++ b/lib/items-tech/table/ship/import-item-handler.tsx @@ -1,7 +1,8 @@ "use client"
import { z } from "zod"
-import { createShipbuildingImportItem } from "../../service" // 아이템 생성 서버 액션
+import { createShipbuildingImportItem, getMaxShipbuildingIMCode } from "../../service" // 아이템 생성 서버 액션
+import { splitItemCodes, createErrorExcelFile, ExtendedProcessResult, processEmptyItemCodes } from "../../utils/import-utils"
// 아이템 데이터 검증을 위한 Zod 스키마
const itemSchema = z.object({
@@ -13,23 +14,25 @@ const itemSchema = z.object({ itemList: z.string().nullable().optional(),
});
-interface ProcessResult {
- successCount: number;
- errorCount: number;
- errors: Array<{ row: number; message: string }>;
-}
-
/**
* Excel 파일에서 가져온 조선 아이템 데이터 처리하는 함수
*/
export async function processFileImport(
jsonData: Record<string, unknown>[],
progressCallback?: (current: number, total: number) => void
-): Promise<ProcessResult> {
+): Promise<ExtendedProcessResult> {
// 결과 카운터 초기화
let successCount = 0;
let errorCount = 0;
- const errors: Array<{ row: number; message: string }> = [];
+ const errors: Array<{
+ row: number;
+ message: string;
+ itemCode?: string;
+ workType?: string;
+ originalData?: Record<string, any>;
+ }> = [];
+ const processedItemCodes: string[] = [];
+ const duplicateItemCodes: string[] = [];
// 빈 행 등 필터링
const dataRows = jsonData.filter(row => {
@@ -42,9 +45,19 @@ export async function processFileImport( // 데이터 행이 없으면 빈 결과 반환
if (dataRows.length === 0) {
- return { successCount: 0, errorCount: 0, errors: [] };
+ return {
+ successCount: 0,
+ errorCount: 0,
+ errors: [],
+ processedItemCodes: [],
+ duplicateItemCodes: []
+ };
}
+ // 기존 IM 코드의 최대 번호 조회
+ const maxIMCode = await getMaxShipbuildingIMCode();
+ let nextIMNumber = maxIMCode + 1;
+
// 각 행에 대해 처리
for (let i = 0; i < dataRows.length; i++) {
const row = dataRows[i];
@@ -81,35 +94,73 @@ export async function processFileImport( errors.push({
row: rowIndex,
message: errorMessage,
+ originalData: cleanedRow
});
errorCount++;
continue;
}
+
+ // itemCode 분할 처리
+ const rawItemCodes = splitItemCodes(cleanedRow.itemCode);
- // 아이템 생성
- const result = await createShipbuildingImportItem({
- itemCode: cleanedRow.itemCode,
- workType: cleanedRow.workType as "기장" | "전장" | "선실" | "배관" | "철의" | "선체",
- shipTypes: cleanedRow.shipTypes,
- itemList: cleanedRow.itemList,
- });
+ // 빈 itemCode 처리 (임시 코드 생성)
+ const { codes: itemCodes, nextNumber } = processEmptyItemCodes(rawItemCodes, nextIMNumber);
+ nextIMNumber = nextNumber;
+
+ // 각 itemCode에 대해 개별 처리
+ let rowSuccessCount = 0;
+ let rowErrorCount = 0;
- if (result.success || !result.error) {
- successCount++;
- } else {
- errors.push({
- row: rowIndex,
- message: result.message || result.error || "알 수 없는 오류",
- });
- errorCount++;
+ for (const singleItemCode of itemCodes) {
+ try {
+ // 아이템 생성
+ const result = await createShipbuildingImportItem({
+ itemCode: singleItemCode,
+ workType: cleanedRow.workType as "기장" | "전장" | "선실" | "배관" | "철의" | "선체",
+ shipTypes: cleanedRow.shipTypes,
+ itemList: cleanedRow.itemList,
+ });
+
+ if (result.success || !result.error) {
+ rowSuccessCount++;
+ processedItemCodes.push(singleItemCode);
+ } else {
+ rowErrorCount++;
+ if (result.message?.includes('중복') || result.error?.includes('중복')) {
+ duplicateItemCodes.push(singleItemCode);
+ }
+
+ errors.push({
+ row: rowIndex,
+ message: `${singleItemCode}: ${result.message || result.error || "알 수 없는 오류"}`,
+ itemCode: singleItemCode,
+ workType: cleanedRow.workType,
+ originalData: cleanedRow
+ });
+ }
+ } catch (error) {
+ rowErrorCount++;
+ console.error(`${rowIndex}행 ${singleItemCode} 처리 오류:`, error);
+ errors.push({
+ row: rowIndex,
+ message: `${singleItemCode}: ${error instanceof Error ? error.message : "알 수 없는 오류"}`,
+ itemCode: singleItemCode,
+ workType: cleanedRow.workType,
+ originalData: cleanedRow
+ });
+ }
}
+ // 행별 성공/실패 카운트 업데이트
+ successCount += rowSuccessCount;
+ errorCount += rowErrorCount;
+
} catch (error) {
console.error(`${rowIndex}행 처리 오류:`, error);
-
errors.push({
row: rowIndex,
message: error instanceof Error ? error.message : "알 수 없는 오류",
+ originalData: row as Record<string, any>
});
errorCount++;
}
@@ -120,10 +171,17 @@ export async function processFileImport( }
}
+ // 에러가 있으면 Excel 파일 생성
+ if (errors.length > 0) {
+ await createErrorExcelFile(errors, 'ship');
+ }
+
// 처리 결과 반환
return {
successCount,
errorCount,
- errors
+ errors,
+ processedItemCodes,
+ duplicateItemCodes
};
}
\ No newline at end of file diff --git a/lib/items-tech/table/top/import-item-handler.tsx b/lib/items-tech/table/top/import-item-handler.tsx index 0197d826..19a2e29a 100644 --- a/lib/items-tech/table/top/import-item-handler.tsx +++ b/lib/items-tech/table/top/import-item-handler.tsx @@ -1,7 +1,8 @@ "use client"
import { z } from "zod"
-import { createOffshoreTopItem } from "../../service"
+import { createOffshoreTopItem, getMaxOffshoreTopIMCode } from "../../service"
+import { splitItemCodes, createErrorExcelFile, ExtendedProcessResult, processEmptyItemCodes } from "../../utils/import-utils"
// 해양 TOP 기능(공종) 유형 enum
const TOP_WORK_TYPES = ["TM", "TS", "TE", "TP", "TA"] as const;
@@ -16,23 +17,25 @@ const itemSchema = z.object({ subItemList: z.string().nullable().optional(),
});
-interface ProcessResult {
- successCount: number;
- errorCount: number;
- errors: Array<{ row: number; message: string }>;
-}
-
/**
* Excel 파일에서 가져온 해양 TOP 아이템 데이터 처리하는 함수
*/
export async function processTopFileImport(
jsonData: Record<string, unknown>[],
progressCallback?: (current: number, total: number) => void
-): Promise<ProcessResult> {
+): Promise<ExtendedProcessResult> {
// 결과 카운터 초기화
let successCount = 0;
let errorCount = 0;
- const errors: Array<{ row: number; message: string }> = [];
+ const errors: Array<{
+ row: number;
+ message: string;
+ itemCode?: string;
+ workType?: string;
+ originalData?: Record<string, any>;
+ }> = [];
+ const processedItemCodes: string[] = [];
+ const duplicateItemCodes: string[] = [];
// 빈 행 등 필터링
const dataRows = jsonData.filter(row => {
@@ -45,9 +48,19 @@ export async function processTopFileImport( // 데이터 행이 없으면 빈 결과 반환
if (dataRows.length === 0) {
- return { successCount: 0, errorCount: 0, errors: [] };
+ return {
+ successCount: 0,
+ errorCount: 0,
+ errors: [],
+ processedItemCodes: [],
+ duplicateItemCodes: []
+ };
}
+ // 기존 IM 코드의 최대 번호 조회
+ const maxIMCode = await getMaxOffshoreTopIMCode();
+ let nextIMNumber = maxIMCode + 1;
+
// 각 행에 대해 처리
for (let i = 0; i < dataRows.length; i++) {
const row = dataRows[i];
@@ -84,33 +97,73 @@ export async function processTopFileImport( errors.push({
row: rowIndex,
message: errorMessage,
+ originalData: cleanedRow
});
errorCount++;
continue;
}
- // 해양 TOP 아이템 생성
- const result = await createOffshoreTopItem({
- itemCode: cleanedRow.itemCode,
- workType: cleanedRow.workType as "TM" | "TS" | "TE" | "TP" | "TA",
- itemList: cleanedRow.itemList,
- subItemList: cleanedRow.subItemList,
- });
+ // itemCode 분할 처리
+ const rawItemCodes = splitItemCodes(cleanedRow.itemCode);
- if (result.success) {
- successCount++;
- } else {
- errors.push({
- row: rowIndex,
- message: result.message || result.error || "알 수 없는 오류",
- });
- errorCount++;
+ // 빈 itemCode 처리 (임시 코드 생성)
+ const { codes: itemCodes, nextNumber } = processEmptyItemCodes(rawItemCodes, nextIMNumber);
+ nextIMNumber = nextNumber;
+
+ // 각 itemCode에 대해 개별 처리
+ let rowSuccessCount = 0;
+ let rowErrorCount = 0;
+
+ for (const singleItemCode of itemCodes) {
+ try {
+ // 해양 TOP 아이템 생성
+ const result = await createOffshoreTopItem({
+ itemCode: singleItemCode,
+ workType: cleanedRow.workType as "TM" | "TS" | "TE" | "TP" | "TA",
+ itemList: cleanedRow.itemList,
+ subItemList: cleanedRow.subItemList,
+ });
+
+ if (result.success) {
+ rowSuccessCount++;
+ processedItemCodes.push(singleItemCode);
+ } else {
+ rowErrorCount++;
+ if (result.message?.includes('중복') || result.error?.includes('중복')) {
+ duplicateItemCodes.push(singleItemCode);
+ }
+
+ errors.push({
+ row: rowIndex,
+ message: `${singleItemCode}: ${result.message || result.error || "알 수 없는 오류"}`,
+ itemCode: singleItemCode,
+ workType: cleanedRow.workType,
+ originalData: cleanedRow
+ });
+ }
+ } catch (error) {
+ rowErrorCount++;
+ console.error(`${rowIndex}행 ${singleItemCode} 처리 오류:`, error);
+ errors.push({
+ row: rowIndex,
+ message: `${singleItemCode}: ${error instanceof Error ? error.message : "알 수 없는 오류"}`,
+ itemCode: singleItemCode,
+ workType: cleanedRow.workType,
+ originalData: cleanedRow
+ });
+ }
}
+
+ // 행별 성공/실패 카운트 업데이트
+ successCount += rowSuccessCount;
+ errorCount += rowErrorCount;
+
} catch (error) {
console.error(`${rowIndex}행 처리 오류:`, error);
errors.push({
row: rowIndex,
message: error instanceof Error ? error.message : "알 수 없는 오류",
+ originalData: row as Record<string, any>
});
errorCount++;
}
@@ -121,10 +174,17 @@ export async function processTopFileImport( }
}
+ // 에러가 있으면 Excel 파일 생성
+ if (errors.length > 0) {
+ await createErrorExcelFile(errors, 'top');
+ }
+
// 처리 결과 반환
return {
successCount,
errorCount,
- errors
+ errors,
+ processedItemCodes,
+ duplicateItemCodes
};
}
diff --git a/lib/items-tech/utils/import-utils.ts b/lib/items-tech/utils/import-utils.ts new file mode 100644 index 00000000..e8a0d7a5 --- /dev/null +++ b/lib/items-tech/utils/import-utils.ts @@ -0,0 +1,240 @@ +import * as ExcelJS from 'exceljs'; +import { saveAs } from 'file-saver'; + +/** + * itemCode 문자열을 분할하여 배열로 반환 + * 공백이나 콤마로 구분된 여러 itemCode를 처리 + * 빈 itemCode의 경우 빈 문자열 하나를 포함한 배열 반환 + */ +export function splitItemCodes(itemCode: string): string[] { + if (!itemCode || typeof itemCode !== 'string') { + return [""]; // 빈 itemCode의 경우 빈 문자열 하나 반환 + } + + const trimmedCode = itemCode.trim(); + if (trimmedCode === '') { + return [""]; // 공백만 있는 경우도 빈 문자열 하나 반환 + } + + // 공백과 콤마로 분할하고, trim 처리 (빈 문자열도 유지) + return trimmedCode + .split(/[\s,]+/) + .map(code => code.trim()); +} + +/** + * 임시 IM 코드 생성 (4자리 숫자 형식) + */ +export function generateTempIMCode(startNumber: number): string { + return `IM${startNumber.toString().padStart(4, '0')}`; +} + +/** + * itemCode가 비어있거나 유효하지 않을 때 임시 코드 생성 + * @param itemCodes 분할된 itemCode 배열 + * @param startNumber 시작 번호 + * @returns 처리된 itemCode 배열 + */ +export function processEmptyItemCodes(itemCodes: string[], startNumber: number): { codes: string[], nextNumber: number } { + const processedCodes: string[] = []; + let currentNumber = startNumber; + + for (const code of itemCodes) { + if (!code || code.trim() === '') { + // 빈 코드인 경우 임시 코드 생성 + processedCodes.push(generateTempIMCode(currentNumber)); + currentNumber++; + } else { + // 유효한 코드인 경우 그대로 사용 + processedCodes.push(code); + } + } + + return { + codes: processedCodes, + nextNumber: currentNumber + }; +} + +/** + * 에러 정보를 포함한 Excel 파일 생성 및 다운로드 + */ +export async function createErrorExcelFile( + errors: Array<{ + row: number; + message: string; + itemCode?: string; + workType?: string; + originalData?: Record<string, any>; + }>, + itemType: 'top' | 'hull' | 'ship' +): Promise<string> { + try { + const workbook = new ExcelJS.Workbook(); + + // 에러 시트 생성 + const errorSheet = workbook.addWorksheet('Import 오류 목록'); + + // 헤더 설정 + const headers = [ + '행 번호', + '아이템코드', + '기능(공종)', + '자재명', + '자재명(상세)', + '선종', // 조선 아이템의 경우 + '오류 내용', + '해결 방법' + ]; + + errorSheet.addRow(headers); + + // 헤더 스타일 + const headerRow = errorSheet.getRow(1); + headerRow.eachCell((cell) => { + cell.fill = { + type: 'pattern', + pattern: 'solid', + fgColor: { argb: 'FFFF6B6B' } + }; + cell.font = { + bold: true, + color: { argb: 'FFFFFFFF' } + }; + cell.border = { + top: { style: 'thin' }, + left: { style: 'thin' }, + bottom: { style: 'thin' }, + right: { style: 'thin' } + }; + }); + + // 에러 데이터 추가 + errors.forEach((error) => { + const originalData = error.originalData || {}; + const errorRow = errorSheet.addRow([ + error.row, + error.itemCode || originalData.itemCode || '', + error.workType || originalData.workType || '', + originalData.itemList || '', + originalData.subItemList || '', + originalData.shipTypes || '', // 조선 아이템의 경우 + error.message, + getSolutionMessage(error.message) + ]); + + // 에러 행 스타일 + errorRow.eachCell((cell, colNumber) => { + if (colNumber === 7) { // 오류 내용 컬럼 + cell.fill = { + type: 'pattern', + pattern: 'solid', + fgColor: { argb: 'FFFFE0E0' } + }; + } + cell.border = { + top: { style: 'thin' }, + left: { style: 'thin' }, + bottom: { style: 'thin' }, + right: { style: 'thin' } + }; + }); + }); + + // 안내 시트 생성 + const instructionSheet = workbook.addWorksheet('오류 해결 가이드'); + + const instructions = [ + ['📌 오류 해결 방법 안내', ''], + ['', ''], + ['🔍 중복 아이템코드 오류', ''], + ['• 원인: 이미 존재하는 아이템코드입니다.', ''], + ['• 해결: 다른 아이템코드를 사용하거나 기존 아이템을 수정하세요.', ''], + ['', ''], + ['🔍 필수 필드 누락 오류', ''], + ['• 원인: 기능(공종) 등 필수 필드가 비어있습니다.', ''], + ['• 해결: 모든 필수 필드를 입력하세요.', ''], + ['', ''], + ['🔍 데이터 형식 오류', ''], + ['• 원인: 데이터 형식이 올바르지 않습니다.', ''], + ['• 해결: 올바른 형식으로 데이터를 입력하세요.', ''], + ['', ''], + ['📞 추가 문의: 시스템 관리자', ''] + ]; + + instructions.forEach((rowData, index) => { + const row = instructionSheet.addRow(rowData); + if (index === 0) { + row.getCell(1).font = { bold: true, size: 14, color: { argb: 'FF1F4E79' } }; + } else if (rowData[0]?.includes('📌') || rowData[0]?.includes('🔍')) { + row.getCell(1).font = { bold: true, color: { argb: 'FF1F4E79' } }; + } else if (rowData[0]?.includes(':')) { + row.getCell(1).font = { bold: true, color: { argb: 'FF1F4E79' } }; + } + }); + + instructionSheet.getColumn(1).width = 60; + + // 기본 컬럼 너비 설정 + errorSheet.getColumn(1).width = 10; // 행 번호 + errorSheet.getColumn(2).width = 20; // 아이템코드 + errorSheet.getColumn(3).width = 15; // 기능(공종) + errorSheet.getColumn(4).width = 30; // 자재명 + errorSheet.getColumn(5).width = 30; // 자재명(상세) + errorSheet.getColumn(6).width = 20; // 선종 + errorSheet.getColumn(7).width = 60; // 오류 내용 + errorSheet.getColumn(8).width = 40; // 해결 방법 + + // 파일 생성 및 다운로드 + const buffer = await workbook.xlsx.writeBuffer(); + const blob = new Blob([buffer], { + type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" + }); + + const itemTypeNames = { + top: '해양TOP', + hull: '해양HULL', + ship: '조선' + }; + + const fileName = `${itemTypeNames[itemType]}_Import_오류_${new Date().toISOString().split('T')[0]}_${Date.now()}.xlsx`; + saveAs(blob, fileName); + + return fileName; + } catch (error) { + console.error("오류 파일 생성 중 오류:", error); + return ''; + } +} + +/** + * 오류 메시지에 따른 해결 방법 반환 + */ +function getSolutionMessage(errorMessage: string): string { + if (errorMessage.includes('중복')) { + return '다른 아이템코드를 사용하거나 기존 아이템을 수정하세요.'; + } else if (errorMessage.includes('필수')) { + return '모든 필수 필드를 입력하세요.'; + } else if (errorMessage.includes('형식')) { + return '올바른 형식으로 데이터를 입력하세요.'; + } else { + return '데이터를 확인하고 다시 시도하세요.'; + } +} + +/** + * 확장된 ProcessResult 인터페이스 + */ +export interface ExtendedProcessResult { + successCount: number; + errorCount: number; + errors: Array<{ + row: number; + message: string; + itemCode?: string; + workType?: string; + originalData?: Record<string, any>; + }>; + processedItemCodes: string[]; // 성공적으로 처리된 아이템코드들 + duplicateItemCodes: string[]; // 중복된 아이템코드들 +} diff --git a/lib/site-visit/client-site-visit-wrapper.tsx b/lib/site-visit/client-site-visit-wrapper.tsx index b92eda3b..c93060b3 100644 --- a/lib/site-visit/client-site-visit-wrapper.tsx +++ b/lib/site-visit/client-site-visit-wrapper.tsx @@ -366,8 +366,20 @@ export function ClientSiteVisitWrapper({ </TableCell>
<TableCell>
{request.result ? (
- <Badge variant={request.result === "APPROVED" ? "default" : "destructive"}>
- {request.result === "APPROVED" ? "통과" : "불가"}
+ <Badge
+ variant={
+ request.result === "APPROVED"
+ ? "default"
+ : request.result === "SUPPLEMENT"
+ ? "secondary"
+ : "destructive"
+ }
+ >
+ {request.result === "APPROVED"
+ ? "통과"
+ : request.result === "SUPPLEMENT"
+ ? "보완"
+ : "불가"}
</Badge>
) : "-"}
</TableCell>
diff --git a/lib/soap/mdg/send/vendor-master/action.ts b/lib/soap/mdg/send/vendor-master/action.ts index a7b4d8a4..8bb2f633 100644 --- a/lib/soap/mdg/send/vendor-master/action.ts +++ b/lib/soap/mdg/send/vendor-master/action.ts @@ -1,7 +1,7 @@ 'use server' import db from "@/db/db"; -import { +import { VENDOR_MASTER_BP_HEADER, VENDOR_MASTER_BP_HEADER_ADDRESS, VENDOR_MASTER_BP_HEADER_ADDRESS_AD_EMAIL, @@ -17,7 +17,7 @@ import { VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_PORG_ZVPFN } from "@/db/schema/MDG/mdg"; import { eq, sql, desc } from "drizzle-orm"; -import { withSoapLogging } from "@/lib/soap/utils"; +import { withSoapLogging } from "../../../utils"; import { XMLBuilder } from 'fast-xml-parser'; import { CSV_FIELDS } from './csv-fields'; @@ -34,7 +34,7 @@ const MDG_ENDPOINT_URL = "http://shii8dvddb01.hec.serp.shi.samsung.net:50000/sap function generateSAPXICompatibleXML(supplierMaster: Record<string, string>): string { // XML 선언을 별도로 처리 const xmlDeclaration = '<?xml version="1.0" encoding="UTF-8"?>\n'; - + // SOAP Envelope 구조 정의 const soapEnvelope = { 'soap:Envelope': { @@ -62,14 +62,14 @@ function generateSAPXICompatibleXML(supplierMaster: Record<string, string>): str tagValueProcessor: (name, val) => val, // 값 처리기 attributeValueProcessor: (name, val) => val // 속성 처리기 }); - + const xmlBody = builder.build(soapEnvelope); - + // XML 선언과 Body 결합 const completeXML = xmlDeclaration + xmlBody; - + console.log('🔍 생성된 XML (전체):', completeXML); - + return completeXML; } @@ -100,10 +100,10 @@ async function sendXMLToMDG(xmlData: string): Promise<{ } else { console.warn('⚠️ MDG SOAP 인증 정보가 환경변수에 설정되지 않았습니다.'); } - + console.log('📤 MDG 전송 시작'); console.log('🔍 전송 XML (첫 500자):', xmlData.substring(0, 500)); - + const res = await fetch(MDG_ENDPOINT_URL, { method: 'POST', headers, @@ -111,7 +111,7 @@ async function sendXMLToMDG(xmlData: string): Promise<{ }); const text = await res.text(); - + console.log('📥 MDG 응답 수신:', res.status, res.statusText); console.log('🔍 응답 XML (첫 500자):', text.substring(0, 500)); @@ -150,11 +150,11 @@ async function fetchVendorData(vendorCode: string) { .from(VENDOR_MASTER_BP_HEADER) .where(eq(VENDOR_MASTER_BP_HEADER.VNDRCD, vendorCode)) .limit(1); - + if (!vendorHeader) { return null; } - + const [ addresses, adEmails, @@ -182,7 +182,7 @@ async function fetchVendorData(vendorCode: string) { db.select().from(VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_PORG).where(eq(VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_PORG.VNDRCD, vendorCode)), db.select().from(VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_PORG_ZVPFN).where(eq(VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_PORG_ZVPFN.VNDRCD, vendorCode)) ]); - + return { vendorHeader, addresses, @@ -198,7 +198,7 @@ async function fetchVendorData(vendorCode: string) { bpPorgs, zvpfns }; - + } catch (error) { console.error(`VENDOR ${vendorCode} 데이터 조회 실패:`, error); throw error; @@ -259,15 +259,15 @@ export async function sendVendorMasterToMDG(vendorCodes: string[]): Promise<{ }> { try { console.log(`🚀 VENDOR_MASTER 송신 시작: ${vendorCodes.length}개 벤더`); - + const results: Array<{ vendorCode: string; success: boolean; error?: string }> = []; - + for (const vendorCode of vendorCodes) { try { console.log(`📤 VENDOR ${vendorCode} 데이터 조회 중...`); - + const vendorData = await fetchVendorData(vendorCode); - + if (!vendorData) { results.push({ vendorCode, @@ -276,13 +276,13 @@ export async function sendVendorMasterToMDG(vendorCodes: string[]): Promise<{ }); continue; } - + const supplierMaster = buildSupplierMasterData(vendorData); console.log(`📄 VENDOR ${vendorCode} 데이터 생성 완료`); - + const generatedXML = generateSAPXICompatibleXML(supplierMaster); const result = await sendXMLToMDG(generatedXML); - + if (result.success) { console.log(`✅ VENDOR ${vendorCode} MDG 전송 성공`); results.push({ @@ -297,7 +297,7 @@ export async function sendVendorMasterToMDG(vendorCodes: string[]): Promise<{ error: result.message }); } - + } catch (error) { console.error(`❌ VENDOR ${vendorCode} 전송 실패:`, error); results.push({ @@ -307,18 +307,18 @@ export async function sendVendorMasterToMDG(vendorCodes: string[]): Promise<{ }); } } - + const successCount = results.filter(r => r.success).length; const failCount = results.length - successCount; - + console.log(`🎉 VENDOR_MASTER 송신 완료: 성공 ${successCount}개, 실패 ${failCount}개`); - + return { success: failCount === 0, message: `전송 완료: 성공 ${successCount}개, 실패 ${failCount}개`, results }; - + } catch (error) { console.error('❌ VENDOR_MASTER 송신 중 전체 오류 발생:', error); return { @@ -328,6 +328,39 @@ export async function sendVendorMasterToMDG(vendorCodes: string[]): Promise<{ } } +// 필수 필드 검증 함수 +function validateMandatoryFields(formData: Record<string, string>): { + isValid: boolean; + missingFields: string[]; + errorMessage: string; +} { + const missingFields: string[] = []; + + // CSV_FIELDS에서 mandatory가 true인 필드들만 필수 필드로 체크 + CSV_FIELDS.forEach(field => { + if (field.mandatory) { + const value = formData[field.field]; + if (!value || value.trim() === '') { + missingFields.push(field.field); + } + } + }); + + if (missingFields.length > 0) { + return { + isValid: false, + missingFields, + errorMessage: `필수 필드가 누락되었습니다: ${missingFields.join(', ')}` + }; + } + + return { + isValid: true, + missingFields: [], + errorMessage: '' + }; +} + // 테스트용 폼 데이터 송신 함수 export async function sendTestVendorDataToMDG(formData: Record<string, string>): Promise<{ success: boolean; @@ -337,7 +370,19 @@ export async function sendTestVendorDataToMDG(formData: Record<string, string>): }> { try { console.log('🚀 테스트용 VENDOR 데이터 송신 시작'); - + + // 필수 필드 검증 + const validation = validateMandatoryFields(formData); + if (!validation.isValid) { + console.error('❌ 필수 필드 누락:', validation.missingFields); + return { + success: false, + message: validation.errorMessage, + responseData: undefined, + generatedXML: undefined + }; + } + const seen = new Set<string>(); const uniqueFields = CSV_FIELDS.filter(f => { if (seen.has(f.field)) return false; @@ -351,18 +396,18 @@ export async function sendTestVendorDataToMDG(formData: Record<string, string>): }); const generatedXML = generateSAPXICompatibleXML(supplierMaster); - + console.log('📄 SAP XI 호환 XML 생성 완료'); - + const result = await sendXMLToMDG(generatedXML); - + return { success: result.success, message: result.success ? '테스트 송신이 완료되었습니다.' : result.message, responseData: result.responseText, generatedXML }; - + } catch (error) { console.error('❌ 테스트 송신 실패:', error); return { @@ -387,44 +432,44 @@ export async function sendAllVendorsToMDG() { const vendors = await db .select({ VNDRCD: VENDOR_MASTER_BP_HEADER.VNDRCD }) .from(VENDOR_MASTER_BP_HEADER); - + const vendorCodes = vendors.map(v => v.VNDRCD); - + if (vendorCodes.length === 0) { return { success: false, message: '송신할 VENDOR 데이터가 없습니다.' }; } - + console.log(`⚠️ 전체 VENDOR 송신 요청: ${vendorCodes.length}개`); - + const batchSize = 10; const results: Array<{ vendorCode: string; success: boolean; error?: string }> = []; - + for (let i = 0; i < vendorCodes.length; i += batchSize) { const batch = vendorCodes.slice(i, i + batchSize); console.log(`📦 배치 ${Math.floor(i / batchSize) + 1} 처리 중... (${batch.length}개)`); - + const batchResult = await sendVendorMasterToMDG(batch); if (batchResult.results) { results.push(...batchResult.results); } - + if (i + batchSize < vendorCodes.length) { await new Promise(resolve => setTimeout(resolve, 1000)); } } - + const successCount = results.filter(r => r.success).length; const failCount = results.length - successCount; - + return { success: failCount === 0, message: `전체 송신 완료: 성공 ${successCount}개, 실패 ${failCount}개`, results }; - + } catch (error) { console.error('전체 VENDOR 송신 중 오류:', error); return { @@ -442,9 +487,9 @@ export async function sendModifiedVendorsToMDG(): Promise<{ }> { try { console.log('🔍 수정된 VENDOR 데이터 조회 중...'); - + const modifiedVendors = await db - .select({ + .select({ VNDRCD: VENDOR_MASTER_BP_HEADER.VNDRCD, createdAt: VENDOR_MASTER_BP_HEADER.createdAt, updatedAt: VENDOR_MASTER_BP_HEADER.updatedAt @@ -453,9 +498,9 @@ export async function sendModifiedVendorsToMDG(): Promise<{ .where( sql`EXTRACT(EPOCH FROM ${VENDOR_MASTER_BP_HEADER.updatedAt}) - EXTRACT(EPOCH FROM ${VENDOR_MASTER_BP_HEADER.createdAt}) > 1` ); - + const vendorCodes = modifiedVendors.map(v => v.VNDRCD); - + if (vendorCodes.length === 0) { console.log('📝 수정된 VENDOR 데이터가 없습니다.'); return { @@ -463,37 +508,37 @@ export async function sendModifiedVendorsToMDG(): Promise<{ message: '수정된 VENDOR 데이터가 없습니다.' }; } - + console.log(`📋 수정된 VENDOR ${vendorCodes.length}개 발견:`, vendorCodes); - + const batchSize = 10; const results: Array<{ vendorCode: string; success: boolean; error?: string }> = []; - + for (let i = 0; i < vendorCodes.length; i += batchSize) { const batch = vendorCodes.slice(i, i + batchSize); console.log(`📦 수정 데이터 배치 ${Math.floor(i / batchSize) + 1} 처리 중... (${batch.length}개)`); - + const batchResult = await sendVendorMasterToMDG(batch); if (batchResult.results) { results.push(...batchResult.results); } - + if (i + batchSize < vendorCodes.length) { await new Promise(resolve => setTimeout(resolve, 1000)); } } - + const successCount = results.filter(r => r.success).length; const failCount = results.length - successCount; - + console.log(`🎯 수정된 VENDOR 송신 완료: 성공 ${successCount}개, 실패 ${failCount}개`); - + return { success: failCount === 0, message: `수정된 VENDOR 송신 완료: 성공 ${successCount}개, 실패 ${failCount}개`, results }; - + } catch (error) { console.error('❌ 수정된 VENDOR 송신 중 오류:', error); return { @@ -505,7 +550,7 @@ export async function sendModifiedVendorsToMDG(): Promise<{ // 테스트용 N건 송신 export async function sendNVendorsToMDG( - count: number, + count: number, startFrom: number = 0 ): Promise<{ success: boolean; @@ -519,35 +564,35 @@ export async function sendNVendorsToMDG( message: '송신할 건수는 1 이상이어야 합니다.' }; } - + console.log(`🧪 테스트용 VENDOR 송신: ${count}건 (${startFrom}번째부터)`); - + const vendors = await db .select({ VNDRCD: VENDOR_MASTER_BP_HEADER.VNDRCD }) .from(VENDOR_MASTER_BP_HEADER) .limit(count) .offset(startFrom); - + const vendorCodes = vendors.map(v => v.VNDRCD); - + if (vendorCodes.length === 0) { return { success: false, message: `${startFrom}번째부터 ${count}건의 VENDOR 데이터가 없습니다.` }; } - + console.log(`📋 테스트 대상 VENDOR ${vendorCodes.length}개:`, vendorCodes); - + const result = await sendVendorMasterToMDG(vendorCodes); - + console.log(`🧪 테스트 송신 완료: ${vendorCodes.length}개 처리`); - + return { ...result, message: `테스트 송신 완료 (${vendorCodes.length}개): ${result.message}` }; - + } catch (error) { console.error('❌ 테스트 송신 중 오류:', error); return { @@ -567,9 +612,9 @@ export async function sendRecentModifiedVendorsToMDG( }> { try { console.log(`🕒 최근 수정된 VENDOR ${count}건 조회 중...`); - + const recentVendors = await db - .select({ + .select({ VNDRCD: VENDOR_MASTER_BP_HEADER.VNDRCD, updatedAt: VENDOR_MASTER_BP_HEADER.updatedAt }) @@ -579,28 +624,28 @@ export async function sendRecentModifiedVendorsToMDG( ) .orderBy(desc(VENDOR_MASTER_BP_HEADER.updatedAt)) .limit(count); - + const vendorCodes = recentVendors.map(v => v.VNDRCD); - + if (vendorCodes.length === 0) { return { success: true, message: '최근 수정된 VENDOR 데이터가 없습니다.' }; } - - console.log(`📋 최근 수정된 VENDOR ${vendorCodes.length}개:`, + + console.log(`📋 최근 수정된 VENDOR ${vendorCodes.length}개:`, recentVendors.map(v => `${v.VNDRCD}(${v.updatedAt?.toISOString()})`)); - + const result = await sendVendorMasterToMDG(vendorCodes); - + console.log(`🕒 최근 수정 데이터 송신 완료`); - + return { ...result, message: `최근 수정된 ${vendorCodes.length}개 송신 완료: ${result.message}` }; - + } catch (error) { console.error('❌ 최근 수정 데이터 송신 중 오류:', error); return { @@ -621,14 +666,14 @@ export async function getVendorSendStatistics(): Promise<{ const [totalResult] = await db .select({ count: sql<number>`count(*)` }) .from(VENDOR_MASTER_BP_HEADER); - + const [modifiedResult] = await db .select({ count: sql<number>`count(*)` }) .from(VENDOR_MASTER_BP_HEADER) .where( sql`EXTRACT(EPOCH FROM ${VENDOR_MASTER_BP_HEADER.updatedAt}) - EXTRACT(EPOCH FROM ${VENDOR_MASTER_BP_HEADER.createdAt}) > 1` ); - + const [lastModifiedResult] = await db .select({ updatedAt: VENDOR_MASTER_BP_HEADER.updatedAt }) .from(VENDOR_MASTER_BP_HEADER) @@ -637,7 +682,7 @@ export async function getVendorSendStatistics(): Promise<{ ) .orderBy(desc(VENDOR_MASTER_BP_HEADER.updatedAt)) .limit(1); - + const [oldestUnmodifiedResult] = await db .select({ createdAt: VENDOR_MASTER_BP_HEADER.createdAt }) .from(VENDOR_MASTER_BP_HEADER) @@ -646,14 +691,14 @@ export async function getVendorSendStatistics(): Promise<{ ) .orderBy(VENDOR_MASTER_BP_HEADER.createdAt) .limit(1); - + return { total: totalResult.count, modified: modifiedResult.count, lastModified: lastModifiedResult?.updatedAt || undefined, oldestUnmodified: oldestUnmodifiedResult?.createdAt || undefined }; - + } catch (error) { console.error('통계 조회 실패:', error); throw error; diff --git a/lib/utils.ts b/lib/utils.ts index 4d987902..dab65b37 100644 --- a/lib/utils.ts +++ b/lib/utils.ts @@ -288,4 +288,5 @@ export function compareItemNumber(a?: string, b?: string) { if (av !== bv) return av - bv; } return as.length - bs.length; -}
\ No newline at end of file +} + diff --git a/lib/vendor-investigation/table/investigation-table-columns.tsx b/lib/vendor-investigation/table/investigation-table-columns.tsx index 521befa9..a6c1574d 100644 --- a/lib/vendor-investigation/table/investigation-table-columns.tsx +++ b/lib/vendor-investigation/table/investigation-table-columns.tsx @@ -26,6 +26,22 @@ interface GetVendorInvestigationsColumnsProps { openVendorDetailsModal?: (vendorId: number) => void } +// Helper function for investigation method variants +function getMethodVariant(method: string): "default" | "secondary" | "outline" | "destructive" { + switch (method) { + case "PURCHASE_SELF_EVAL": + return "secondary" + case "DOCUMENT_EVAL": + return "outline" + case "PRODUCT_INSPECTION": + return "default" + case "SITE_VISIT_EVAL": + return "destructive" + default: + return "outline" + } +} + export function getColumns({ setRowAction, openVendorDetailsModal, @@ -168,6 +184,17 @@ export function getColumns({ ) } + // Handle investigation method + if (column.id === "investigationMethod") { + if (!value) return "" + + return ( + <Badge variant={getMethodVariant(value as string)}> + {formatEnumValue(value as string)} + </Badge> + ) + } + // Handle evaluation result if (column.id === "evaluationResult") { if (!value) return "" @@ -340,6 +367,8 @@ function getStatusVariant(status: string): "default" | "secondary" | "outline" | } } + + function getResultVariant(result: string): "default" | "secondary" | "outline" | "destructive" { switch (result) { case "APPROVED": diff --git a/lib/vendor-regular-registrations/repository.ts b/lib/vendor-regular-registrations/repository.ts index aec3d275..6f73b98f 100644 --- a/lib/vendor-regular-registrations/repository.ts +++ b/lib/vendor-regular-registrations/repository.ts @@ -125,19 +125,6 @@ export async function getVendorRegularRegistrations( return acc;
}, [] as typeof filteredContracts);
- // 디버깅을 위한 로그
- console.log(`📋 벤더 ID ${registration.vendorId} (${registration.companyName}) 현황:`, {
- vendorFiles: vendorFiles.map(f => ({ type: f.attachmentType, fileName: f.fileName })),
- investigationFiles: investigationFiles.map(f => ({ type: f.attachmentType, fileName: f.fileName })),
- allContracts: allVendorContracts.length,
- uniqueContracts: vendorContracts.map(c => ({
- templateName: c.templateName,
- status: c.status,
- createdAt: c.createdAt?.toISOString()
- })),
- contactTypes: vendorContacts.map(c => c.contactType)
- });
-
// 문서 제출 현황 - 국가별 요구사항 적용
const isForeign = registration.country !== 'KR';
const documentSubmissionsStatus = {
@@ -155,47 +142,6 @@ export async function getVendorRegularRegistrations( auditResult: investigationFiles,
};
- // 디버깅용 로그 추가
- console.log(`🔍 벤더 ID ${registration.vendorId} documentFiles 구조:`, {
- businessRegistration: documentFiles.businessRegistration.map(f => ({
- fileName: f.fileName,
- filePath: f.filePath,
- attachmentType: f.attachmentType,
- allKeys: Object.keys(f)
- })),
- creditEvaluation: documentFiles.creditEvaluation.map(f => ({
- fileName: f.fileName,
- filePath: f.filePath,
- attachmentType: f.attachmentType,
- allKeys: Object.keys(f)
- })),
- bankCopy: documentFiles.bankCopy.map(f => ({
- fileName: f.fileName,
- filePath: f.filePath,
- attachmentType: f.attachmentType,
- allKeys: Object.keys(f)
- })),
- auditResult: documentFiles.auditResult.map(f => ({
- fileName: f.fileName,
- attachmentType: f.attachmentType,
- allKeys: Object.keys(f)
- })),
- totalVendorFiles: vendorFiles.length,
- totalInvestigationFiles: investigationFiles.length
- });
-
- // 문서 제출 현황 로그
- console.log(`📊 벤더 ID ${registration.vendorId} 문서 제출 현황:`, {
- documentSubmissionsStatus,
- isForeign,
- vendorFiles: vendorFiles.map(f => ({
- type: f.attachmentType,
- fileName: f.fileName
- })),
- investigationFilesCount: investigationFiles.length,
- country: registration.country
- });
-
// 계약 동의 현황 - 실제 기본 계약 데이터 기반으로 단순화
const contractAgreementsStatus = {
cp: vendorContracts.some(c => c.status === "COMPLETED") ? "completed" : "not_submitted",
@@ -214,16 +160,6 @@ export async function getVendorRegularRegistrations( const additionalInfoTableCompleted = vendorAdditionalInfoData.length > 0;
const additionalInfoCompleted = contactsCompleted && additionalInfoTableCompleted;
- // 추가정보 디버깅 로그
- console.log(`🔍 벤더 ID ${registration.vendorId} 추가정보 상세:`, {
- requiredContactTypes,
- vendorContactTypes: vendorContacts.map(c => c.contactType),
- contactsCompleted,
- additionalInfoTableCompleted,
- additionalInfoData: vendorAdditionalInfoData,
- finalAdditionalInfoCompleted: additionalInfoCompleted
- });
-
// 모든 조건 충족 여부 확인
const allDocumentsSubmitted = Object.values(documentSubmissionsStatus).every(status => status === true);
const allContractsCompleted = vendorContracts.length > 0 && vendorContracts.every(c => c.status === "COMPLETED");
@@ -233,7 +169,8 @@ export async function getVendorRegularRegistrations( const shouldUpdateStatus = allDocumentsSubmitted && allContractsCompleted && safetyQualificationCompleted && additionalInfoCompleted;
// 현재 상태가 조건충족이 아닌데 모든 조건이 충족되면 상태 업데이트
- if (shouldUpdateStatus && registration.status !== "approval_ready") {
+ // 단, 이미 registration_requested 상태라면 자동 업데이트하지 않음
+ if (shouldUpdateStatus && registration.status !== "approval_ready" && registration.status !== "registration_requested") {
// 비동기 업데이트 (백그라운드에서 실행)
updateVendorRegularRegistration(registration.id, {
status: "approval_ready"
@@ -245,7 +182,7 @@ export async function getVendorRegularRegistrations( return {
id: registration.id,
vendorId: registration.vendorId,
- status: shouldUpdateStatus ? "approval_ready" : (registration.status || "audit_pass"),
+ status: registration.status || "audit_pass",
potentialCode: registration.potentialCode,
businessNumber: registration.businessNumber || "",
companyName: registration.companyName || "",
diff --git a/lib/vendor-regular-registrations/service.ts b/lib/vendor-regular-registrations/service.ts index 7ec433b4..c4f1a2a8 100644 --- a/lib/vendor-regular-registrations/service.ts +++ b/lib/vendor-regular-registrations/service.ts @@ -26,6 +26,7 @@ import { } from "@/db/schema";
import db from "@/db/db";
import { inArray, eq, desc, and, lt } from "drizzle-orm";
+import { sendTestVendorDataToMDG } from "@/lib/soap/mdg/send/vendor-master/action";
// 3개월 이상 정규등록검토 상태인 등록을 장기미등록으로 변경
async function updatePendingApprovals() {
@@ -125,7 +126,7 @@ export async function fetchVendorRegularRegistrations(input?: { },
[JSON.stringify(input || {})],
{
- revalidate: 300, // 5분 캐시
+ revalidate: 60, // 1분 캐시로 단축
tags: ["vendor-regular-registrations"],
}
)();
@@ -1184,6 +1185,13 @@ export async function submitRegistrationRequest( }
// 조건충족 상태인지 확인
+ console.log("📋 업데이트 전 현재 데이터:", {
+ registrationId,
+ currentStatus: registration[0].status,
+ currentRemarks: registration[0].remarks,
+ currentUpdatedAt: registration[0].updatedAt
+ });
+
if (registration[0].status !== "approval_ready") {
return { success: false, error: "조건충족 상태가 아닙니다." };
}
@@ -1197,18 +1205,35 @@ export async function submitRegistrationRequest( status: "requested" // 요청됨
};
- // 상태를 '등록요청됨'으로 변경하고 요청 데이터 저장
- await db
- .update(vendorRegularRegistrations)
- .set({
- status: "registration_requested",
- remarks: `정규업체 등록 요청됨 - ${new Date().toISOString()}\n요청자: ${session.user.name}`,
- updatedAt: new Date(),
- })
- .where(eq(vendorRegularRegistrations.id, registrationId));
+ // 트랜잭션으로 상태 변경
+ const updateResult = await db.transaction(async (tx) => {
+ return await tx
+ .update(vendorRegularRegistrations)
+ .set({
+ status: "registration_requested",
+ remarks: `정규업체 등록 요청됨 - ${new Date().toISOString()}\n요청자: ${session.user.name}`,
+ updatedAt: new Date(),
+ })
+ .where(eq(vendorRegularRegistrations.id, registrationId));
+ });
+
+ console.log("🔄 업데이트 결과:", {
+ registrationId,
+ updateResult,
+ statusToSet: "registration_requested"
+ });
+
- // TODO: MDG 인터페이스 연동
- // await sendToMDG(registrationRequestData);
+
+ // MDG 인터페이스 연동
+ const mdgResult = await sendRegistrationRequestToMDG(registrationId, requestData);
+
+ if (!mdgResult.success) {
+ console.error('❌ MDG 송신 실패:', mdgResult.error);
+ // MDG 송신 실패해도 등록 요청은 성공으로 처리 (재시도 가능하도록)
+ } else {
+ console.log('✅ MDG 송신 성공:', mdgResult.message);
+ }
// TODO: Knox 결재 연동
// - 사업자등록증, 신용평가보고서, 개인정보동의서, 통장사본
@@ -1225,13 +1250,14 @@ export async function submitRegistrationRequest( requestDate: new Date().toISOString()
});
- // 캐시 무효화
+ // 캐시 무효화 - 더 강력한 무효화
revalidateTag("vendor-regular-registrations");
revalidateTag(`vendor-regular-registration-${registrationId}`);
+ revalidateTag("vendor-registration-status");
return {
success: true,
- message: "정규업체 등록 요청이 성공적으로 제출되었습니다.\nKnox 결재 시스템과 MDG 인터페이스 연동은 추후 구현 예정입니다."
+ message: `정규업체 등록 요청이 성공적으로 제출되었습니다.\n${mdgResult.success ? 'MDG 인터페이스 연동이 완료되었습니다.' : 'MDG 인터페이스 연동에 실패했습니다. (재시도 가능)'}\nKnox 결재 시스템 연동은 추후 구현 예정입니다.`
};
} catch (error) {
@@ -1241,4 +1267,165 @@ export async function submitRegistrationRequest( error: error instanceof Error ? error.message : "정규업체 등록 요청 중 오류가 발생했습니다."
};
}
+}
+
+// MDG로 정규업체 등록 요청 데이터를 보내는 함수
+export async function sendRegistrationRequestToMDG(
+ registrationId: number,
+ requestData: RegistrationRequestData
+) {
+ try {
+ console.log('🚀 MDG로 정규업체 등록 요청 데이터 송신 시작');
+
+ // 세션 사용자 정보 가져오기
+ const session = await getServerSession(authOptions);
+ const userId = session?.user?.id || 'EVCP_USER';
+ const userName = session?.user?.name || 'EVCP_USER';
+ // 등록 정보 조회
+ const registration = await db
+ .select()
+ .from(vendorRegularRegistrations)
+ .where(eq(vendorRegularRegistrations.id, registrationId))
+ .limit(1);
+
+ if (!registration[0]) {
+ return { success: false, error: "등록 정보를 찾을 수 없습니다." };
+ }
+
+ // registration[0].vendorId를 이용해 벤더 정보 조회
+ const vendor = await db
+ .select()
+ .from(vendors)
+ .where(eq(vendors.id, registration[0].vendorId))
+ .limit(1);
+
+ if (!vendor[0]) {
+ return { success: false, error: "벤더 정보를 찾을 수 없습니다." };
+ }
+
+ // MDG 필수 필드 매핑 (이메일 내용 기반)
+ const mdgData: Record<string, string> = {
+ // 1. BP_HEADER: 벤더코드가 있으면 벤더코드를, 없으면 eVCP에서 관리번호를 보내드리겠습니다. (필수)
+ BP_HEADER: vendor[0].vendorCode || vendor[0].id.toString(),
+
+ // 2. ZZSRMCD: eVCP에서 내부관리번호를 보내드리겠습니다. (필수)
+ ZZSRMCD: vendor[0].id.toString(),
+
+ // 3. SORT1: 벤더명 보내드립니다. (필수)
+ SORT1: requestData.companyNameKor,
+
+ // 4. NAME1: 벤더명 보내드립니다. (필수)
+ NAME1: requestData.companyNameKor,
+
+ // 5. NAME2: 벤더 영문명 (있는 경우) (선택)
+ NAME2: requestData.companyNameEng || '',
+
+ // 6. KTOKK: 셈플로 받은자료에는 "LIEF"로 되어 있습니다. 고정값 (필수)
+ KTOKK: 'LIEF',
+
+ // 7. J_1KFREPRE: 대표자명 (필수)
+ J_1KFREPRE: requestData.representativeNameKor,
+
+ // 8. MASTERFLAG: 지시자 같은데, 어떤값을 보내면 되나요? -> V (필수)
+ MASTERFLAG: 'V',
+
+ // 9. IBND_TYPE: 입력가능한 값을 알려주시기 바랍니다. -> 생성 : I, 변경: U (필수)
+ IBND_TYPE: 'I',
+
+ // 10. ZZREQID: SAP의 USER ID를 보내드리겠습니다. (필수)
+ ZZREQID: userName,
+
+ // 11. ADDRNO: I/F정의서에는 필수입력으로 되어 있습니다. -> 빈값으로 처리 (필수)
+ ADDRNO: '',
+
+ // 12. COUNTRY: ISO 3166-1의 규약에 따른 국가코드를 보내드릴 예정입니다. (필수)
+ COUNTRY: vendor[0].country || 'KR',
+
+ // 13. POST_CODE1: 우편번호를 송부하겠습니다. (필수)
+ POST_CODE1: vendor[0].postalCode || '',
+
+ // 14. CITY1: 상세 주소를 송부하겠습니다. (필수) - 샘플에서는 상세주소가 들어감
+ CITY1: vendor[0].addressDetail || '',
+
+ // 15. STREET: 주소를 송부하겠습니다. (필수) - 샘플에서는 기본주소가 들어감
+ STREET: vendor[0].address || '',
+
+ // 16. TEL_NUMBER: 전화번호 (필수)
+ TEL_NUMBER: vendor[0].phone || '',
+
+ // 17. R3_USER: 전화/휴대폰 구분자로 해석됩니다. 0이면 전화, 1이면 휴대폰 (필수)
+ R3_USER: '0', // 일반 전화번호로 가정
+
+ // 18. TAXTYPE: 국가 코드에 맞게 하면 됩니다. 국가 KR -> TAXTYPE KR2 (필수)
+ TAXTYPE: (vendor[0].country || 'KR') + '2',
+
+ // 19. TAXNUM: 사업자번호 (필수)
+ TAXNUM: vendor[0].taxId || '',
+
+ // 20. BP_TX_TYP: 대표자 주민번호 YYMMDD + 0000000 (YYMMDD0000000) - 대표자 생년월일 기준으로 생성
+ BP_TX_TYP: requestData.representativeBirthDate ?
+ requestData.representativeBirthDate.replace(/-/g, '') + '0000000' : '',
+
+ // 21. STCD3: 법인등록번호 (선택)
+ STCD3: requestData.corporateNumber || '',
+
+ // 22. CONSNUMBER: 순번 (샘플에서는 1, 2로 설정됨)
+ CONSNUMBER: '1',
+
+ // 23. ZZIND03: 기업규모 (A,B,C,D 값을 넣는 것으로 알고 있습니다.) (선택)
+ ZZIND03: 'B', // 기본값으로 B 설정
+
+ // 24. J_1KFTBUS: 사업유형 (샘플에서는 "건설업외")
+ J_1KFTBUS: '',
+
+ // 25. J_1KFTIND: 산업유형 (샘플에서는 "제조업")
+ J_1KFTIND: '',
+
+ // 26. SMTP_ADDR: 대표 이메일 주소 (필수)
+ SMTP_ADDR: requestData.representativeEmail || vendor[0].email || '',
+
+ // 27. URI_ADDR: 웹사이트 주소 (선택)
+ URI_ADDR: vendor[0].website || '',
+
+ // 28. ZZCNAME1: 해당 벤더의 첫번째 유저의 이름 (영문) (선택)
+ ZZCNAME1: requestData.representativeNameEng || '',
+
+ // 29. ZZCNAME2: 해당 벤더의 첫번째 유저의 이름 (한글) (선택)
+ ZZCNAME2: requestData.representativeNameKor || '',
+
+ // 30. ZZTELF1_C: 해당 벤더의 첫번째 유저의 전화번호 (선택)
+ ZZTELF1_C: requestData.representativeContact || '',
+ };
+
+ // MDG로 데이터 전송
+ const result = await sendTestVendorDataToMDG(mdgData);
+
+ console.log('📤 MDG 송신 결과:', result);
+
+ if (!result.success) {
+ // 필수 필드 누락 에러인 경우 더 자세한 메시지 제공
+ if (result.message.includes('필수 필드가 누락되었습니다')) {
+ return {
+ success: false,
+ error: `MDG 송신 실패: ${result.message}\n\n누락된 필수 필드들을 확인하고 다시 시도해주세요.`
+ };
+ }
+ }
+
+ return {
+ success: result.success,
+ message: result.success ?
+ 'MDG로 정규업체 등록 요청이 성공적으로 전송되었습니다.' :
+ `MDG 송신 실패: ${result.message}`,
+ responseData: result.responseData,
+ generatedXML: result.generatedXML
+ };
+
+ } catch (error) {
+ console.error('❌ MDG 송신 실패:', error);
+ return {
+ success: false,
+ error: error instanceof Error ? error.message : 'MDG 송신 중 오류가 발생했습니다.'
+ };
+ }
}
\ No newline at end of file diff --git a/lib/vendor-regular-registrations/table/vendor-regular-registrations-table-toolbar-actions.tsx b/lib/vendor-regular-registrations/table/vendor-regular-registrations-table-toolbar-actions.tsx index 3a1216f2..df2ab53a 100644 --- a/lib/vendor-regular-registrations/table/vendor-regular-registrations-table-toolbar-actions.tsx +++ b/lib/vendor-regular-registrations/table/vendor-regular-registrations-table-toolbar-actions.tsx @@ -2,7 +2,6 @@ import { type Table } from "@tanstack/react-table"
import { toast } from "sonner"
-import { useRouter } from "next/navigation"
import { Button } from "@/components/ui/button"
import { Mail, FileWarning, Scale, FileText } from "lucide-react"
@@ -16,6 +15,7 @@ import { import { useState } from "react"
import { SkipReasonDialog } from "@/components/vendor-regular-registrations/skip-reason-dialog"
import { RegistrationRequestDialog } from "@/components/vendor-regular-registrations/registration-request-dialog"
+import { useRouter } from "next/navigation"
interface VendorRegularRegistrationsTableToolbarActionsProps {
table: Table<VendorRegularRegistration>
@@ -158,7 +158,7 @@ export function VendorRegularRegistrationsTableToolbarActions({ if (result.success) {
toast.success(result.message);
setRegistrationRequestDialog({ open: false, registration: null });
- window.location.reload(); // 데이터 새로고침
+ router.refresh();
} else {
toast.error(result.error);
}
@@ -178,26 +178,6 @@ export function VendorRegularRegistrationsTableToolbarActions({ return (
<div className="flex items-center gap-2">
- {/* <Button
- variant="outline"
- size="sm"
- onClick={handleSyncDocuments}
- disabled={syncLoading.documents || selectedRows.length === 0}
- >
- <FileText className="mr-2 h-4 w-4" />
- {syncLoading.documents ? "동기화 중..." : "문서 동기화"}
- </Button>
-
- <Button
- variant="outline"
- size="sm"
- onClick={handleSyncAgreements}
- disabled={syncLoading.agreements || selectedRows.length === 0}
- >
- <RefreshCw className="mr-2 h-4 w-4" />
- {syncLoading.agreements ? "동기화 중..." : "계약 동기화"}
- </Button> */}
-
<Button
variant="outline"
size="sm"
diff --git a/lib/vendors/service.ts b/lib/vendors/service.ts index 4cca3b12..e3a38891 100644 --- a/lib/vendors/service.ts +++ b/lib/vendors/service.ts @@ -1576,7 +1576,7 @@ export async function approveVendors(input: ApproveVendorsInput & { userId: numb // 기존 사용자-역할 관계 확인 const existingUserRole = await tx - .select({ id: userRoles.id }) + .select({ userId: userRoles.userId }) .from(userRoles) .where( and( @@ -1621,7 +1621,10 @@ export async function approveVendors(input: ApproveVendorsInput & { userId: numb try { // 사용자 언어 확인 const userInfo = await tx - .select({ language: users.language }) + .select({ + id: users.id, + language: users.language + }) .from(users) .where(eq(users.email, vendor.email)) .limit(1); diff --git a/lib/vendors/table/approve-vendor-dialog.tsx b/lib/vendors/table/approve-vendor-dialog.tsx index 9c175dc5..940710f5 100644 --- a/lib/vendors/table/approve-vendor-dialog.tsx +++ b/lib/vendors/table/approve-vendor-dialog.tsx @@ -55,20 +55,29 @@ export function ApproveVendorsDialog({ } startApproveTransition(async () => { - const { error } = await approveVendors({ - ids: vendors.map((vendor) => vendor.id), - userId: Number(session.user.id) + try { + console.log("🔍 [DEBUG] 승인 요청 시작 - vendors:", vendors.map(v => ({ id: v.id, vendorName: v.vendorName, email: v.email }))); + console.log("🔍 [DEBUG] 세션 정보:", { userId: session.user.id, userType: typeof session.user.id }); + + const { error } = await approveVendors({ + ids: vendors.map((vendor) => vendor.id), + userId: Number(session.user.id) + }) - }) + if (error) { + console.error("🚨 [DEBUG] 승인 처리 에러:", error); + toast.error(error) + return + } - if (error) { - toast.error(error) - return + console.log("✅ [DEBUG] 승인 처리 성공"); + props.onOpenChange?.(false) + toast.success("Vendors successfully approved for review") + onSuccess?.() + } catch (error) { + console.error("🚨 [DEBUG] 예상치 못한 에러:", error); + toast.error("예상치 못한 오류가 발생했습니다.") } - - props.onOpenChange?.(false) - toast.success("Vendors successfully approved for review") - onSuccess?.() }) } diff --git a/lib/vendors/table/request-pq-dialog.tsx b/lib/vendors/table/request-pq-dialog.tsx index 20388f71..14a1cd01 100644 --- a/lib/vendors/table/request-pq-dialog.tsx +++ b/lib/vendors/table/request-pq-dialog.tsx @@ -37,6 +37,7 @@ import { Checkbox } from "@/components/ui/checkbox" import { Label } from "@/components/ui/label"
import { Input } from "@/components/ui/input"
import { Badge } from "@/components/ui/badge"
+import { Progress } from "@/components/ui/progress"
import { Vendor } from "@/db/schema/vendors"
import { requestBasicContractInfo, requestPQVendors } from "../service"
import { getProjectsWithPQList } from "@/lib/pq/service"
@@ -98,6 +99,11 @@ export function RequestPQDialog({ vendors, showTrigger = true, onSuccess, ...pro // 비밀유지 계약서 첨부파일 관련 상태
const [ndaAttachments, setNdaAttachments] = React.useState<File[]>([])
const [isUploadingNdaFiles, setIsUploadingNdaFiles] = React.useState(false)
+
+ // 프로그레스 관련 상태
+ const [progressValue, setProgressValue] = React.useState(0)
+ const [currentStep, setCurrentStep] = React.useState("")
+ const [showProgress, setShowProgress] = React.useState(false)
// 아이템 검색 필터링
React.useEffect(() => {
@@ -180,6 +186,9 @@ export function RequestPQDialog({ vendors, showTrigger = true, onSuccess, ...pro setShowItemDropdown(false)
setNdaAttachments([])
setIsUploadingNdaFiles(false)
+ setProgressValue(0)
+ setCurrentStep("")
+ setShowProgress(false)
}
}, [props.open])
@@ -235,9 +244,22 @@ export function RequestPQDialog({ vendors, showTrigger = true, onSuccess, ...pro if (!dueDate) return toast.error("마감일을 선택하세요.")
if (!session?.user?.id) return toast.error("인증 실패")
+ // 프로그레스 바를 즉시 표시
+ setShowProgress(true)
+ setProgressValue(0)
+ setCurrentStep("시작 중...")
+
startApproveTransition(async () => {
try {
+
+ // 전체 단계 수 계산
+ const totalSteps = 1 +
+ (selectedTemplateIds.length > 0 ? 1 : 0) +
+ (isNdaTemplateSelected() && ndaAttachments.length > 0 ? 1 : 0)
+ let completedSteps = 0
+
// 1단계: PQ 생성
+ setCurrentStep("PQ 생성 중...")
console.log("🚀 PQ 생성 시작")
const { error: pqError } = await requestPQVendors({
ids: vendors.map((v) => v.id),
@@ -252,9 +274,13 @@ export function RequestPQDialog({ vendors, showTrigger = true, onSuccess, ...pro })
if (pqError) {
+ setShowProgress(false)
toast.error(`PQ 생성 실패: ${pqError}`)
return
}
+
+ completedSteps++
+ setProgressValue((completedSteps / totalSteps) * 100)
console.log("✅ PQ 생성 완료")
toast.success("PQ가 성공적으로 요청되었습니다")
@@ -264,12 +290,17 @@ export function RequestPQDialog({ vendors, showTrigger = true, onSuccess, ...pro selectedTemplateIds.includes(t.id)
)
+ setCurrentStep(`기본계약서 생성 중... (${templates.length}개 템플릿)`)
console.log("📋 기본계약서 백그라운드 처리 시작", templates.length, "개 템플릿")
await processBasicContractsInBackground(templates, vendors)
+
+ completedSteps++
+ setProgressValue((completedSteps / totalSteps) * 100)
}
// 3단계: 비밀유지 계약서 첨부파일이 있는 경우 저장
if (isNdaTemplateSelected() && ndaAttachments.length > 0) {
+ setCurrentStep(`비밀유지 계약서 첨부파일 저장 중... (${ndaAttachments.length}개 파일)`)
console.log("📎 비밀유지 계약서 첨부파일 처리 시작", ndaAttachments.length, "개 파일")
const ndaResult = await saveNdaAttachments({
@@ -283,14 +314,24 @@ export function RequestPQDialog({ vendors, showTrigger = true, onSuccess, ...pro } else {
toast.error(`첨부파일 처리 중 일부 오류가 발생했습니다: ${ndaResult.error}`)
}
+
+ completedSteps++
+ setProgressValue((completedSteps / totalSteps) * 100)
}
- // 완료 후 다이얼로그 닫기
- props.onOpenChange?.(false)
- onSuccess?.()
+ setCurrentStep("완료!")
+ setProgressValue(100)
+
+ // 잠시 완료 상태를 보여준 후 다이얼로그 닫기
+ setTimeout(() => {
+ setShowProgress(false)
+ props.onOpenChange?.(false)
+ onSuccess?.()
+ }, 1000)
} catch (error) {
console.error('PQ 생성 오류:', error)
+ setShowProgress(false)
toast.error(`처리 중 오류가 발생했습니다: ${error instanceof Error ? error.message : '알 수 없는 오류'}`)
}
})
@@ -328,6 +369,13 @@ export function RequestPQDialog({ vendors, showTrigger = true, onSuccess, ...pro const template = templates[templateIndex]
processedCount++
+ // 진행률 업데이트 (2단계 범위 내에서)
+ const baseProgress = 33.33 // 1단계 완료 후
+ const contractProgress = (processedCount / totalContracts) * 33.33 // 2단계는 33.33% 차지
+ const newProgress = baseProgress + contractProgress
+ setProgressValue(newProgress)
+ setCurrentStep(`기본계약서 생성 중... (${processedCount}/${totalContracts})`)
+
console.log(`📄 처리 중: ${vendor.vendorName} - ${template.templateName} (${processedCount}/${totalContracts})`)
// 개별 벤더에 대한 기본계약 생성
@@ -720,11 +768,31 @@ export function RequestPQDialog({ vendors, showTrigger = true, onSuccess, ...pro <div className="flex-1 overflow-y-auto">
{dialogContent}
</div>
- <DialogFooter>
- <DialogClose asChild><Button variant="outline">취소</Button></DialogClose>
- <Button onClick={onApprove} disabled={isApprovePending || !type || (type === "PROJECT" && !selectedProjectId)}>
- {isApprovePending && <Loader className="mr-2 size-4 animate-spin" />}요청하기
- </Button>
+ <DialogFooter className="flex-col gap-4">
+ {/* 프로그레스 바 */}
+ {(showProgress || isApprovePending) && (
+ <div className="w-full space-y-2">
+ <div className="flex items-center justify-between text-sm">
+ <span className="text-muted-foreground">{currentStep || "처리 중..."}</span>
+ <span className="font-medium">{Math.round(progressValue)}%</span>
+ </div>
+ <Progress value={progressValue} className="w-full" />
+ </div>
+ )}
+
+ {/* 버튼들 */}
+ <div className="flex justify-end gap-2">
+ <DialogClose asChild>
+ <Button variant="outline" disabled={isApprovePending}>취소</Button>
+ </DialogClose>
+ <Button
+ onClick={onApprove}
+ disabled={isApprovePending || !type || (type === "PROJECT" && !selectedProjectId)}
+ >
+ {isApprovePending && <Loader className="mr-2 size-4 animate-spin" />}
+ 요청하기
+ </Button>
+ </div>
</DialogFooter>
</DialogContent>
@@ -753,11 +821,32 @@ export function RequestPQDialog({ vendors, showTrigger = true, onSuccess, ...pro <div className="flex-1 overflow-y-auto px-4">
{dialogContent}
</div>
- <DrawerFooter>
- <DrawerClose asChild><Button variant="outline">취소</Button></DrawerClose>
- <Button onClick={onApprove} disabled={isApprovePending || !type || (type === "PROJECT" && !selectedProjectId)}>
- {isApprovePending && <Loader className="mr-2 size-4 animate-spin" />}요청하기
- </Button>
+ <DrawerFooter className="gap-4">
+ {/* 프로그레스 바 */}
+ {(showProgress || isApprovePending) && (
+ <div className="w-full space-y-2">
+ <div className="flex items-center justify-between text-sm">
+ <span className="text-muted-foreground">{currentStep || "처리 중..."}</span>
+ <span className="font-medium">{Math.round(progressValue)}%</span>
+ </div>
+ <Progress value={progressValue} className="w-full" />
+ </div>
+ )}
+
+ {/* 버튼들 */}
+ <div className="flex gap-2">
+ <DrawerClose asChild>
+ <Button variant="outline" disabled={isApprovePending} className="flex-1">취소</Button>
+ </DrawerClose>
+ <Button
+ onClick={onApprove}
+ disabled={isApprovePending || !type || (type === "PROJECT" && !selectedProjectId)}
+ className="flex-1"
+ >
+ {isApprovePending && <Loader className="mr-2 size-4 animate-spin" />}
+ 요청하기
+ </Button>
+ </div>
</DrawerFooter>
</DrawerContent>
diff --git a/lib/vendors/table/vendors-table-toolbar-actions.tsx b/lib/vendors/table/vendors-table-toolbar-actions.tsx index 6d5f7425..3d77486d 100644 --- a/lib/vendors/table/vendors-table-toolbar-actions.tsx +++ b/lib/vendors/table/vendors-table-toolbar-actions.tsx @@ -83,7 +83,7 @@ export function VendorsTableToolbarActions({ table }: VendorsTableToolbarActions .rows .map(row => row.original) .filter(vendor => - ["PENDING_REVIEW", "IN_REVIEW", "IN_PQ", "PQ_APPROVED", "APPROVED", "READY_TO_SEND", "ACTIVE"].includes(vendor.status) + ["IN_REVIEW", "IN_PQ", "PQ_APPROVED", "APPROVED", "READY_TO_SEND", "ACTIVE"].includes(vendor.status) ); }, [table.getFilteredSelectedRowModel().rows]); |
