summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/[lng]/evcp/(evcp)/vendors/[id]/info/basic/basic-info-client.tsx25
-rw-r--r--app/globals.css1
-rw-r--r--components/additional-info/join-form.tsx209
-rw-r--r--components/layout/Header.tsx1
-rw-r--r--components/signup/join-form.tsx4
-rw-r--r--components/vendor-regular-registrations/registration-request-dialog.tsx16
-rw-r--r--config/vendorRegularRegistrationsColumnsConfig.ts2
-rw-r--r--db/migrations/0302_happy_expediter.sql4
-rw-r--r--db/migrations/meta/0302_snapshot.json51320
-rw-r--r--db/migrations/meta/_journal.json7
-rw-r--r--i18n/locales/en/menu.json14
-rw-r--r--i18n/locales/ko/menu.json12
-rw-r--r--lib/basic-contract/service.ts506
-rw-r--r--lib/basic-contract/vendor-table/basic-contract-sign-dialog.tsx561
-rw-r--r--lib/basic-contract/vendor-table/basic-contract-table.tsx1
-rw-r--r--lib/basic-contract/vendor-table/survey-conditional.ts860
-rw-r--r--lib/basic-contract/viewer/basic-contract-sign-viewer.tsx2975
-rw-r--r--lib/compliance/table/compliance-template-create-dialog.tsx2
-rw-r--r--lib/dashboard/dashboard-client.tsx2
-rw-r--r--lib/items-tech/service.ts96
-rw-r--r--lib/items-tech/table/hull/import-item-handler.tsx119
-rw-r--r--lib/items-tech/table/import-excel-button.tsx31
-rw-r--r--lib/items-tech/table/ship/import-item-handler.tsx112
-rw-r--r--lib/items-tech/table/top/import-item-handler.tsx112
-rw-r--r--lib/items-tech/utils/import-utils.ts240
-rw-r--r--lib/site-visit/client-site-visit-wrapper.tsx16
-rw-r--r--lib/soap/mdg/send/vendor-master/action.ts203
-rw-r--r--lib/utils.ts3
-rw-r--r--lib/vendor-investigation/table/investigation-table-columns.tsx29
-rw-r--r--lib/vendor-regular-registrations/repository.ts69
-rw-r--r--lib/vendor-regular-registrations/service.ts215
-rw-r--r--lib/vendor-regular-registrations/table/vendor-regular-registrations-table-toolbar-actions.tsx24
-rw-r--r--lib/vendors/service.ts7
-rw-r--r--lib/vendors/table/approve-vendor-dialog.tsx31
-rw-r--r--lib/vendors/table/request-pq-dialog.tsx115
-rw-r--r--lib/vendors/table/vendors-table-toolbar-actions.tsx2
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]);