From 643f6e0d7d438b733b9617ddf3057e6dc0d486ce Mon Sep 17 00:00:00 2001 From: kjs Date: Wed, 1 Oct 2025 14:54:44 +0900 Subject: [PATCH] =?UTF-8?q?chore:=20Prisma=20=EA=B4=80=EB=A0=A8=20?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=20=EC=99=84=EC=A0=84=20=EC=A0=9C=EA=B1=B0=20?= =?UTF-8?q?=F0=9F=A7=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 제거된 파일들: 1. 컴파일된 파일: - backend-node/dist/config/database.js 2. 테스트 파일 (3개): - backend-node/src/tests/database.test.ts - backend-node/src/tests/authService.test.ts - backend-node/src/tests/integration/auth.integration.test.ts 3. Prisma 관련 스크립트 (10개): - test-db.js, check-password.js, check-actual-password.js - update-password.js, create-test-user.js, simple-test-user.js - clean-screen-tables.js, test-jwt.js, test-token.js - test-token.txt 4. Prisma 디렉토리: - backend-node/prisma/schema.prisma - backend-node/prisma/migrations/ 수정된 파일들: 1. backend-node/package.json: ✅ Prisma 스크립트 제거 (prisma:generate, migrate, studio, seed) ✅ @prisma/client 의존성 제거 ✅ prisma 개발 의존성 제거 ✅ keywords: prisma → postgresql 2. .gitignore: ✅ Prisma 관련 항목 제거 3. src/services/dataflowDiagramService.ts: ✅ 포맷팅 수정 최종 상태: - ✅ Prisma 호출: 0개 - ✅ Prisma 관련 파일: 0개 - ✅ Raw Query 기반 시스템으로 완전 전환 --- .gitignore | 5 - backend-node/check-actual-password.js | 37 - backend-node/check-password.js | 36 - backend-node/clean-screen-tables.js | 36 - backend-node/create-test-user.js | 82 - backend-node/package.json | 10 +- .../prisma/migrations/migration_lock.toml | 3 - backend-node/prisma/schema.prisma | 4611 ----------------- backend-node/simple-test-user.js | 30 - backend-node/src/tests/authService.test.ts | 426 -- backend-node/src/tests/database.test.ts | 455 -- .../integration/auth.integration.test.ts | 382 -- backend-node/test-db.js | 37 - backend-node/test-jwt.js | 41 - backend-node/test-token.js | 41 - backend-node/test-token.txt | 1 - backend-node/update-password.js | 36 - src/services/dataflowDiagramService.ts | 7 +- 18 files changed, 5 insertions(+), 6271 deletions(-) delete mode 100644 backend-node/check-actual-password.js delete mode 100644 backend-node/check-password.js delete mode 100644 backend-node/clean-screen-tables.js delete mode 100644 backend-node/create-test-user.js delete mode 100644 backend-node/prisma/migrations/migration_lock.toml delete mode 100644 backend-node/prisma/schema.prisma delete mode 100644 backend-node/simple-test-user.js delete mode 100644 backend-node/src/tests/authService.test.ts delete mode 100644 backend-node/src/tests/database.test.ts delete mode 100644 backend-node/src/tests/integration/auth.integration.test.ts delete mode 100644 backend-node/test-db.js delete mode 100644 backend-node/test-jwt.js delete mode 100644 backend-node/test-token.js delete mode 100644 backend-node/test-token.txt delete mode 100644 backend-node/update-password.js diff --git a/.gitignore b/.gitignore index 23c0c0a8..a771d2c9 100644 --- a/.gitignore +++ b/.gitignore @@ -150,9 +150,6 @@ jspm_packages/ ehthumbs.db Thumbs.db -# Prisma -prisma/migrations/ - # Build outputs dist/ build/ @@ -273,8 +270,6 @@ out/ .settings/ bin/ -/src/generated/prisma - # 업로드된 파일들 제외 backend-node/uploads/ uploads/ diff --git a/backend-node/check-actual-password.js b/backend-node/check-actual-password.js deleted file mode 100644 index 12e02cad..00000000 --- a/backend-node/check-actual-password.js +++ /dev/null @@ -1,37 +0,0 @@ -const { Client } = require("pg"); -require("dotenv/config"); - -async function checkActualPassword() { - const client = new Client({ - connectionString: process.env.DATABASE_URL, - }); - - try { - await client.connect(); - console.log("✅ 데이터베이스 연결 성공"); - - // 실제 저장된 비밀번호 확인 (암호화된 상태) - const passwordResult = await client.query(` - SELECT user_id, user_name, user_password, status - FROM user_info - WHERE user_id = 'kkh' - `); - console.log("🔐 사용자 비밀번호 정보:", passwordResult.rows); - - // 다른 사용자도 확인 - const otherUsersResult = await client.query(` - SELECT user_id, user_name, user_password, status - FROM user_info - WHERE user_password IS NOT NULL - AND user_password != '' - LIMIT 3 - `); - console.log("👥 다른 사용자 비밀번호 정보:", otherUsersResult.rows); - } catch (error) { - console.error("❌ 오류 발생:", error); - } finally { - await client.end(); - } -} - -checkActualPassword(); diff --git a/backend-node/check-password.js b/backend-node/check-password.js deleted file mode 100644 index 2b9952e0..00000000 --- a/backend-node/check-password.js +++ /dev/null @@ -1,36 +0,0 @@ -const { Client } = require("pg"); -require("dotenv/config"); - -async function checkPasswordField() { - const client = new Client({ - connectionString: process.env.DATABASE_URL, - }); - - try { - await client.connect(); - console.log("✅ 데이터베이스 연결 성공"); - - // user_info 테이블의 컬럼 정보 확인 - const columnsResult = await client.query(` - SELECT column_name, data_type, is_nullable - FROM information_schema.columns - WHERE table_name = 'user_info' - ORDER BY ordinal_position - `); - console.log("📋 user_info 테이블 컬럼:", columnsResult.rows); - - // 비밀번호 관련 컬럼 확인 - const passwordResult = await client.query(` - SELECT user_id, user_name, user_password, password, status - FROM user_info - WHERE user_id = 'kkh' - `); - console.log("🔐 사용자 비밀번호 정보:", passwordResult.rows); - } catch (error) { - console.error("❌ 오류 발생:", error); - } finally { - await client.end(); - } -} - -checkPasswordField(); diff --git a/backend-node/clean-screen-tables.js b/backend-node/clean-screen-tables.js deleted file mode 100644 index 61228f8d..00000000 --- a/backend-node/clean-screen-tables.js +++ /dev/null @@ -1,36 +0,0 @@ -const { PrismaClient } = require("@prisma/client"); - -const prisma = new PrismaClient(); - -async function cleanScreenTables() { - try { - console.log("🧹 기존 화면관리 테이블들을 정리합니다..."); - - // 기존 테이블들을 순서대로 삭제 (외래키 제약조건 때문에 순서 중요) - await prisma.$executeRaw`DROP VIEW IF EXISTS v_screen_definitions_with_auth CASCADE`; - console.log("✅ 뷰 삭제 완료"); - - await prisma.$executeRaw`DROP TABLE IF EXISTS screen_menu_assignments CASCADE`; - console.log("✅ screen_menu_assignments 테이블 삭제 완료"); - - await prisma.$executeRaw`DROP TABLE IF EXISTS screen_widgets CASCADE`; - console.log("✅ screen_widgets 테이블 삭제 완료"); - - await prisma.$executeRaw`DROP TABLE IF EXISTS screen_layouts CASCADE`; - console.log("✅ screen_layouts 테이블 삭제 완료"); - - await prisma.$executeRaw`DROP TABLE IF EXISTS screen_templates CASCADE`; - console.log("✅ screen_templates 테이블 삭제 완료"); - - await prisma.$executeRaw`DROP TABLE IF EXISTS screen_definitions CASCADE`; - console.log("✅ screen_definitions 테이블 삭제 완료"); - - console.log("🎉 모든 화면관리 테이블 정리 완료!"); - } catch (error) { - console.error("❌ 테이블 정리 중 오류 발생:", error); - } finally { - await prisma.$disconnect(); - } -} - -cleanScreenTables(); diff --git a/backend-node/create-test-user.js b/backend-node/create-test-user.js deleted file mode 100644 index 8a01766f..00000000 --- a/backend-node/create-test-user.js +++ /dev/null @@ -1,82 +0,0 @@ -const { Client } = require("pg"); -require("dotenv/config"); - -async function createTestUser() { - const client = new Client({ - connectionString: process.env.DATABASE_URL, - }); - - try { - await client.connect(); - console.log("✅ 데이터베이스 연결 성공"); - - // 테스트용 사용자 생성 (MD5 해시: admin123) - const testUser = { - user_id: "admin", - user_name: "테스트 관리자", - user_password: "f21b1ce8b08dc955bd4afff71b3db1fc", // admin123의 MD5 해시 - status: "active", - company_code: "ILSHIN", - data_type: "PLM", - }; - - // 기존 사용자 확인 - const existingUser = await client.query( - "SELECT user_id FROM user_info WHERE user_id = $1", - [testUser.user_id] - ); - - if (existingUser.rows.length > 0) { - console.log("⚠️ 테스트 사용자가 이미 존재합니다:", testUser.user_id); - - // 기존 사용자 정보 업데이트 - await client.query( - ` - UPDATE user_info - SET user_name = $1, user_password = $2, status = $3 - WHERE user_id = $4 - `, - [ - testUser.user_name, - testUser.user_password, - testUser.status, - testUser.user_id, - ] - ); - - console.log("✅ 테스트 사용자 정보 업데이트 완료"); - } else { - // 새 사용자 생성 - await client.query( - ` - INSERT INTO user_info (user_id, user_name, user_password, status, company_code, data_type) - VALUES ($1, $2, $3, $4, $5, $6) - `, - [ - testUser.user_id, - testUser.user_name, - testUser.user_password, - testUser.status, - testUser.company_code, - testUser.data_type, - ] - ); - - console.log("✅ 테스트 사용자 생성 완료"); - } - - // 생성된 사용자 확인 - const createdUser = await client.query( - "SELECT user_id, user_name, status FROM user_info WHERE user_id = $1", - [testUser.user_id] - ); - - console.log("👤 생성된 사용자:", createdUser.rows[0]); - } catch (error) { - console.error("❌ 오류 발생:", error); - } finally { - await client.end(); - } -} - -createTestUser(); diff --git a/backend-node/package.json b/backend-node/package.json index 9d892e3f..a0314e68 100644 --- a/backend-node/package.json +++ b/backend-node/package.json @@ -11,23 +11,18 @@ "test:watch": "jest --watch", "lint": "eslint src/ --ext .ts", "lint:fix": "eslint src/ --ext .ts --fix", - "format": "prettier --write src/", - "prisma:generate": "prisma generate", - "prisma:migrate": "prisma migrate dev", - "prisma:studio": "prisma studio", - "prisma:seed": "prisma db seed" + "format": "prettier --write src/" }, "keywords": [ "plm", "nodejs", "typescript", "express", - "prisma" + "postgresql" ], "author": "", "license": "ISC", "dependencies": { - "@prisma/client": "^6.16.2", "@types/mssql": "^9.1.8", "axios": "^1.11.0", "bcryptjs": "^2.4.3", @@ -72,7 +67,6 @@ "jest": "^29.7.0", "nodemon": "^3.1.10", "prettier": "^3.1.0", - "prisma": "^6.16.2", "supertest": "^6.3.4", "ts-jest": "^29.1.1", "ts-node": "^10.9.2", diff --git a/backend-node/prisma/migrations/migration_lock.toml b/backend-node/prisma/migrations/migration_lock.toml deleted file mode 100644 index fbffa92c..00000000 --- a/backend-node/prisma/migrations/migration_lock.toml +++ /dev/null @@ -1,3 +0,0 @@ -# Please do not edit this file manually -# It should be added in your version-control system (i.e. Git) -provider = "postgresql" \ No newline at end of file diff --git a/backend-node/prisma/schema.prisma b/backend-node/prisma/schema.prisma deleted file mode 100644 index 7cd671d2..00000000 --- a/backend-node/prisma/schema.prisma +++ /dev/null @@ -1,4611 +0,0 @@ -generator client { - provider = "prisma-client-js" - binaryTargets = ["native", "linux-arm64-openssl-3.0.x"] -} - -datasource db { - provider = "postgresql" - url = env("DATABASE_URL") -} - -model dynamic_form_data { - id Int @id @default(autoincrement()) - screen_id Int - table_name String @db.VarChar(100) - form_data Json - created_at DateTime? @default(now()) @db.Timestamp(6) - updated_at DateTime? @default(now()) @updatedAt @db.Timestamp(6) - created_by String @db.VarChar(50) - updated_by String @db.VarChar(50) - company_code String @db.VarChar(20) -} - -model external_call_configs { - id Int @id @default(autoincrement()) - config_name String @db.VarChar(100) - call_type String @db.VarChar(20) - api_type String? @db.VarChar(20) - config_data Json - description String? - is_active String? @default("Y") @db.Char(1) - created_by String? @db.VarChar(50) - updated_by String? @db.VarChar(50) - company_code String @default("*") @db.VarChar(20) - created_date DateTime? @default(now()) @db.Timestamp(6) - updated_date DateTime? @default(now()) @updatedAt @db.Timestamp(6) -} - -model db_type_categories { - type_code String @id @db.VarChar(20) - display_name String @db.VarChar(50) - icon String? @db.VarChar(50) - color String? @db.VarChar(20) - sort_order Int? @default(0) - is_active Boolean @default(true) - created_at DateTime @default(now()) @db.Timestamp(6) - updated_at DateTime @default(now()) @updatedAt @db.Timestamp(6) - - // 관계 설정 - external_db_connections external_db_connections[] -} - -model external_db_connections { - id Int @id @default(autoincrement()) - connection_name String @db.VarChar(100) - description String? - db_type String @db.VarChar(20) - host String @db.VarChar(255) - port Int - database_name String @db.VarChar(100) - username String @db.VarChar(100) - password String - connection_timeout Int? @default(30) - query_timeout Int? @default(60) - max_connections Int? @default(10) - ssl_enabled String? @default("N") @db.Char(1) - ssl_cert_path String? @db.VarChar(500) - connection_options Json? - company_code String? @default("*") @db.VarChar(20) - is_active String? @default("Y") @db.Char(1) - created_date DateTime? @default(now()) @db.Timestamp(6) - created_by String? @db.VarChar(50) - updated_date DateTime? @default(now()) @updatedAt @db.Timestamp(6) - updated_by String? @db.VarChar(50) - - // 관계 - db_type_category db_type_categories? @relation(fields: [db_type], references: [type_code]) - collection_configs data_collection_configs[] - - @@index([connection_name], map: "idx_external_db_connections_name") - @@index([db_type], map: "idx_external_db_connections_db_type") -} - -model batch_configs { - id Int @id @default(autoincrement()) - batch_name String @db.VarChar(100) - description String? - cron_schedule String @db.VarChar(50) - is_active String? @default("Y") @db.Char(1) - company_code String? @default("*") @db.VarChar(20) - created_date DateTime? @default(now()) @db.Timestamp(6) - created_by String? @db.VarChar(50) - updated_date DateTime? @default(now()) @updatedAt @db.Timestamp(6) - updated_by String? @db.VarChar(50) - - // 관계 설정 - batch_mappings batch_mappings[] - execution_logs batch_execution_logs[] - - @@index([batch_name], map: "idx_batch_configs_name") - @@index([is_active], map: "idx_batch_configs_active") -} - -model batch_mappings { - id Int @id @default(autoincrement()) - batch_config_id Int - from_connection_type String @db.VarChar(20) - from_connection_id Int? - from_table_name String @db.VarChar(100) - from_column_name String @db.VarChar(100) - from_column_type String? @db.VarChar(50) - from_api_url String? @db.VarChar(500) - from_api_key String? @db.VarChar(200) - from_api_method String? @db.VarChar(10) - from_api_param_type String? @db.VarChar(10) // 'url' 또는 'query' - from_api_param_name String? @db.VarChar(100) // 파라미터명 - from_api_param_value String? @db.VarChar(500) // 파라미터 값 또는 템플릿 - from_api_param_source String? @db.VarChar(10) // 'static' 또는 'dynamic' - to_connection_type String @db.VarChar(20) - to_connection_id Int? - to_table_name String @db.VarChar(100) - to_column_name String @db.VarChar(100) - to_column_type String? @db.VarChar(50) - to_api_url String? @db.VarChar(500) - to_api_key String? @db.VarChar(200) - to_api_method String? @db.VarChar(10) - to_api_body String? @db.Text - mapping_order Int? @default(1) - created_date DateTime? @default(now()) @db.Timestamp(6) - created_by String? @db.VarChar(50) - - // 관계 설정 - batch_config batch_configs @relation(fields: [batch_config_id], references: [id], onDelete: Cascade) - - @@index([batch_config_id], map: "idx_batch_mappings_config") - @@index([from_connection_type, from_connection_id], map: "idx_batch_mappings_from") - @@index([to_connection_type, to_connection_id], map: "idx_batch_mappings_to") - @@index([from_connection_type, from_api_url], map: "idx_batch_mappings_from_api") - @@index([to_connection_type, to_api_url], map: "idx_batch_mappings_to_api") -} - -model batch_execution_logs { - id Int @id @default(autoincrement()) - batch_config_id Int - execution_status String @db.VarChar(20) - start_time DateTime @default(now()) @db.Timestamp(6) - end_time DateTime? @db.Timestamp(6) - duration_ms Int? - total_records Int? @default(0) - success_records Int? @default(0) - failed_records Int? @default(0) - error_message String? - error_details String? - server_name String? @db.VarChar(100) - process_id String? @db.VarChar(50) - - // 관계 설정 - batch_config batch_configs @relation(fields: [batch_config_id], references: [id], onDelete: Cascade) - - @@index([batch_config_id], map: "idx_batch_execution_logs_config") - @@index([execution_status], map: "idx_batch_execution_logs_status") - @@index([start_time], map: "idx_batch_execution_logs_start_time") -} - -model admin_supply_mng { - objid Decimal @id @default(0) @db.Decimal - supply_code String? @default("NULL::character varying") @db.VarChar(100) - supply_name String? @default("NULL::character varying") @db.VarChar(100) - reg_no String? @default("NULL::character varying") @db.VarChar(100) - supply_address String? @default("NULL::character varying") @db.VarChar(500) - supply_busname String? @default("NULL::character varying") @db.VarChar(100) - supply_stockname String? @default("NULL::character varying") @db.VarChar(100) - supply_tel_no String? @default("NULL::character varying") @db.VarChar - supply_fax_no String? @default("NULL::character varying") @db.VarChar - charge_user_name String? @default("NULL::character varying") @db.VarChar - payment_method String? @db.VarChar - reg_id String? @default("NULL::character varying") @db.VarChar - reg_date DateTime? @db.Timestamp(6) - status String? @default("NULL::character varying") @db.VarChar - area_cd String? @default("NULL::character varying") @db.VarChar - bus_reg_no String? @default("NULL::character varying") @db.VarChar - office_no String? @default("NULL::character varying") @db.VarChar - email String? @default("NULL::character varying") @db.VarChar - account_code String? @db.VarChar - remark String? @db.VarChar - account_bank String? @db.VarChar - account_number String? @db.VarChar - account_user_name String? @db.VarChar - employee_name String? @db.VarChar - employee_position String? @db.VarChar - employee_number String? @db.VarChar - employee_email Unsupported("xid")? - david String? @db.VarChar(50) -} - -model admin_supply_mng_history { - objid Decimal @id @db.Decimal - target_objid Decimal @db.Decimal - supply_code String? @db.VarChar(100) - supply_name String? @db.VarChar(100) - reg_no String? @db.VarChar(100) - supply_address String? @db.VarChar(500) - supply_busname String? @db.VarChar(100) - supply_stockname String? @db.VarChar(100) - supply_tel_no String? @db.VarChar(30) - supply_fax_no String? @db.VarChar(30) - charge_user_name String? @db.VarChar(100) - payment_method String? @db.VarChar(100) - writer String? @db.VarChar(100) - regdate DateTime? @db.Timestamp(6) - status String? @db.VarChar(32) -} - -model approval { - objid Decimal @default(0) @db.Decimal - target_objid Decimal? @db.Decimal - target_type String? @db.VarChar(128) - approval_seq String? @db.VarChar(64) - regdate DateTime? @db.Timestamp(6) - complete_date DateTime? @db.Timestamp(6) - status String? @db.VarChar(32) - system_type String? @db.VarChar(32) - - @@index([objid]) - @@index([target_type, target_objid], map: "approval_target_type_idx") - @@ignore -} - -model approval_kind { - target_type String @id @db.VarChar - target_name String? @db.VarChar - regdate DateTime? @db.Timestamp(6) - status String? @db.VarChar - - @@index([status]) -} - -/// This model contains an expression index which requires additional setup for migrations. Visit https://pris.ly/d/expression-indexes for more info. -model approval_target { - objid Decimal @default(0) @db.Decimal - master_target_objid Decimal @default(0) @db.Decimal - target_objid Decimal @default(0) @db.Decimal - approval_objid Decimal @default(0) @db.Decimal - regdate DateTime? @db.Timestamp(6) - writer String? @db.VarChar(64) - - @@index([approval_objid]) - @@index([approval_objid, target_objid], map: "approval_target_approval_objid_idx2") - @@index([target_objid]) - @@ignore -} - -model arrival_plan { - objid String @id @db.VarChar - parent_objid String? @db.VarChar - order_part_objid String? @db.VarChar - part_objid String? @db.VarChar - arrival_plan_date String? @db.VarChar - re_arrival_plan_date String? @db.VarChar - arrival_qty String? @db.VarChar - receipt_qty String? @db.VarChar - genuine_qty String? @db.VarChar - receipt_date String? @db.VarChar - inspection_date String? @db.VarChar - location String? @db.VarChar - error_qty String? @db.VarChar - error_reason String? @db.VarChar - attribution String? @db.VarChar - status String? @db.VarChar - assembly_status String? @db.VarChar - writer String? @db.VarChar - group_seq String? @db.VarChar - seq String? @db.VarChar - defect_content String? @db.VarChar - defect_action String? @db.VarChar - defect_note String? @db.VarChar - defect_action_date String? @db.VarChar - defect_action_title String? @db.VarChar - inventory_status String? @db.VarChar - sub_location String? @db.VarChar - receiver_id String? @db.VarChar - - @@index([order_part_objid]) - @@index([parent_objid]) - @@index([part_objid]) -} - -model as_mng { - objid Int @id - as_no String? @db.VarChar - custcd String? @db.VarChar - company_name String? @db.VarChar - product_code String? @db.VarChar - year String? @db.VarChar - release_date String? @db.VarChar - car_number String? @db.VarChar - paid_free String? @db.VarChar - phone String? @db.VarChar - plan_date String? @db.VarChar - rec_type String? @db.VarChar - problem_contents String? - action_contents String? - start_date String? @db.VarChar - end_date String? @db.VarChar - part_price String? @db.VarChar - as_cost String? @db.VarChar - payment_type String? @db.VarChar - req_user String? @db.VarChar - req_date String? @db.VarChar - as_user String? @db.VarChar - as_date String? @db.VarChar - free_contents String? @db.VarChar - writer String? @db.VarChar - status_cd String? @db.VarChar - workingtime String? @db.VarChar - wage String? @db.VarChar - reg_date DateTime? @db.Timestamp(6) - total_price String? @db.VarChar - price1 String? @db.VarChar - price2 String? @db.VarChar - price3 String? @db.VarChar - warranty_code String? @db.VarChar - maintenance String? @db.VarChar - sn_no String? @db.VarChar - product_name String? @db.VarChar -} - -model as_part_mng { - objid Int @id - target_objid Int? - part_objid Int? - part_no String? @db.VarChar - part_name String? @db.VarChar - spec String? @db.VarChar - qty String? @db.VarChar - price String? @db.VarChar - sup_price String? @db.VarChar - note String? @db.VarChar -} - -model assembly_cost { - objid Decimal @id @db.Decimal - target_objid Decimal? @db.Decimal - cav Decimal? @db.Decimal - assy_labor_ct Decimal? @db.Decimal - assy_expense_ct Decimal? @db.Decimal - labor_wage_rate Decimal? @db.Decimal - expense_wage_rate Decimal? @db.Decimal - setup_time Decimal? @db.Decimal - setup_person Decimal? @db.Decimal - lot Decimal? @db.Decimal - et Decimal? @db.Decimal - ind_exp Decimal? @db.Decimal - assy_labor_price Decimal? @db.Decimal - assy_expense_price Decimal? @db.Decimal - regdate DateTime? @db.Timestamp(6) -} - -model assembly_wbs_task { - objid String @id @db.VarChar - part_objid String @db.VarChar - parent_objid String @db.VarChar - receive_date String? @db.VarChar - receive_qty String? @db.VarChar - receive_user_id String? @db.VarChar - assembly_user_id String? @db.VarChar - assembly_date String? @db.VarChar - insourcing String? @db.VarChar - outsourcing String? @db.VarChar - writer String? @db.VarChar - regdate DateTime? @db.Timestamp(6) - transfer_user_id String? @db.VarChar - bom_qty_child_objid String? @db.VarChar - - @@index([parent_objid]) -} - -model attach_file_info { - objid Decimal @id @default(0) @db.Decimal - target_objid String? @db.VarChar - saved_file_name String? @default("NULL::character varying") @db.VarChar(128) - real_file_name String? @default("NULL::character varying") @db.VarChar(128) - doc_type String? @default("NULL::character varying") @db.VarChar(128) - doc_type_name String? @default("NULL::character varying") @db.VarChar(128) - file_size Decimal? @db.Decimal - file_ext String? @default("NULL::character varying") @db.VarChar(32) - file_path String? @default("NULL::character varying") @db.VarChar(512) - writer String? @default("NULL::character varying") @db.VarChar(32) - regdate DateTime? @db.Timestamp(6) - status String? @default("NULL::character varying") @db.VarChar(32) - parent_target_objid String? @db.VarChar - company_code String? @default("default") @db.VarChar(32) - - @@index([doc_type, objid], map: "attach_file_info_doc_type_idx") - @@index([target_objid]) - @@index([company_code]) - @@index([company_code, doc_type], map: "attach_file_info_company_doc_type_idx") - @@index([company_code, target_objid], map: "attach_file_info_company_target_idx") -} - -model authority_master { - objid Decimal @id @default(0) @db.Decimal - auth_name String? @default("NULL::character varying") @db.VarChar(256) - auth_code String? @default("NULL::character varying") @db.VarChar(64) - writer String? @default("NULL::character varying") @db.VarChar(32) - regdate DateTime? @db.Timestamp(6) - status String? @default("NULL::character varying") @db.VarChar(32) - sub_users authority_sub_user[] -} - -model authority_master_history { - objid Decimal @id @db.Decimal - parent_objid Decimal @db.Decimal - parent_name String? @db.VarChar(64) - parent_code String? @db.VarChar(64) - user_id String? @db.VarChar(64) - active String? @db.VarChar(64) - history_type String? @db.VarChar(64) - writer String? @db.VarChar(64) - reg_date DateTime? @db.Timestamp(6) -} - -model authority_sub_user { - objid Decimal @id @default(0) @db.Decimal - master_objid Decimal? @db.Decimal - user_id String? @default("NULL::character varying") @db.VarChar(64) - writer String? @default("NULL::character varying") @db.VarChar(64) - regdate DateTime? @db.Timestamp(6) - authority_master authority_master? @relation(fields: [master_objid], references: [objid]) - - @@index([master_objid]) - @@index([user_id]) - @@index([master_objid, user_id]) -} - -model board { - objid String @id @db.VarChar - system_type String? @db.VarChar(16) - board_type String? @db.VarChar(16) - category String? @db.VarChar(32) - req_category String? @db.VarChar(16) - res_category String? @db.VarChar(16) - req_contents String? @db.VarChar(4000) - res_contents String? @db.VarChar(4000) - title String? @db.VarChar(256) - res_regdate DateTime? @db.Timestamp(6) - res_writer String? @db.VarChar(32) - important String? @db.VarChar(8) - req_writer String? @db.VarChar(32) - req_regdate DateTime? @db.Timestamp(6) - plan_date String? @db.VarChar - act_date String? @db.VarChar - qna_no String? @db.VarChar - res_state String? @db.VarChar - username String? @db.VarChar(50) - userid String? @db.VarChar(50) - userdeptname String? @db.VarChar(50) - companyname String? @db.VarChar(50) - email String? @db.VarChar(50) -} - -model bom_part_qty { - bom_report_objid String @db.VarChar(64) - objid String @id @db.VarChar(64) - parent_objid String? @default("NULL::character varying") @db.VarChar(64) - child_objid String? @default("NULL::character varying") @db.VarChar(64) - parent_part_no String? @default("NULL::character varying") @db.VarChar(64) - part_no String? @default("NULL::character varying") @db.VarChar(64) - qty String? @db.VarChar - regdate DateTime? @db.Timestamp(6) - seq Int? - status String? @db.VarChar - deploy_date String? @db.VarChar - deploy_user_id String? @db.VarChar - edit_date String? @db.VarChar - writer String? @db.VarChar - qty_temp String? @db.VarChar - last_part_objid String? @db.VarChar - editer String? @db.VarChar - - @@index([bom_report_objid, last_part_objid, part_no], map: "bom_part_qty_bom_report_objid2_idx") - @@index([bom_report_objid]) - @@index([last_part_objid]) - @@index([parent_objid]) -} - -model car_distribute_member { - objid Decimal @db.Decimal - car_objid Decimal @db.Decimal - member_sabun String? @db.VarChar(32) - member_user_id String @db.VarChar(32) - regdate DateTime? @db.Timestamp(6) - status String? @db.VarChar(32) - is_tft_leader Decimal? @db.Decimal - is_proj_leader Decimal? @db.Decimal - - @@id([car_objid, member_user_id]) -} - -model car_milestone_mng { - objid Decimal @db.Decimal - car_objid Decimal @db.Decimal - milestone_objid Decimal @db.Decimal - milestone_date String? @db.VarChar(32) - writer String? @db.VarChar(32) - regdate DateTime? @db.Timestamp(6) - status String? @db.VarChar(32) - - @@id([milestone_objid, car_objid]) -} - -model car_mng { - objid Decimal @id @db.Decimal - car_code String? @db.VarChar(32) - model_code String? @db.VarChar(32) - car_name String? @db.VarChar(64) - description String? @db.VarChar(1024) - grade_objid String? @db.VarChar(1024) - oem_objid Decimal? @db.Decimal - writer String? @db.VarChar(32) - regdate DateTime? @db.Timestamp(6) - status String? @db.VarChar(32) -} - -model chartmgmt { - title String? @db.VarChar(20) - regdate DateTime? @db.Date - objid String @id @db.VarChar -} - -model check_report_mng { - objid Decimal @id @default(0) @db.Decimal - parent_objid Decimal? @default(0) @db.Decimal - report_mng_no String? @db.VarChar(50) - customer String? @db.VarChar(50) - makeing_team String? @db.VarChar(50) - check_date DateTime? @db.Timestamp(6) - span_drawing String? @db.VarChar(20) - span_left String? @db.VarChar(20) - span_left_error String? @db.VarChar(20) - span_left_check_result String? @db.VarChar(10) - span_right String? @db.VarChar(20) - span_right_error String? @db.VarChar(20) - span_right_check_result String? @db.VarChar(10) - diagonal_left String? @db.VarChar(20) - diagonal_right String? @db.VarChar(20) - diagonal_check_result String? @db.VarChar(10) - span_check_user String? @db.VarChar(30) - saddle_1 String? @db.VarChar(20) - saddle_2 String? @db.VarChar(20) - saddle_3 String? @db.VarChar(20) - saddle_4 String? @db.VarChar(20) - saddle_5 String? @db.VarChar(20) - saddle_6 String? @db.VarChar(20) - saddle_7 String? @db.VarChar(20) - saddle_8 String? @db.VarChar(20) - saddle_wheel String? @db.VarChar(20) - saddle_wheel_base String? @db.VarChar(20) - saddle_check_result String? @db.VarChar(20) - saddle_check_user String? @db.VarChar(20) - welding_painting_contents String? @db.VarChar(500) - welding_painting_check_result String? @db.VarChar(20) - welding_painting_check_user String? @db.VarChar(20) - regdate DateTime? @db.Timestamp(6) - editdate DateTime? @db.Timestamp(6) - status String? @db.VarChar(50) - writer String? @db.VarChar(20) -} - -model column_labels { - id Int @id @default(autoincrement()) - table_name String? @db.VarChar(100) - column_name String? @db.VarChar(100) - column_label String? @db.VarChar(200) - web_type String? @db.VarChar(50) - input_type String? @default("direct") @db.VarChar(20) - detail_settings String? - description String? - display_order Int? @default(0) - is_visible Boolean? @default(true) - code_category String? @db.VarChar(100) - code_value String? @db.VarChar(100) - reference_table String? @db.VarChar(100) - reference_column String? @db.VarChar(100) - created_date DateTime? @default(now()) @db.Timestamp(6) - updated_date DateTime? @default(now()) @db.Timestamp(6) - display_column String? @db.VarChar(100) - table_labels table_labels? @relation(fields: [table_name], references: [table_name], onDelete: NoAction, onUpdate: NoAction) - - @@unique([table_name, column_name]) -} - -model comm_code { - objid Decimal @id(map: "objid") @default(0) @db.Decimal - code_id String? @default("null::character varying") @db.VarChar(32) - parent_code_id String? @default("null::character varying") @db.VarChar(32) - code_name String? @default("null::character varying") @db.VarChar(200) - id String? @default("null::character varying") @db.VarChar(100) - code_cd String? @default("null::character varying") @db.VarChar(100) - ext_val String? @default("null::character varying") @db.VarChar(10) - writer String? @default("null::character varying") @db.VarChar(32) - regdate DateTime? @db.Timestamp(6) - status String? @default("null::character varying") @db.VarChar(32) - - @@index([code_id]) -} - -model comm_code_history { - objid Decimal @id @db.Decimal - target_objid Decimal @db.Decimal - code_id String? @default("null::character varying") @db.VarChar(32) - parent_code_id String? @default("null::character varying") @db.VarChar(32) - code_name String? @default("null::character varying") @db.VarChar(200) - id String? @default("null::character varying") @db.VarChar(100) - code_cd String? @default("null::character varying") @db.VarChar(100) - ext_val String? @default("null::character varying") @db.VarChar(10) - writer String? @default("null::character varying") @db.VarChar(32) - regdate DateTime? @db.Timestamp(6) - status String? @default("null::character varying") @db.VarChar(32) -} - -model comm_exchange_rate { - yyyy_mm String @db.VarChar - regdate DateTime? @db.Timestamp(6) - editdate DateTime? @db.Timestamp(6) - writer String? @db.VarChar(64) - editer String? @db.VarChar(64) - cost_usd String? @db.VarChar - cost_eu String? @db.VarChar - cost_japan String? @db.VarChar - cost_china String? @db.VarChar - cost_vietnam String? @db.VarChar - cost_rub String? @db.VarChar - cost_inr String? @db.VarChar - api_date DateTime? @db.Timestamp(6) - yyyy_mm_dd String? @db.VarChar - cost_thb String? @db.VarChar - cost_hkd String? @db.VarChar - - @@unique([yyyy_mm, yyyy_mm_dd], map: "comm_exchange_rate_yyyy_mm_idx") - @@ignore -} - -model comments { - user_name String? @default("NULL::character varying") @db.VarChar(30) - user_id String? @default("NULL::character varying") @db.VarChar(30) - comment_objid String? @default("NULL::character varying") @db.VarChar(30) - comment_parents String? @default("NULL::character varying") @db.VarChar(30) - regdate DateTime? @db.Timestamp(6) - post_objid String? @default("NULL::character varying") @db.VarChar(30) - objid String @id @default("NULL::character varying") @db.VarChar(20) - comment_layer String? @default("NULL::character varying") @db.VarChar(30) - contents String? @default("NULL::character varying") @db.VarChar(4000) - check_view String? @default("NULL::character varying") @db.VarChar(20) -} - -model company_code_sequence { - sequence_name String @id @db.VarChar(50) - current_value Int @default(0) -} - -model company_mng { - company_code String @id(map: "pk_company_mng") @db.VarChar(32) - company_name String? @db.VarChar(64) - writer String? @db.VarChar(32) - regdate DateTime? @db.Timestamp(6) - status String? @db.VarChar(32) - menus menu_info[] -} - -model contract_mgmt { - objid String @id @db.VarChar - category_cd String? @db.VarChar - customer_objid String? @db.VarChar - product String? @db.VarChar - customer_project_name String? @db.VarChar - status_cd String? @db.VarChar - due_date String? @db.VarChar - location String? @db.VarChar - setup String? @db.VarChar - facility String? @db.VarChar - facility_qty String? @db.VarChar - facility_type String? @db.VarChar - facility_depth String? @db.VarChar - production_no String? @db.VarChar - bus_cal_cd String? @db.VarChar - category1_cd String? @db.VarChar - chg_user_id String? @db.VarChar - plan_date String? @db.VarChar - complete_date String? @db.VarChar - result_cd String? @db.VarChar - project_no String? @db.VarChar - pm_user_id String? @db.VarChar - contract_price String? @db.VarChar - regdate DateTime? @db.Timestamp(6) - writer String? @db.VarChar - contract_no String? @db.VarChar - customer_equip_name String? @db.VarChar - req_del_date String? @db.VarChar - contract_del_date String? @db.VarChar - contract_company String? @db.VarChar - contract_date String? @db.VarChar - po_no String? @db.VarChar - manufacture_plant String? @db.VarChar - contract_result String? @db.VarChar - project_name String? @db.VarChar - spec_user_id String? @db.VarChar - spec_plan_date String? @db.VarChar - spec_comp_date String? @db.VarChar - spec_result_cd String? @db.VarChar - est_plan_date String? @db.VarChar - est_user_id String? @db.VarChar - est_comp_date String? @db.VarChar - est_result_cd String? @db.VarChar - area_cd String? @db.VarChar - contract_price_currency String? @db.VarChar - contract_currency String? @db.VarChar - customer_production_no String? @db.VarChar - target_project_no String? @db.VarChar - mechanical_type String? @db.VarChar - target_project_no_direct String? @db.VarChar - overhaul_order String? @db.VarChar -} - -model contract_mgmt_option { - objid Int @id @default(autoincrement()) - contract_objid Int - option_objid Int? - option_qty Int? - price Int? - note String? @db.VarChar - - @@index([contract_objid]) - @@index([option_objid]) -} - -model counselingmgmt { - objid String @id @db.VarChar - reg_date String? @db.VarChar - trans_type String? @db.VarChar - counseling_category String? @db.VarChar - counseling_type String? @db.VarChar - counseling_area1 String? @db.VarChar - counseling_area2 String? @db.VarChar - zipcode String? @db.VarChar - address String? @db.VarChar - client_name String? @db.VarChar - phone String? @db.VarChar - customer_name String? @db.VarChar - grade String? @db.VarChar - industry String? @db.VarChar - equipment_yn String? @db.VarChar - qty String? @db.VarChar - rep_model String? @db.VarChar - note String? - reg_user String? @db.VarChar - count String? @default("0") @db.VarChar - parent_seq String? @db.VarChar -} - -model customer_service_mgmt { - objid String @id @db.VarChar - service_no String? @db.VarChar - product String? @db.VarChar - contract_objid String? @db.VarChar - cs_category String? @db.VarChar - warranty String? @db.VarChar - manager_id String? @db.VarChar - act_date String? @db.VarChar - category_h String? @db.VarChar - category_m String? @db.VarChar - category_l String? @db.VarChar - title String? @db.VarChar - before_contents String? - after_contents String? - writer String? @db.VarChar - regdate DateTime? @db.Timestamp(6) - status String? @db.VarChar - total_sup_price String? @db.VarChar - total_work_day String? @db.VarChar - total_work_person String? @db.VarChar - total_work_day_m String? @db.VarChar - total_labor_cost String? @db.VarChar - total_expenses String? @db.VarChar -} - -model customer_service_part { - objid String @id @db.VarChar - parent_objid String? @db.VarChar - part_no String? @db.VarChar - part_name String? @db.VarChar - spec String? @db.VarChar - qty String? @db.VarChar - cur_qty String? @db.VarChar - price String? @db.VarChar - sup_price String? @db.VarChar -} - -model customer_service_workingtime { - objid String @id @db.VarChar - parent_objid String? @db.VarChar - supply_objid String? @db.VarChar - form_date String? @db.VarChar - to_date String? @db.VarChar - work_day String? @db.VarChar - work_person String? @db.VarChar - work_day_m String? @db.VarChar - labor_cost String? @db.VarChar - expenses String? @db.VarChar -} - -model delivery_history { - objid String @id @db.VarChar - part_objid String? @db.VarChar - ld_part_objid String? @db.VarChar - purchase_order_part_objid String? @db.VarChar - order_qty String? @db.VarChar - delivery_qty String? @db.VarChar - delivery_place_cd String? @db.VarChar - delivery_date String? @db.VarChar - remark String? @db.VarChar - delivery_price String? @db.VarChar - non_arrival_qty String? @db.VarChar - delivery_mng_no String? @db.VarChar - defect_qty String? @db.VarChar - writer String? @db.VarChar - regdate DateTime? @db.Timestamp(6) - delivery_plan_date String? @db.VarChar - inspect_date String? @db.VarChar - defect_resp String? @db.VarChar - defect_reason String? @db.VarChar - result String? @db.VarChar - defect_content String? @db.VarChar - defect_action String? @db.VarChar - defect_note String? @db.VarChar - defect_action_date String? @db.VarChar - defect_action_title String? @db.VarChar - modwriter String? @db.VarChar - moddate DateTime? @db.Timestamp(6) - - @@index([part_objid]) -} - -model delivery_history_defect { - objid String @id @db.VarChar - purchase_order_part_objid String? @db.VarChar - defect_qty String? @db.VarChar - defect_reason_cd String? @db.VarChar - writer String? @db.VarChar - regdate DateTime? @db.Timestamp(6) -} - -model delivery_part_price { - objid String @id(map: "delivery_part_cost") @db.VarChar - purchase_order_part_objid String? @db.VarChar - part_objid String? @db.VarChar - ld_part_objid String? @db.VarChar - price String? @default("0") @db.VarChar - price1 String? @default("0") @db.VarChar - price2 String? @default("0") @db.VarChar - price3 String? @default("0") @db.VarChar - price4 String? @default("0") @db.VarChar - price_sum String? @db.VarChar - writer String? @db.VarChar - regdate DateTime? @db.Timestamp(6) -} - -model dept_info { - dept_code String @id(map: "dept_code") @db.VarChar(100) - parent_dept_code String? @db.VarChar(100) - dept_name String? @db.VarChar(200) - master_sabun String? @db.VarChar(100) - master_user_id String? @db.VarChar(100) - location String? @db.VarChar(100) - location_name String? @db.VarChar(100) - regdate DateTime? @db.Timestamp(6) - data_type String? @db.VarChar(64) - status String? @db.VarChar(30) - sales_yn String? @db.VarChar(1) - company_name String? @db.VarChar -} - -model dept_info_history { - objid Decimal @id @db.Decimal - parent_name String? @db.VarChar(64) - parent_code String? @db.VarChar(64) - active String? @db.VarChar(64) - history_type String? @db.VarChar(64) - writer String? @db.VarChar(64) - reg_date DateTime? @db.Timestamp(6) - company_name String? @db.VarChar -} - -model ecr_mng { - objid Int @id - ecr_no String? @db.VarChar(100) - product_objid Int? - upg_no String? @db.VarChar(100) - part_objid Int? - request_cd String? @db.VarChar(100) - title String? @db.VarChar(1000) - writer String? @db.VarChar(100) - status_cd String? @db.VarChar(100) - before_contents String? @db.VarChar(4000) - after_contents String? @db.VarChar(4000) - reg_date DateTime? @db.Timestamp(6) - check_user_id String? @db.VarChar(100) - check_date DateTime? @db.Timestamp(6) -} - -model eo_change_history { - objid Decimal @id @db.Decimal - project_objid String? @db.VarChar(64) - oem_objid String? @db.VarChar(64) - car_objid String? @db.VarChar(64) - product_group_objid String? @db.VarChar(64) - product_objid String? @db.VarChar(64) - part_objid String? @db.VarChar(64) - part_no String? @db.VarChar(64) - eo_no String? @db.VarChar(32) - eo_published_date String? @db.VarChar(32) - eo_apply_date String? @db.VarChar(32) - eo_step String? @db.VarChar(32) - change_contents String? @db.VarChar(1024) - measure_type String? @db.VarChar(32) - measure_date String? @db.VarChar(32) - cvt String? @db.VarChar(32) - set String? @db.VarChar(32) - partner_code String? @db.VarChar(64) - oem_attrition_rate String? @db.VarChar(32) - my_attrition_rate String? @db.VarChar(32) - partner_attrition_rate String? @db.VarChar(32) - partner_estimate_cost String? @db.VarChar(64) - my_cost String? @db.VarChar(64) - oem_contribution_amount String? @db.VarChar(64) - my_contribution_amount String? @db.VarChar(64) - partner_contribution_amount String? @db.VarChar(64) - status String? @db.VarChar(32) - writer String? @db.VarChar(32) - regdate DateTime? @db.Date -} - -model eo_mng { - objid Decimal @id @db.Decimal - eo_gubun String? @default("NULL::character varying") @db.VarChar(100) - ecr_objid String? @default("NULL::character varying") @db.VarChar(100) - product_1 String? @default("NULL::character varying") @db.VarChar(50) - product_2 String? @default("NULL::character varying") @db.VarChar(50) - eo_kind String? @default("NULL::character varying") @db.VarChar(100) - title String? @db.VarChar - request_code String? @default("NULL::character varying") @db.VarChar - period_code String? @db.VarChar - deploy_date DateTime? @db.Timestamp(6) - status String? @db.VarChar(30) - reg_date DateTime? @db.Timestamp(6) - edit_date DateTime? @db.Timestamp(6) - writer String? @db.VarChar(30) - deploy_writer String? @db.VarChar(30) - unit String? @db.VarChar - contents String? @db.VarChar(4000) - eo_no String? @db.VarChar(300) - deploy_dept String? @db.VarChar(1000) -} - -model eo_report { - objid Decimal @id @db.Decimal - data_type String? @db.VarChar(64) - eo_type String? @db.VarChar(64) - ecr_no String? @db.VarChar(64) - change_target String? @db.VarChar(64) - same_apply_target String? @db.VarChar(64) - title String? @db.VarChar(1000) - change_option String? @db.VarChar(100) - apply_point String? @db.VarChar(100) - release_point String? @db.VarChar(100) - change_contents String? @db.VarChar(1000) - status String? @db.VarChar(30) - reg_date DateTime? @db.Timestamp(6) - edit_date DateTime? @db.Timestamp(6) - writer String? @db.VarChar(30) -} - -model estimate_mgmt { - objid Int @id - customer_objid String? @db.VarChar - category_cd String? @db.VarChar - product_group String? @db.VarChar - product String? @default("0") @db.VarChar - product_std String? @db.VarChar - qty String? @db.VarChar - warranty String? @db.VarChar - product_price Int? - other_price Int? - total_price Int? - contract_user_id String? @db.VarChar - contract_date String? @db.VarChar - contract_phone String? @db.VarChar - contract_email String? @db.VarChar - contract_office_no String? @db.VarChar - contract_fax_no String? @db.VarChar - est_release_date String? @db.VarChar - regdate DateTime? @db.Timestamp(6) - writer String? @db.VarChar - estimate_no String? @db.VarChar - contract_product_price Int? - sale String? @db.VarChar - final_total_price Int? - contract_type String? @db.VarChar - note String? @db.VarChar - cus_request_date String? @db.VarChar - delivery_place String? @db.VarChar - product_code String? @db.VarChar - status String? @db.VarChar -} - -model expense_detail { - expense_detail_objid String @default("0") @db.VarChar - expense_master_objid String @default("0") @db.VarChar - exp_sort_cd String @default("") @db.VarChar(20) - exp_subm_cd String @default("") @db.VarChar(20) - exp_subd_cd String @default("") @db.VarChar(20) - card_used String @default("0") @db.VarChar(20) - cash_used String @default("0") @db.VarChar(20) - payment String @default("0") @db.VarChar(20) - - @@ignore -} - -model expense_master { - expense_master_objid String @id @db.VarChar - project_mgmt_objid String @db.VarChar - expense_id String @db.VarChar(20) - bns_start_date String? @default("null::character varying") @db.VarChar(10) - bns_end_date String? @default("null::character varying") @db.VarChar(10) - exp_status_cd String? @default("null::character varying") @db.VarChar(20) - exp_company_cd String? @default("null::character varying") @db.VarChar(20) - exp_area_cd String? @default("null::character varying") @db.VarChar(20) - vehicel_used String? @default("null::character varying") @db.VarChar(100) - bus_users_id String? @default("null::character varying") @db.VarChar(100) - bus_content String? @default("null::character varying") @db.VarChar(1000) - bus_title String? @default("null::character varying") @db.VarChar(1000) - reason String? @default("null::character varying") @db.VarChar(4000) - instructions String? @default("null::character varying") @db.VarChar(4000) - reg_user_id String? @default("null::character varying") @db.VarChar(20) - reg_date String? @default("null::character varying") @db.VarChar(20) - seq Decimal? @db.Decimal - exp_sort_cd String? @default("null::character varying") @db.VarChar(20) - status String? @db.VarChar - payment_date String? @db.VarChar - amount_payment String? @db.VarChar - remark String? @db.VarChar -} - -model external_work_review_info { - objid String @id @db.VarChar(64) - project_objid String? @db.VarChar(64) - bom_report_objid String? @db.VarChar(64) - oem_objid String? @db.VarChar(64) - car_objid String? @db.VarChar(64) - product_group_objid String? @db.VarChar(64) - product_objid String? @db.VarChar(64) - part_no String? @db.VarChar(64) - mold_dev_code String? @db.VarChar(64) - mold_dev_partner_code String? @db.VarChar(64) - part_dev_code String? @db.VarChar(64) - part_dev_partner_code String? @db.VarChar(64) - writer String? @db.VarChar(64) - regdate DateTime? @db.Timestamp(6) -} - -model facility_assembly_plan { - assembly_plan_objid Decimal @unique(map: "assembly_pk") @default(0) @db.Decimal - project_mgmt_objid Decimal @default(0) @db.Decimal - project_no String? @default("null::character varying") @db.VarChar(50) - region_cd String? @default("null::character varying") @db.VarChar(15) - customer_cd String? @default("null::character varying") @db.VarChar(15) - order_title String? @default("null::character varying") @db.VarChar(200) - del_date String? @db.VarChar(8) - production_pm String? @db.VarChar(20) - fir_reg_date String? @db.VarChar(8) - chg_date String? @db.VarChar(8) - chg_cnt String? @db.VarChar(10) - reg_id String? @db.VarChar(20) - reg_date DateTime? @db.Timestamp(6) -} - -model file_down_log { - objid Decimal? @db.Decimal - log_time DateTime? @db.Timestamp(6) - system_name String? @default("null::character varying") @db.VarChar(32) - user_id String? @default("null::character varying") @db.VarChar(64) - file_objid Decimal? @db.Decimal - remote_addr String? @default("null::character varying") @db.VarChar(128) - - @@ignore -} - -model fund_mgmt { - objid String @id @db.VarChar - parent_objid String? @db.VarChar - contract_cost String? @db.VarChar - contract_cost_due_date String? @db.VarChar - contract_cost_result_date String? @db.VarChar - mid_pay_cost1 String? @db.VarChar - mid_pay_cost1_due_date String? @db.VarChar - mid_pay_cost1_result_date String? @db.VarChar - mid_pay_cost2 String? @db.VarChar - mid_pay_cost2_due_date String? @db.VarChar - mid_pay_cost2_result_date String? @db.VarChar - balance_cost String? @db.VarChar - balance_cost_due_date String? @db.VarChar - balance_cost_result_date String? @db.VarChar - status String? @db.VarChar - regdate DateTime? @db.Timestamp(6) - writer String? @db.VarChar - contract_cost_result String? @db.VarChar - mid_pay_cost1_result String? @db.VarChar - mid_pay_cost2_result String? @db.VarChar - balance_cost_result String? @db.VarChar -} - -model inboxtask { - objid Decimal? @db.Decimal - seq Decimal? @db.Decimal - approval_type String? @db.VarChar(32) - target_objid Decimal? @db.Decimal - approval_objid Decimal? @db.Decimal - route_objid Decimal? @db.Decimal - target_user_id String? @db.VarChar(32) - regdate DateTime? @db.Timestamp(6) - status String? @db.VarChar(32) - proc_date DateTime? @db.Timestamp(6) - result String? @db.VarChar(32) - result_message String? @db.VarChar(512) - sign String? @db.VarChar - sign_width String? @db.VarChar - sign_height String? @db.VarChar - - @@ignore -} - -model injection_cost { - objid Decimal @id @db.Decimal - target_objid Decimal? @db.Decimal - material_spec String? @default("NULL::character varying") @db.VarChar(100) - inj_ton Decimal? @db.Decimal - cav Decimal? @db.Decimal - machine_time Decimal? @db.Decimal - injection_ct Decimal? @db.Decimal - shot_ct Decimal? @db.Decimal - gram_thickness Decimal? @db.Decimal - equip_coefficient Decimal? @db.Decimal - mold_coefficient Decimal? @db.Decimal - cooling_time Decimal? @db.Decimal - total_cooling_time Decimal? @db.Decimal - labor_wage_rate Decimal? @db.Decimal - expense Decimal? @db.Decimal - injection_setup_time Decimal? @db.Decimal - injection_setup_person Decimal? @db.Decimal - lot Decimal? @db.Decimal - et Decimal? @db.Decimal - injection_exp Decimal? @db.Decimal - injection_labor Decimal? @db.Decimal - injection_expense Decimal? @db.Decimal - regdate DateTime? @db.Timestamp(6) -} - -model input_cost_goal { - objid String? @unique(map: "idx_unq_input_cost_goal") @db.VarChar - contract_objid String? @db.VarChar - material_cost_goal String? @db.VarChar - labor_cost_goal String? @db.VarChar - expense_cost_goal String? @db.VarChar - writer String? @db.VarChar - regdate DateTime? @db.Timestamp(6) - - @@ignore -} - -model input_resource { - objid Decimal @id @db.Decimal - parent_objid Decimal @db.Decimal - target_objid Decimal? @db.Decimal - input_qty Decimal? @default(0) @db.Decimal - input_date DateTime? @db.Timestamp(6) - regdate DateTime? @db.Timestamp(6) - writer String? @db.VarChar(50) - used String? @db.VarChar -} - -model inspection_mgmt { - objid String @id @db.VarChar - parent_objid String? @db.VarChar - unit_code String? @db.VarChar - internal_inspection_date String? @db.VarChar - internal_inspection_result String? @db.VarChar - internal_inspection_id String? @db.VarChar - admission_inspection_date String? @db.VarChar - admission_inspection_result String? @db.VarChar - admission_inspection_id String? @db.VarChar - regdate DateTime? @db.Timestamp(6) - writer String? @db.VarChar -} - -model instruction_mng { - objid String @id @db.VarChar(64) - target_objid String @db.VarChar(64) - division String? @db.VarChar(64) - class String? @db.VarChar(64) - title String? @db.VarChar(100) - contents String? - measure_dept String? @db.VarChar - measure_user_id String? @db.VarChar - measure_date String? @db.VarChar - writer String? @db.VarChar(30) - reg_date DateTime? @db.Timestamp(6) - edit_date DateTime? @db.Timestamp(6) - status String? @db.VarChar(30) - measure_dept1 String? @db.VarChar - measure_dept2 String? @db.VarChar - measure_dept3 String? @db.VarChar - measure_dept4 String? @db.VarChar -} - -model instruction_mng2 { - objid String @id @db.VarChar(64) - target_objid String @db.VarChar(64) - division String? @db.VarChar(64) - class String? @db.VarChar(64) - year_month_week String? @db.VarChar(100) - title String? @db.VarChar(100) - user_ids String? @db.VarChar - contents String? - writer String? @db.VarChar(30) - editer String? @db.VarChar(30) - reg_date DateTime? @db.Timestamp(6) - edit_date DateTime? @db.Timestamp(6) - status String? @db.VarChar(30) -} - -model instruction_mng2_task { - objid String @id @db.VarChar(64) - master_objid String @db.VarChar(64) - writer String? @db.VarChar(30) - editer String? @db.VarChar(30) - reg_date DateTime? @db.Timestamp(6) - edit_date DateTime? @db.Timestamp(6) - measure_user_id String? @db.VarChar - measure_plan_date String? @db.VarChar - measure_date String? @db.VarChar - contents String? - contents_implement String? - - @@index([master_objid]) -} - -model inventory_mgmt { - objid String @db.VarChar - contract_objid String @db.VarChar - unit String @db.VarChar(100) - part_objid String @db.VarChar(100) - cls_cd String? @default("NULL::character varying") @db.VarChar(100) - cau_cd String? @default("NULL::character varying") @db.VarChar(100) - qty String? @default("NULL::character varying") @db.VarChar(20) - location String @default("NULL::character varying") @db.VarChar(20) - sub_location String @default("NULL::character varying") @db.VarChar(20) - reg_date String? @default("NULL::character varying") @db.VarChar(10) - price String? @default("NULL::character varying") @db.VarChar(20) - writer String? @default("NULL::character varying") @db.VarChar(20) - input_contract_objid String? @db.VarChar - input_qty String? @db.VarChar - input_date String? @db.VarChar - assumption_user String? @db.VarChar - successor_user String? @db.VarChar - - @@id([contract_objid, unit, part_objid]) - @@index([objid]) - @@index([part_objid]) -} - -model inventory_mgmt_history { - objid String @id @db.VarChar - parent_objid String? @db.VarChar - contract_objid String? @db.VarChar - reg_date String? @default("NULL::character varying") @db.VarChar - input_qty String? @db.VarChar - input_date String? @db.VarChar - assumption_user String? @db.VarChar - successor_user String? @db.VarChar -} - -model inventory_mgmt_in { - objid String @id @db.VarChar - parent_objid String? @db.VarChar - receipt_qty String? @db.VarChar - location String? @db.VarChar - sub_location String? @db.VarChar - writer String? @db.VarChar - regdate DateTime? @db.Timestamp(6) - contract_mgmt_objid String? @db.VarChar - purchase_order_master_objid String? @db.VarChar - purchase_order_sub_objid String? @db.VarChar - out_objid String? @db.VarChar - out_qty String? @db.VarChar - move_objid String? @db.VarChar - move_qty String? @db.VarChar - move_date String? @db.VarChar - move_user String? @db.VarChar - request_qty String? @db.VarChar - - @@index([contract_mgmt_objid]) - @@index([parent_objid]) -} - -model inventory_mgmt_out { - objid String @id @db.VarChar - parent_objid String? @db.VarChar - request_qty String? @db.VarChar - out_qty String? @db.VarChar - out_date String? @db.VarChar - writer String? @db.VarChar - acq_user String? @db.VarChar - regdate DateTime? @db.Timestamp(6) - inventory_request_master_objid String? @db.VarChar - sign String? @db.VarChar - contract_mgmt_objid String? @db.VarChar - unit String? @db.VarChar - - @@index([parent_objid]) -} - -model inventory_mgmt_out_master { - objid String @id @db.VarChar - parent_objid String? @db.VarChar - inventory_out_no String? @db.VarChar - request_date String? @db.VarChar - request_id String? @db.VarChar - reception_status String? @db.VarChar - reception_id String? @db.VarChar - reception_date String? @db.VarChar - outstatus String? @db.VarChar - writer String? @db.VarChar - regdate DateTime? @db.Timestamp(6) - remark String? @db.VarChar - contract_mgmt_objid String? @db.VarChar - sign String? @db.VarChar -} - -model inventory_mng { - objid Decimal @id @default(0) @db.Decimal - parent_objid Decimal @db.Decimal - division String? @default("null::character varying") @db.VarChar(100) - qty Decimal? @default(0) @db.Decimal - location String? @default("null::character varying") @db.VarChar(100) - remark String? @default("null::character varying") @db.VarChar(300) - regdate DateTime? @db.Timestamp(6) - editdate DateTime? @db.Timestamp(6) - writer String? @db.VarChar(50) - is_last String? @db.VarChar(50) - ld_part_objid String? @default("null::character varying") @db.VarChar - part_objid String? @default("null::character varying") @db.VarChar - sub_location String? @db.VarChar - - @@index([parent_objid]) - @@index([part_objid]) -} - -model invoice_mgmt { - objid String @id @db.VarChar - parent_objid String @db.VarChar - group_seq String @db.VarChar - price_sum String? @db.VarChar - issuance_date String? @db.VarChar - issuance_id String? @db.VarChar - status String? @db.VarChar - regdate DateTime? @db.Timestamp(6) - writer String? @db.VarChar - remark String? @db.VarChar - outstanding_balance String? @db.VarChar - percentage String? @db.VarChar - request_amount String? @db.VarChar - total_sum String? @db.VarChar - deposit_amount String? @db.VarChar - total_outstanding_balance String? @db.VarChar - receive_user String? @db.VarChar - due_date String? @db.VarChar - total_partner_price_sum String? @db.VarChar - total_partner_vat_price_sum String? @db.VarChar - nego_price_all String? @db.VarChar - nego_vat_price_all String? @db.VarChar - discount_percentage String? @db.VarChar - inv_discount_price String? @db.VarChar -} - -model invoice_mgmt_part { - objid String @id @db.VarChar - invoice_objid String? @db.VarChar - part_objid String? @db.VarChar - qty String? @db.VarChar - unit_price String? @db.VarChar - partner_price String? @db.VarChar - vat_price String? @db.VarChar - writer String? @db.VarChar - regdate DateTime? @db.Timestamp(6) - status String? @db.VarChar - remark String? @db.VarChar - receipt_date String? @db.VarChar -} - -model irregular_drawing_distribute { - objid Decimal @id @db.Decimal - distribute_type String? @db.VarChar(64) - distribute_team String? @db.VarChar(64) - distribute_partner_code String? @db.VarChar(64) - oem_objid String? @db.VarChar(64) - car_objid String? @db.VarChar(64) - product_group_objid String? @db.VarChar(64) - product_objid String? @db.VarChar(64) - title String? @db.VarChar(1024) - status String? @db.VarChar(32) - writer String? @db.VarChar(32) - regdate DateTime? @db.Date -} - -model issue_mgmt { - objid Decimal @default(0) @db.Decimal - parent_objid Decimal @default(0) @db.Decimal - issue_no String? @default("null::character varying") @db.VarChar(32) - isu_cd String? @default("null::character varying") @db.VarChar(32) - project_name String? @default("null::character varying") @db.VarChar(100) - title String? @default("null::character varying") @db.VarChar(500) - content String? @default("null::character varying") @db.VarChar(4000) - result String? @default("null::character varying") @db.VarChar(4000) - occu_cd String? @default("null::character varying") @db.VarChar(32) - step_cd String? @default("null::character varying") @db.VarChar(32) - case_cd String? @default("null::character varying") @db.VarChar(32) - writer String? @default("null::character varying") @db.VarChar(32) - reg_date DateTime? @db.Timestamp(6) - req_date DateTime? @db.Timestamp(6) - sol_userid String? @default("null::character varying") @db.VarChar(32) - cur_userid String? @default("null::character varying") @db.VarChar(32) - ret_date DateTime? @db.Timestamp(6) - cur_cost String? @default("null::character varying") @db.VarChar(32) - wpst_cd String? @default("null::character varying") @db.VarChar(32) - appr_wpst_cd String? @default("null::character varying") @db.VarChar(32) - customer_cd String? @default("null::character varying") @db.VarChar(32) - - @@ignore -} - -model klbom_tbl { - id String @db.VarChar(64) - pid String @db.VarChar(64) - ayprodcd String? @db.VarChar(15) - ayitemid String? @db.VarChar(15) - qty Int? - aytotqty Int? - ayprice Decimal? @db.Decimal - ayamt Decimal? @db.Decimal - aycorse String? @db.VarChar(5) - aysagup String? @db.VarChar(1) - ayassy String? @db.VarChar(1) - ayenditem String? @db.VarChar(1) - ayseq String? @db.VarChar(80) - aylevel Int? - ayupgname String? @db.VarChar(100) - ayupgcode String? @db.VarChar(100) - regdate DateTime? @db.Timestamp(6) - bom_report_objid String? @db.VarChar(64) - - @@id([id, pid], map: "pk_klbom_tbl") -} - -model language_master { - lang_code String @id @db.VarChar(10) - lang_name String @db.VarChar(50) - lang_native String @db.VarChar(50) - is_active String? @default("Y") @db.Char(1) - sort_order Int? @default(0) - created_date DateTime? @default(now()) @db.Timestamp(6) - created_by String? @db.VarChar(50) - updated_date DateTime? @default(now()) @db.Timestamp(6) - updated_by String? @db.VarChar(50) - multi_lang_text multi_lang_text[] -} - -model login_access_log { - log_time DateTime? @db.Timestamp(6) - system_name String? @default("NULL::character varying") @db.VarChar(32) - user_id String? @default("NULL::character varying") @db.VarChar(32) - login_result String? @default("NULL::character varying") @db.VarChar(128) - error_message String? @default("NULL::character varying") @db.VarChar(1024) - remote_addr String? @default("NULL::character varying") @db.VarChar(128) - recptn_dt String? @db.VarChar(32) - recptn_rslt_cd String? @db.VarChar(32) - recptn_rslt String? @db.VarChar(256) - recptn_rslt_dtl String? @db.VarChar(4000) - - @@ignore -} - -model mail_log { - objid String? @db.VarChar - system_name String? @db.VarChar(32) - send_user_id String? @db.VarChar(64) - from_addr String? @db.VarChar(256) - reception_user_id String? @db.VarChar(64) - receiver_to String? @db.VarChar(256) - title String? @db.VarChar(512) - contents String? - log_time DateTime? @db.Timestamp(6) - is_send String? @db.VarChar(8) - mail_type String? @db.VarChar(32) - error_log String? - - @@ignore -} - -model material_cost { - objid Decimal @id @db.Decimal - target_objid Decimal? @db.Decimal - part_name String? @db.VarChar(100) - photo String? @db.VarChar(100) - process String? @db.VarChar(100) - material String? @db.VarChar(100) - scrap_loss String? @db.VarChar(100) - grade String? @db.VarChar(100) - source String? @db.VarChar(100) - resin_price Decimal? @db.Decimal - part_weight Decimal? @db.Decimal - sr_rate Decimal? @db.Decimal - sr_weight Decimal? @db.Decimal - part_price Decimal? @db.Decimal - sr_price Decimal? @db.Decimal - regdate DateTime? @db.Timestamp(6) -} - -model material_detail_mgmt { - material_detail_objid Decimal @default(0) @db.Decimal - material_master_objid Decimal @default(0) @db.Decimal - resource_objid Decimal @default(0) @db.Decimal - qty String? @db.VarChar(20) - price String? @db.VarChar(20) - unit_price String? @db.VarChar(20) - ware_date String? @db.VarChar(10) - ware_qty String? @db.VarChar(10) - location String? @db.VarChar(20) - acq_date String? @db.VarChar(10) - acq_qty String? @db.VarChar(10) - cur_user_id String? @db.VarChar(20) - reg_date DateTime? @db.Timestamp(6) - reg_user_id String? @db.VarChar(20) - recv_price String? @db.VarChar(100) - sup_price String? @db.VarChar(100) - pur_user_id String? @db.VarChar(10) - des_user_id String? @db.VarChar(10) - result String? @db.VarChar(10) - bigo String? @db.VarChar - inventory_objid Decimal? @db.Decimal - part_name String? @db.VarChar - do_no String? @db.VarChar - thickness String? @db.VarChar - width String? @db.VarChar - height String? @db.VarChar - out_diameter String? @db.VarChar - length String? @db.VarChar - in_diameter String? @db.VarChar - - @@ignore -} - -model material_master_mgmt { - material_master_objid Decimal @id @default(0) @db.Decimal - project_mgmt_objid Decimal? @default(0) @db.Decimal - order_no String? @db.VarChar(100) - delivery_place String? @db.VarChar(100) - process2_cd String? @db.VarChar(100) - sort_cd String? @db.VarChar(100) - sup_cd String? @db.VarChar(100) - pur_cd String? @db.VarChar(100) - title String? @db.VarChar(500) - recv_userid String? @db.VarChar(100) - recv_date String? @default("NULL::character varying") @db.VarChar(20) - payment_cd String? @db.VarChar(100) - total_amount String? @db.VarChar(100) - change_amount String? @db.VarChar(100) - final_order_amount String? @db.VarChar(100) - reason String? @db.VarChar(4000) - status_cd String? @db.VarChar(100) - reg_date DateTime? @db.Timestamp(6) - reg_user_id String? @db.VarChar(20) - order_date String? @default("NULL::character varying") @db.VarChar(20) - del_yn String? @db.VarChar(2) - rels_cd String? @db.VarChar(100) -} - -model material_mng { - objid Decimal @id @default(0) @db.Decimal - material_name String? @db.VarChar(256) - writer String? @db.VarChar(32) - regdate DateTime? @db.Timestamp(6) - status String? @db.VarChar(32) - - @@index([material_name]) - @@index([status]) -} - -model material_release { - material_release_objid Decimal @default(0) @db.Decimal - inventory_mgmt_objid Decimal @default(0) @db.Decimal - project_mgmt_objid Decimal? @db.Decimal - rel_qty String? @db.VarChar(20) - rel_pur_cd String? @db.VarChar(20) - rel_date String? @db.VarChar(10) - rel_user_id String? @db.VarChar(20) - reg_date DateTime? @db.Timestamp(6) - reg_user_id String? @db.VarChar(20) - - @@ignore -} - -model menu_info { - objid Decimal @id @default(0) @db.Decimal - menu_type Decimal? @db.Decimal - parent_obj_id Decimal? @db.Decimal - menu_name_kor String? @db.VarChar(64) - menu_name_eng String? @db.VarChar(64) - seq Decimal? @db.Decimal - menu_url String? @db.VarChar(256) - menu_desc String? @db.VarChar(1024) - writer String? @db.VarChar(32) - regdate DateTime? @db.Timestamp(6) - status String? @db.VarChar(32) - system_name String? @db.VarChar(32) - company_code String? @default("*") @db.VarChar(50) - lang_key String? @db.VarChar(100) - lang_key_desc String? @db.VarChar(100) - company company_mng? @relation(fields: [company_code], references: [company_code]) - - @@index([parent_obj_id]) - @@index([company_code]) - @@index([system_name]) -} - -model mold_dev_request_info { - objid String @id @db.VarChar(64) - project_objid String? @db.VarChar(64) - oem_objid String? @db.VarChar(64) - car_objid String? @db.VarChar(64) - product_group_objid String? @db.VarChar(64) - product_objid String? @db.VarChar(64) - title String? @db.VarChar(512) - resign String? @db.VarChar(64) - product_size String? @db.VarChar(64) - production_corporation String? @db.VarChar(64) - production_completion_date String? @db.VarChar(64) - engrave_apply String? @db.VarChar(64) - estimate_price String? @db.VarChar(128) - payment_type String? @db.VarChar(64) - mold_production_main_spec String? @db.VarChar(1024) - mold_dev_partner_code String? @db.VarChar(64) - writer String? @db.VarChar(64) - regdate DateTime? @db.Timestamp(6) - editdate DateTime? @db.Timestamp(6) - status String? @db.VarChar(50) -} - -model multi_lang_key_master { - key_id Int @id @default(autoincrement()) - company_code String @default("*") @db.VarChar(20) - lang_key String @db.VarChar(100) - description String? - is_active String? @default("Y") @db.Char(1) - created_date DateTime? @default(now()) @db.Timestamp(6) - created_by String? @db.VarChar(50) - updated_date DateTime? @default(now()) @db.Timestamp(6) - updated_by String? @db.VarChar(50) - menu_name String? @db.VarChar(50) - multi_lang_text multi_lang_text[] - - @@unique([company_code, lang_key], map: "uk_lang_key_company") -} - -model multi_lang_text { - text_id Int @id @default(autoincrement()) - key_id Int - lang_code String @db.VarChar(10) - lang_text String - is_active String? @default("Y") @db.Char(1) - created_date DateTime? @default(now()) @db.Timestamp(6) - created_by String? @db.VarChar(50) - updated_date DateTime? @default(now()) @db.Timestamp(6) - updated_by String? @db.VarChar(50) - multi_lang_key_master multi_lang_key_master @relation(fields: [key_id], references: [key_id], onDelete: Cascade, onUpdate: NoAction) - language_master language_master @relation(fields: [lang_code], references: [lang_code], onDelete: NoAction, onUpdate: NoAction) - - @@unique([key_id, lang_code]) -} - -model nswos100_tbl { - suvndcd String @db.VarChar(4) - issuedt String @db.VarChar(8) - issueno Int @db.SmallInt - isno Int @db.SmallInt - prodcd String? @db.VarChar(8) - odorderno String? @db.VarChar(15) - imitemid String? @db.VarChar(15) - rmduedt String? @db.VarChar(8) - rmorderqty Int? @db.SmallInt - rmrcptqty Int? @db.SmallInt - rmremqty Int? @db.SmallInt - isdt String? @db.VarChar(8) - isqty Int? @db.SmallInt - isprice Decimal? @db.Decimal - isamount Decimal? @db.Decimal - rcrcptno String? @db.VarChar(15) - riseqno String? @db.VarChar(2) - poorqty Int? @db.SmallInt - lackqty Int? @db.SmallInt - rircptqty Int? @db.SmallInt - gubun String? @db.VarChar(1) - fgprice Decimal? @db.Decimal - fgamount Decimal? @db.Decimal - fgcost Decimal? @db.Decimal - fgorderno String? @db.VarChar(10) - fgcurrency String? @db.VarChar(3) - ingb String? @db.VarChar(1) - - @@id([suvndcd, issuedt, issueno, isno], map: "pk_nswos100_tbl") -} - -model oem_factory_mng { - objid Decimal @default(0) @db.Decimal(10, 0) - factory_name String? @db.VarChar(128) - writer String? @db.VarChar(32) - regdate DateTime? @db.Date - status String? @db.VarChar(32) - - @@ignore -} - -model oem_milestone_mng { - objid Decimal @db.Decimal - seq String? @db.VarChar(32) - oem_objid Decimal? @db.Decimal - milestone_name String? @db.VarChar(64) - writer String? @db.VarChar(32) - regdate DateTime? @db.Timestamp(6) - status String? @db.VarChar(32) - - @@ignore -} - -model oem_mng { - objid Decimal @id @db.Decimal - oem_code String? @db.VarChar(64) - oem_name String? @db.VarChar(64) - writer String? @db.VarChar(32) - regdate DateTime? @db.Timestamp(6) - status String? @db.VarChar(32) -} - -model option_mng { - objid String @id @default("") @db.VarChar - option_no String? @db.VarChar - option_name String? @db.VarChar - option_name_eng String? @db.VarChar - std_code String? @db.VarChar - option_type String? @db.VarChar - reg_date String? @db.VarChar - writer String? @db.VarChar - status String? @db.VarChar - category String? @db.VarChar - parent_objid String? @db.VarChar - price String? @db.VarChar -} - -model option_price_history { - objid String @default("") @db.VarChar - option_objid String @default("") @db.VarChar - reg_date String? @db.VarChar - price String? @db.VarChar - - @@ignore -} - -model order_mgmt { - objid Decimal @unique(map: "ORDER_PK") @default(0) @db.Decimal - estimate_no String? @db.VarChar(64) - region_high_cd String? @db.VarChar(32) - region_mid_cd String? @db.VarChar(32) - region_low_cd String? @db.VarChar(32) - customer_cd String? @db.VarChar(32) - order_title String? @db.VarChar(300) - c_type_cd String? @db.VarChar(32) - c_agency_cd String? @db.VarChar(32) - c_class_cd String? @db.VarChar(32) - writer String? @db.VarChar(32) - regdate DateTime? @db.Date - status_cd String? @db.VarChar(32) - title String? @db.VarChar(300) - result_cd String? @db.VarChar(32) - reason String? @db.VarChar(300) - sales_p_date DateTime? @db.Date - sub_p_sum String? @db.VarChar(32) - dev_p_product String? @db.VarChar(32) - sale_p_product String? @db.VarChar(32) - sch_date DateTime? @db.Date - sales_r_date DateTime? @db.Date - sub_r_sum String? @db.VarChar(32) - dev_r_product String? @db.VarChar(32) - sale_r_product String? @db.VarChar(32) - recv_date DateTime? @db.Date - achievement_rate String? @db.VarChar(10) - spec_cd String? @db.VarChar(32) -} - -model order_mgmt_example { - objid Int? - order_mgmt_objid Int? - sort String? @db.VarChar(100) - name String? @db.VarChar(100) - product_name String? @db.VarChar(100) - standard String? @db.VarChar(100) - length String? @db.VarChar(100) - unit String? @db.VarChar(100) - qty String? @db.VarChar(100) - unit_price String? @db.VarChar(100) - price String? @db.VarChar(100) - ori_price String? @db.VarChar(100) - regdate DateTime? @db.Timestamp(6) - - @@ignore -} - -model order_mng_master { - objid String @id @db.VarChar - product_mgmt_objid String? @db.VarChar - partner_objid String? @db.VarChar - final_delivery_date String? @db.VarChar - reason String? @db.VarChar(4000) - status String? @db.VarChar - reg_date DateTime? @db.Timestamp(6) - writer String? @db.VarChar -} - -model order_mng_sub { - objid String @id @db.VarChar - order_mng_master_objid String? @db.VarChar - part_objid String? @db.VarChar - partner_objid String? @db.VarChar - partner_price String? @db.VarChar - partner_qty String? @db.VarChar - delivery_date String? @db.VarChar - status String? @db.VarChar - regdate DateTime? @db.Timestamp(6) - writer String? @db.VarChar -} - -model order_plan_mgmt { - objid Int - parent_objid Int @id - title String? @db.VarChar - contents String? - step1_start_date String? @db.VarChar - step1_end_date String? @db.VarChar - step1_user_id String? @db.VarChar - step2_start_date String? @db.VarChar - step2_end_date String? @db.VarChar - step2_user_id String? @db.VarChar - step3_start_date String? @db.VarChar - step3_end_date String? @db.VarChar - step3_user_id String? @db.VarChar - step4_start_date String? @db.VarChar - step4_end_date String? @db.VarChar - step4_user_id String? @db.VarChar - step5_start_date String? @db.VarChar - step5_end_date String? @db.VarChar - step5_user_id String? @db.VarChar - regdate DateTime? @db.Timestamp(6) - update DateTime? @db.Timestamp(6) - status String? @db.VarChar - product String @db.VarChar - product_group String @db.VarChar - test_contents String? -} - -model order_plan_result_error { - objid Int @id - parent_objid Int? - process_type String? @db.VarChar - error_type String? @db.VarChar - error_status String? @db.VarChar - reg_date String? @db.VarChar - user_id String? @db.VarChar -} - -model order_spec_mng { - objid String @id @db.VarChar - seq String @db.VarChar - part_objid String @db.VarChar - partner_rank String? @db.VarChar - partner_objid String? @db.VarChar - partner_price String? @db.VarChar - partner_qty String? @db.VarChar - apply_date String? @db.VarChar - remark String? @db.VarChar - regdate DateTime? @db.Timestamp(6) - is_last String? @db.VarChar - writer String? @db.VarChar -} - -model order_spec_mng_history { - objid String @db.VarChar - seq String @db.VarChar - part_objid String @db.VarChar - partner_rank String? @db.VarChar - partner_objid String? @db.VarChar - partner_price String? @db.VarChar - partner_qty String? @db.VarChar - apply_date String? @db.VarChar - remark String? @db.VarChar - regdate DateTime? @db.Timestamp(6) - is_last String? @db.VarChar - writer String? @db.VarChar - - @@ignore -} - -model part_bom_qty { - bom_report_objid Decimal @db.Decimal - objid Decimal @id @db.Decimal - parent_part_no String? @db.VarChar(64) - part_no String? @db.VarChar(64) - qty Decimal? @db.Decimal - region_objid Decimal? @db.Decimal - regdate DateTime? @db.Timestamp(6) -} - -model part_bom_report { - objid String @id @default("") @db.VarChar - customer_objid String? @db.VarChar - contract_objid String? @db.VarChar - unit_code String? @db.VarChar - revision String? @db.VarChar - writer String? @db.VarChar(64) - regdate DateTime? @db.Timestamp(6) - status String? @db.VarChar(64) - deploy_date String? @db.VarChar(64) - eo_no String? @db.VarChar(100) - eo_date String? @db.VarChar(100) - note String? @db.VarChar(2000) - edit_date DateTime? @db.Timestamp(6) - editer String? @db.VarChar - unit_code_old String? @db.VarChar - multi_break_yn String? @db.VarChar - multi_yn String? @db.VarChar - multi_master_yn String? @db.VarChar - multi_master_objid String? @db.VarChar - - @@index([contract_objid]) - @@index([unit_code, contract_objid], map: "part_bom_report_unit_code_idx") -} - -model part_distribution_list { - part_objid Decimal @db.Decimal - product_mgmt_objid String? @db.VarChar(100) - upg_no String? @db.VarChar(100) - part_no String? @db.VarChar(100) - part_name String? @db.VarChar(100) - unit String? @db.VarChar(50) - qty String? @db.VarChar(50) - spec String? @default("NULL::character varying") @db.VarChar(100) - material String? @db.VarChar(100) - weight String? @db.VarChar(50) - part_type String? @db.VarChar(100) - remark String? @db.VarChar(1000) - es_spec String? @db.VarChar(100) - ms_spec String? @db.VarChar(100) - change_option String? @db.VarChar(50) - design_apply_point String? @db.VarChar(50) - management_flag String? @db.VarChar(50) - revision String? @db.VarChar(50) - status String? @db.VarChar(30) - reg_date DateTime? @db.Timestamp(6) - edit_date DateTime? @db.Timestamp(6) - writer String? @db.VarChar(30) - is_last String? @db.VarChar(5) - eo String? @db.VarChar - eo_temp String? @db.VarChar - excel_upload_seq Int? - sourcing_code String? @db.VarChar - sub_material String? @default("NULL::character varying") @db.VarChar(100) - parent_part_no String? @db.VarChar - design_date String? @db.VarChar - eo_date String? @db.VarChar - deploy_date DateTime? @db.Timestamp(6) - objid Int @id -} - -model part_mgmt { - part_mgmt_objid Decimal @unique(map: "part_pk") @default(0) @db.Decimal - part_mgmt_parent_objid Decimal? @db.Decimal - project_mgmt_objid Decimal @default(0) @db.Decimal - part_name String? @db.VarChar(100) - part_no String @db.VarChar(100) - parent_part_no String? @db.VarChar(100) - spec_cd String? @db.VarChar(100) - mfa_cd String? @db.VarChar(100) - qty String? @db.VarChar(10) - process_cd String? @db.VarChar(100) - sort_cd String? @db.VarChar(100) - sup_cd String? @db.VarChar(100) - rev String? @db.VarChar(10) - is_last String? @default("0") @db.VarChar(32) - rel_date DateTime? @db.Timestamp(6) - reg_date DateTime? @db.Timestamp(6) - reg_user_id String? @db.VarChar(20) - change_cd String? @db.VarChar(100) - status String? @db.VarChar(32) - del_yn String? @db.VarChar(2) - rel_status String? @db.VarChar(20) - sized String? @db.VarChar(20) - material String? @db.VarChar(100) -} - -model part_mng { - objid String @id @db.VarChar - product_mgmt_objid String? @db.VarChar(100) - upg_no String? @db.VarChar(100) - part_no String? @db.VarChar(100) - part_name String? @db.VarChar(100) - unit String? @db.VarChar(50) - qty String? @db.VarChar(50) - spec String? @db.VarChar(100) - material String? @db.VarChar(100) - weight String? @db.VarChar(50) - part_type String? @db.VarChar(100) - remark String? @db.VarChar(1000) - es_spec String? @db.VarChar(100) - ms_spec String? @db.VarChar(100) - change_option String? @db.VarChar(50) - design_apply_point String? @db.VarChar(50) - management_flag String? @db.VarChar(50) - revision String? @db.VarChar(50) - status String? @db.VarChar(30) - reg_date DateTime? @db.Timestamp(6) - edit_date DateTime? @db.Timestamp(6) - writer String? @db.VarChar(30) - is_last String? @db.VarChar(5) - eo_no String? @db.VarChar - eo_temp String? @db.VarChar - excel_upload_seq Int? - sourcing_code String? @db.VarChar - sub_material String? @db.VarChar(100) - parent_part_no String? @db.VarChar - design_date String? @db.VarChar - eo_date String? @db.VarChar - deploy_date DateTime? @db.Timestamp(6) - thickness String? @db.VarChar - width String? @db.VarChar - height String? @db.VarChar - out_diameter String? @db.VarChar - in_diameter String? @db.VarChar - length String? @db.VarChar - supply_code String? @db.VarChar - change_type String? @db.VarChar - contract_objid String? @db.VarChar - maker String? @db.VarChar - post_processing String? @db.VarChar - material_code String? @db.VarChar - code1 String? @db.VarChar - code2 String? @db.VarChar - code3 String? @db.VarChar - code4 String? @db.VarChar - code5 String? @db.VarChar - major_category String? @db.VarChar - sub_category String? @db.VarChar - is_new String? @db.VarChar(5) - is_longd String? @db.VarChar(5) - - @@index([part_no]) -} - -model part_mng_history { - objid Decimal @db.Decimal - product_mgmt_objid String? @db.VarChar(100) - upg_no String? @db.VarChar(100) - part_no String? @db.VarChar(100) - part_name String? @db.VarChar(100) - unit String? @db.VarChar(50) - qty String? @db.VarChar(50) - spec String? @default("NULL::character varying") @db.VarChar(100) - material String? @db.VarChar(100) - weight String? @db.VarChar(50) - part_type String? @db.VarChar(100) - remark String? @db.VarChar(1000) - es_spec String? @db.VarChar(100) - ms_spec String? @db.VarChar(100) - change_option String? @db.VarChar(50) - design_apply_point String? @db.VarChar(50) - management_flag String? @db.VarChar(50) - revision String? @db.VarChar(50) - status String? @db.VarChar(30) - reg_date DateTime? @db.Timestamp(6) - edit_date DateTime? @db.Timestamp(6) - writer String? @db.VarChar(30) - is_last String? @db.VarChar(5) - eo_no String? @db.VarChar - eo_temp String? @db.VarChar - excel_upload_seq String? @db.VarChar - sourcing_code String? @db.VarChar - sub_material String? @default("NULL::character varying") @db.VarChar(100) - parent_part_no String? @db.VarChar - design_date String? @db.VarChar - eo_date String? @db.VarChar - deploy_date DateTime? @db.Timestamp(6) - thickness String? @db.VarChar - width String? @db.VarChar - height String? @db.VarChar - out_diameter String? @db.VarChar - in_diameter String? @db.VarChar - length String? @db.VarChar - supply_code String? @db.VarChar - change_type String? @db.VarChar - contract_objid String? @db.VarChar - maker String? @db.VarChar - qty_temp String? @db.VarChar - bom_report_objid String? @db.VarChar - parent_part_objid String? @db.VarChar - parent_qty_child_objid String? @db.VarChar - bom_qty_status String? @db.VarChar - his_reg_date DateTime? @db.Timestamp(6) - his_writer String? @db.VarChar - his_status String? @db.VarChar - qty_child_objid String? @db.VarChar - bom_status String? @db.VarChar - bom_deploy_date DateTime? @db.Timestamp(6) - chg_part_objid String? @db.VarChar - chg_part_no String? @db.VarChar - chg_part_rev String? @db.VarChar - - @@ignore -} - -model planning_issue { - objid String @id @db.VarChar - issue_no String @db.VarChar - project_objid String? @db.VarChar - unit_code String? @default("NULL::character varying") @db.VarChar(32) - part_objid String? @default("NULL::character varying") @db.VarChar(32) - issue_category String? @default("NULL::character varying") @db.VarChar(100) - issue_type String? @default("NULL::character varying") @db.VarChar(500) - content String? @default("NULL::character varying") @db.VarChar(4000) - design_userid String? @default("NULL::character varying") @db.VarChar(32) - design_result String? @default("NULL::character varying") @db.VarChar(32) - design_date String? @default("NULL::character varying") @db.VarChar(32) - purchase_userid String? @default("NULL::character varying") @db.VarChar(32) - purchase_result String? @default("NULL::character varying") @db.VarChar(32) - purchase_date String? @default("NULL::character varying") @db.VarChar(32) - quality_userid String? @default("NULL::character varying") @db.VarChar(32) - quality_result String? @default("NULL::character varying") @db.VarChar(32) - quality_date String? @default("NULL::character varying") @db.VarChar(32) - production_userid String? @default("NULL::character varying") @db.VarChar(32) - production_result String? @default("NULL::character varying") @db.VarChar(32) - production_date String? @default("NULL::character varying") @db.VarChar(32) - reg_date DateTime? @db.Timestamp(6) - writer String? @default("NULL::character varying") @db.VarChar(32) - status String? @db.VarChar -} - -model pms_invest_cost_mng { - objid Decimal @db.Decimal - seq String? @db.VarChar(32) - title String? @db.VarChar(64) - drafter String? @db.VarChar(64) - duedate DateTime? @db.Date - amount Decimal @default(0) @db.Decimal - status String? @db.VarChar(32) - target_objid Decimal @default(0) @db.Decimal - regdate DateTime? @db.Date - - @@ignore -} - -model pms_pjt_concept_info { - objid Decimal @default(0) @db.Decimal(10, 0) - foreign_type String? @db.VarChar(32) - oem_objid Decimal? @db.Decimal(10, 0) - car_objid Decimal? @db.Decimal(10, 0) - pjt_type String? @db.VarChar(64) - oem_factory Decimal? @db.Decimal - is_del Decimal? @db.Decimal(10, 0) - writer String? @db.VarChar(32) - regdate DateTime? @db.Date - status Decimal? @db.Decimal - estimate_req_date DateTime? @db.Date - estimate_submit_date DateTime? @db.Date - yearly_avg_production_cnt Decimal? @db.Decimal - total_production_cnt Decimal? @db.Decimal - pm_id String? @db.VarChar(32) - product_group_type Decimal? @db.Decimal - - @@ignore -} - -model pms_pjt_info { - objid Decimal? @db.Decimal - foreign_type String? @db.VarChar(32) - oem_objid Decimal? @db.Decimal - car_objid Decimal? @db.Decimal - project_type String? @db.VarChar(32) - oem_factory String? @db.VarChar(128) - line_instl_site_objid Decimal? @db.Decimal - line_instl_site_area Decimal? @db.Decimal - yearly_avg_production_cnt Decimal? @db.Decimal - total_production_cnt Decimal? @db.Decimal - description String? @db.VarChar(1024) - status String? @db.VarChar(32) - is_del Decimal? @db.Decimal - writer String? @db.VarChar(32) - regdate DateTime? @db.Date - cft_userid String? @db.VarChar(32) - - @@ignore -} - -model pms_pjt_year_goal { - objid String? @unique(map: "idx_unq_pms_pjt_year_goal") @db.VarChar - year String? @db.VarChar - operation_division_code String? @db.VarChar - price String? @db.VarChar - writer String? @db.VarChar - regdate DateTime? @db.Timestamp(6) - - @@ignore -} - -model pms_rel_pjt_concept_milestone { - objid Decimal? @db.Decimal - target_objid Decimal? @db.Decimal - oem_objid Decimal? @db.Decimal - milestone_objid Decimal? @db.Decimal - milestone_date DateTime? @db.Date - - @@ignore -} - -model pms_rel_pjt_concept_prod { - objid Decimal @id @default(0) @db.Decimal(10, 0) - target_objid Decimal? @db.Decimal(10, 0) - prod_objid Decimal? @db.Decimal(10, 0) - estimate_no String? @db.VarChar(64) - estimate_req_date DateTime? @db.Date - estimate_submit_date DateTime? @db.Date - estimate_pic String? @db.VarChar(32) - yearly_avg_production_cnt Decimal? @db.Decimal(10, 0) - total_production_cnt Decimal? @db.Decimal(10, 0) - bidding_result String? @db.VarChar(32) - is_del Decimal? @db.Decimal(10, 0) - status String? @db.VarChar(32) - writer String? @db.VarChar(32) - regdate DateTime? @db.Date -} - -model pms_rel_pjt_prod { - objid Decimal @db.Decimal - target_objid Decimal? @db.Decimal - sub_objid Decimal? @db.Decimal - regdate DateTime? @db.Timestamp(6) - - @@ignore -} - -model pms_rel_prod_ref_dept { - objid Decimal @default(0) @db.Decimal - target_objid Decimal? @db.Decimal - dept_code String? @db.VarChar(64) - reply_req_date DateTime? @db.Date - regdate DateTime? @db.Date - - @@ignore -} - -model pms_wbs_task { - objid String? @unique(map: "wbs_task_pk") @db.VarChar - contract_objid String? @db.VarChar - parent_objid String? @db.VarChar - task_name String? @db.VarChar(1000) - task_seq String? @db.VarChar - design_user_id String? @db.VarChar - design_plan_start String? @db.VarChar - design_plan_end String? @db.VarChar - design_act_start String? @db.VarChar - design_act_end String? @db.VarChar - purchase_user_id String? @db.VarChar - purchase_plan_start String? @db.VarChar - purchase_plan_end String? @db.VarChar - purchase_act_start String? @db.VarChar - purchase_act_end String? @db.VarChar - produce_user_id String? @db.VarChar - produce_plan_start String? @db.VarChar - produce_plan_end String? @db.VarChar - produce_act_start String? @db.VarChar - produce_act_end String? @db.VarChar - selfins_user_id String? @db.VarChar - selfins_plan_start String? @db.VarChar - selfins_plan_end String? @db.VarChar - selfins_act_start String? @db.VarChar - selfins_act_end String? @db.VarChar - finalins_user_id String? @db.VarChar - finalins_plan_start String? @db.VarChar - finalins_plan_end String? @db.VarChar - finalins_act_start String? @db.VarChar - finalins_act_end String? @db.VarChar - ship_user_id String? @db.VarChar - ship_plan_start String? @db.VarChar - ship_plan_end String? @db.VarChar - ship_act_start String? @db.VarChar - ship_act_end String? @db.VarChar - setup_user_id String? @db.VarChar - setup_plan_start String? @db.VarChar - setup_plan_end String? @db.VarChar - setup_act_start String? @db.VarChar - setup_act_end String? @db.VarChar - writer String? @db.VarChar - design_rate String? @default("0") @db.VarChar - purchase_rate String? @default("0") @db.VarChar - produce_rate String? @default("0") @db.VarChar - selfins_rate String? @default("0") @db.VarChar - finalins_rate String? @default("0") @db.VarChar - ship_rate String? @default("0") @db.VarChar - setup_rate String? @default("0") @db.VarChar - unit_no String? @db.VarChar - reg_date DateTime? @db.Timestamp(6) - update_date DateTime? @db.Timestamp(6) - modifier String? @db.VarChar - - @@index([contract_objid]) - @@ignore -} - -model pms_wbs_task_confirm { - objid Decimal? @db.Decimal - target_objid Decimal? @db.Decimal - confirm_type String? @db.VarChar(32) - contents String? @db.VarChar(4000) - result String? @db.VarChar(32) - regdate DateTime? @db.Timestamp(6) - writer String? @db.VarChar(32) - - @@ignore -} - -model pms_wbs_task_info { - objid String @id @db.VarChar(64) - target_objid String? @db.VarChar(64) - task_step String? @db.VarChar(32) - task_name String? @db.VarChar(256) - task_seq String? @db.VarChar(32) - dept_code String? @db.VarChar(32) - manager_user_id String? @db.VarChar(32) - task_perform_day String? @db.VarChar(32) - plan_start_date String? @db.VarChar(64) - plan_end_date String? @db.VarChar(64) - result_start_date String? @db.VarChar(64) - result_end_date String? @db.VarChar(64) - expected_point String? @db.VarChar(32) - standard_doc_name String? @db.VarChar(512) - task_status String? @db.VarChar(32) - pm_user_id String? @db.VarChar(32) - pm_confirm_status String? @db.VarChar(32) - pm_confirm_date String? @db.VarChar(64) - remark String? @db.VarChar(256) - writer String? @db.VarChar(32) - reg_date DateTime? @db.Timestamp(6) - update_date DateTime? @db.Timestamp(6) -} - -model pms_wbs_task_standard { - objid String @id @db.VarChar - parent_objid String? @db.VarChar - task_name String? @db.VarChar - task_seq String? @db.VarChar - user_id String? @db.VarChar - writer String? @db.VarChar - reg_date DateTime? @db.Timestamp(6) - unit_no String? @db.VarChar -} - -model pms_wbs_task_standard2 { - task_step String? @db.VarChar(32) - task_name String? @db.VarChar(256) - task_seq String? @db.VarChar(32) - dept_code String? @db.VarChar(32) - manager_user_id String? @db.VarChar(32) - task_perform_day String? @db.VarChar(32) - plan_start_date String? @db.VarChar(64) - plan_end_date String? @db.VarChar(64) - result_start_date String? @db.VarChar(64) - result_end_date String? @db.VarChar(64) - expected_point String? @db.VarChar(64) - standard_doc_name String? @db.VarChar(512) - task_status String? @db.VarChar(32) - pm_user_id String? @db.VarChar(32) - pm_confirm_status String? @db.VarChar(32) - pm_confirm_date String? @db.VarChar(64) - remark String? @db.VarChar(256) - writer String? @db.VarChar(32) - reg_date DateTime? @db.Timestamp(6) - update_date DateTime? @db.Timestamp(6) - - @@ignore -} - -model pms_wbs_template { - objid String @id @db.VarChar - product_objid String? @db.VarChar - title String? @db.VarChar - writer String? @db.VarChar - reg_date DateTime? @db.Timestamp(6) - customer_product String? @db.VarChar -} - -model problem_mng { - objid Decimal @db.Decimal - project_objid String? @db.VarChar(64) - oem_objid String? @db.VarChar(64) - car_objid String? @db.VarChar(64) - product_group_objid String? @db.VarChar(64) - product_objid String? @db.VarChar(64) - problem_contents String? @db.VarChar(1024) - measure_contents String? @db.VarChar(1024) - reason_contents String? @db.VarChar(1024) - past_car_problem_type String? @db.VarChar(32) - past_car_problem_status String? @db.VarChar(32) - status String? @db.VarChar(32) - writer String? @db.VarChar(32) - regdate DateTime? @db.Date - - @@ignore -} - -model procurement_standard { - objid String @id @db.VarChar - code_name String @db.VarChar - code_id String @db.VarChar - detail String? @db.VarChar - category String? @db.VarChar - regdate DateTime? @db.Timestamp(6) - writer String? @db.VarChar - status String? @db.VarChar - editdate DateTime? @db.Timestamp(6) - edit_user String? @db.VarChar -} - -model product_group_mng { - objid Decimal @db.Decimal - product_group_name String? @db.VarChar(128) - description String? @db.VarChar(1024) - writer String? @db.VarChar(32) - regdate DateTime? @db.Date - status String? @db.VarChar(32) - - @@ignore -} - -model product_kind_spec { - objid String @db.VarChar - objid_parent String @db.VarChar - product String @db.VarChar - mechanical_type String @db.VarChar - unit_objid String @db.VarChar - vc_code String @db.VarChar - project_no String @db.VarChar - value String? @db.VarChar - status String? @db.VarChar - regdate DateTime? @db.Timestamp(6) - editdate DateTime? @db.Timestamp(6) - writer String? @db.VarChar - editer String? @db.VarChar - mecanic_kind_objid String? @db.VarChar - - @@unique([product, mechanical_type, unit_objid, vc_code, project_no], map: "ui_product_kind_spec_01") -} - -model product_kind_spec_main { - objid String @id @unique(map: "ui_product_kind_spec_main_01") @db.VarChar - objid_contract String @db.VarChar - product String @db.VarChar - mechanical_type String @db.VarChar - status String? @db.VarChar - regdate DateTime? @db.Timestamp(6) - editdate DateTime? @db.Timestamp(6) - writer String? @db.VarChar(64) - editer String? @db.VarChar(64) -} - -model product_mgmt { - objid Decimal @id @db.Decimal - product_category String? @db.VarChar(100) - product_type String? @db.VarChar(100) - product_grade String? @db.VarChar(100) - product_ton String? @db.VarChar(100) - product_boom String? @db.VarChar(100) - product_vehicle String? @db.VarChar(100) - product_code String? @default("NULL::character varying") @db.VarChar(100) - production_flag String? @db.VarChar(100) - regdate DateTime? @db.Timestamp(6) - writer String? @db.VarChar(100) - contents String? - price String? @db.VarChar - product_name String? @db.VarChar - product_name_code String? @db.VarChar - note String? @db.VarChar -} - -model product_mgmt_model { - objid Int @id - product_category String? @default("NULL::character varying") @db.VarChar(100) - product_area String? @default("NULL::character varying") @db.VarChar(100) - model_name String? @default("NULL::character varying") @db.VarChar(100) - model_code String? @default("NULL::character varying") @db.VarChar(100) - production_flag String? @default("NULL::character varying") @db.VarChar(100) - status_cd String? @default("NULL::character varying") @db.VarChar(100) - note String? @default("NULL::character varying") @db.VarChar(4000) - writer String? @default("NULL::character varying") @db.VarChar(100) - reg_date DateTime? @db.Date -} - -model product_mgmt_price_history { - objid String @default("") @db.VarChar - product_objid String @default("") @db.VarChar - reg_date String? @db.VarChar - price String? @db.VarChar - - @@ignore -} - -model product_mgmt_upg_detail { - objid Int @id - target_objid Int? - upg_name String? @db.VarChar(100) - upg_code String? @db.VarChar(100) - vc String? @db.VarChar(100) - note String? @db.VarChar(1000) - product_objid Int? -} - -model product_mgmt_upg_master { - objid Int - target_objid Int - spec_name String @db.VarChar - writer String? @db.VarChar - regdate DateTime? @db.Timestamp(6) - - @@id([objid, target_objid]) -} - -model product_mng { - objid Decimal @id @default(0) @db.Decimal - product_group_objid Decimal? @db.Decimal - product_code String? @db.VarChar(128) - product_name String? @db.VarChar(128) - product_desc String? @db.VarChar(1024) - writer String? @db.VarChar(32) - regdate DateTime? @db.Date - status String? @db.VarChar(32) - - @@index([product_code]) - @@index([product_name]) - @@index([product_group_objid]) - @@index([status]) -} - -model product_spec { - objid Decimal @default(0) @db.Decimal - target_objid Decimal @default(0) @db.Decimal - spec_text String? @db.VarChar(500) - spec_value String? @db.VarChar(1000) - regdate DateTime? @db.Date - writer String? @db.VarChar(100) - order_no String? @db.VarChar(100) - - @@ignore -} - -model production_issue { - production_issue_objid Int @id - assembly_plan_objid Int - issue_type String? @db.VarChar(100) - occu_date String? @db.VarChar(10) - issue_content String? @db.VarChar(4000) - action_content String? @db.VarChar(4000) - status_cd String? @db.VarChar(100) - regdate DateTime? @db.Timestamp(6) - reg_user_id String? @db.VarChar(100) -} - -model production_task { - production_task_objid Int @id - assembly_plan_objid Int? - sort_cd String? @db.VarChar(100) - process_name String? @db.VarChar(100) - status_cd String? @db.VarChar(100) - regdate DateTime? @db.Timestamp(6) - reg_user_id String? @db.VarChar(100) - seq Int? -} - -model profit_loss { - objid Decimal @id @db.Decimal - target_objid Decimal? @db.Decimal - part_name String? @db.VarChar(100) - photo String? @db.VarChar(100) - process String? @db.VarChar(100) - material String? @db.VarChar(100) - scrap_loss Decimal? @db.Decimal - grade String? @db.VarChar(100) - source String? @db.VarChar(100) - resin_price Decimal? @db.Decimal - part_weight Decimal? @db.Decimal - sr_rate Decimal? @db.Decimal - sr_weight Decimal? @db.Decimal - part_price Decimal? @db.Decimal - sr_price Decimal? @db.Decimal - material_spec String? @db.VarChar(100) - inj_ton Decimal? @db.Decimal - inj_cav Decimal? @db.Decimal - machine_time Decimal? @db.Decimal - injection_ct Decimal? @db.Decimal - shot_ct Decimal? @db.Decimal - gram_thickness Decimal? @db.Decimal - equip_coefficient Decimal? @db.Decimal - mold_coefficient Decimal? @db.Decimal - cooling_time Decimal? @db.Decimal - total_cooling_time Decimal? @db.Decimal - inj_labor_wage_rate Decimal? @db.Decimal - expense Decimal? @db.Decimal - inj_setup_time Decimal? @db.Decimal - inj_setup_person Decimal? @db.Decimal - inj_lot Decimal? @db.Decimal - inj_et Decimal? @db.Decimal - injection_exp Decimal? @db.Decimal - injection_labor Decimal? @db.Decimal - injection_expense Decimal? @db.Decimal - assy_labor_ct Decimal? @db.Decimal - assy_expense_ct Decimal? @db.Decimal - expense_wage_rate Decimal? @db.Decimal - setup_time Decimal? @db.Decimal - setup_person Decimal? @db.Decimal - ind_exp Decimal? @db.Decimal - assy_labor_price Decimal? @db.Decimal - assy_expense_price Decimal? @db.Decimal - regdate DateTime? @db.Timestamp(6) - assy_cav Decimal? @db.Decimal - rm_price Decimal? @db.Decimal - assy_lot Decimal? @db.Decimal - assy_et Decimal? @db.Decimal - labor_wage_rate Decimal? @db.Decimal - part_no String? @db.VarChar(100) - us_1 Decimal? @db.Decimal - crushing_price_1 Decimal? @db.Decimal - us_2 Decimal? @db.Decimal - crushing_price_2 Decimal? @db.Decimal - type String? @db.VarChar(100) - custom_price Decimal? @db.Decimal - amount_1 Decimal? @db.Decimal - amount_2 Decimal? @db.Decimal - material_price_1 Decimal? @db.Decimal - material_price_2 Decimal? @db.Decimal - labor_cost Decimal? @db.Decimal -} - -model profit_loss_coefficient { - area String? @db.VarChar(100) - from_value Decimal? @db.Decimal - to_value Decimal? @db.Decimal - coefficient Decimal? @db.Decimal - - @@ignore -} - -model profit_loss_coolingtime { - area String? @db.VarChar - material String? @db.VarChar - second Decimal? @db.Decimal - - @@ignore -} - -model profit_loss_depth { - area String? @db.VarChar(100) - from_value Decimal? @db.Decimal - to_value Decimal? @db.Decimal - coefficient Decimal? @db.Decimal - - @@ignore -} - -model profit_loss_lossrate { - area String? @db.VarChar(100) - division String? @db.VarChar(100) - from_value Decimal? @db.Decimal - to_value Decimal? @db.Decimal - lossrate Decimal? @db.Decimal - - @@ignore -} - -model profit_loss_machine { - area String? @db.VarChar(100) - from_value Decimal? @db.Decimal - to_value Decimal? @db.Decimal - second Decimal? @db.Decimal - - @@ignore -} - -model profit_loss_pretime { - area String? @db.VarChar - from_value Decimal? @db.Decimal - to_value Decimal? @db.Decimal - person Decimal? @db.Decimal - pretime Decimal? @db.Decimal - - @@ignore -} - -model profit_loss_srrate { - area String? @db.VarChar(100) - from_value Decimal? @db.Decimal - to_value Decimal? @db.Decimal - sr_rate Decimal? @db.Decimal - - @@ignore -} - -model profit_loss_total { - objid Decimal @id @db.Decimal - target_objid Decimal? @db.Decimal - regdate DateTime? @db.Timestamp(6) - material_cost Decimal? @db.Decimal - labor_cost_sum Decimal? @db.Decimal - expense_cost_sum Decimal? @db.Decimal - pro_cost Decimal? @db.Decimal - manufacturing_cost Decimal? @db.Decimal - normal_cost_per Decimal? @db.Decimal - normal_cost Decimal? @db.Decimal - profit_per Decimal? @db.Decimal - profit Decimal? @db.Decimal - management_fee_per Decimal? @db.Decimal - management_fee Decimal? @db.Decimal - out_cost_per Decimal? @db.Decimal - out_cost Decimal? @db.Decimal - mold_cost Decimal? @db.Decimal - rd_cost_per Decimal? @db.Decimal - rd_cost Decimal? @db.Decimal - transport_cost Decimal? @db.Decimal - transport_cost_custom Decimal? @db.Decimal - transport_cost_result Decimal? @db.Decimal - palette_cost Decimal? @db.Decimal - palette_cost_custom Decimal? @db.Decimal - palette_cost_result Decimal? @db.Decimal - total_cost Decimal? @db.Decimal - add_cost Decimal? @db.Decimal - final_cost Decimal? @db.Decimal -} - -model profit_loss_total_addlist { - objid Int @id - target_objid Int? - part_name String? @db.VarChar(200) - inj_cav Decimal? @db.Decimal - machine_type String? @db.VarChar(200) - inj_ton Decimal? @db.Decimal - expense_total_cooling_time Decimal? @db.Decimal - expense Decimal? @db.Decimal - expense_cost Decimal? @db.Decimal -} - -model profit_loss_total_addlist2 { - objid Int @id - target_objid Int? - sub_part_name String? @default("NULL::character varying") @db.VarChar(200) - sub_us Decimal? @db.Decimal - sub_weight Decimal? @db.Decimal - sub_part_price Decimal? @db.Decimal - sub_material_price Decimal? @db.Decimal -} - -model profit_loss_weight { - area String? @db.VarChar - from_value Decimal? @db.Decimal - to_value Decimal? @db.Decimal - thickness Decimal? @db.Decimal - - @@ignore -} - -model project_mgmt { - objid String @id @db.VarChar - contract_objid String @db.VarChar - category_cd String? @db.VarChar - customer_objid String? @db.VarChar - product String? @db.VarChar - customer_project_name String? @db.VarChar - status_cd String? @db.VarChar - due_date String? @db.VarChar - location String? @db.VarChar - setup String? @db.VarChar - facility String? @db.VarChar - facility_qty String? @db.VarChar - facility_type String? @db.VarChar - facility_depth String? @db.VarChar - production_no String? @db.VarChar - bus_cal_cd String? @db.VarChar - category1_cd String? @db.VarChar - chg_user_id String? @db.VarChar - plan_date String? @db.VarChar - complete_date String? @db.VarChar - result_cd String? @db.VarChar - project_no String? @db.VarChar - pm_user_id String? @db.VarChar - contract_price String? @db.VarChar - regdate DateTime? @db.Timestamp(6) - writer String? @db.VarChar - contract_no String? @db.VarChar - customer_equip_name String? @db.VarChar - req_del_date String? @db.VarChar - contract_del_date String? @db.VarChar - contract_company String? @db.VarChar - contract_date String? @db.VarChar - po_no String? @db.VarChar - manufacture_plant String? @db.VarChar - contract_result String? @db.VarChar - project_name String? @db.VarChar - spec_user_id String? @db.VarChar - spec_plan_date String? @db.VarChar - spec_comp_date String? @db.VarChar - spec_result_cd String? @db.VarChar - est_plan_date String? @db.VarChar - est_user_id String? @db.VarChar - est_comp_date String? @db.VarChar - est_result_cd String? @db.VarChar - area_cd String? @db.VarChar - contract_price_currency String? @db.VarChar - contract_currency String? @db.VarChar - mechanical_type String? @db.VarChar - is_temp String? @db.VarChar - overhaul_order String? @db.VarChar -} - -model purchase_order_master { - objid String @id @db.VarChar - purchase_order_no String? @db.VarChar - category_cd String? @db.VarChar - product_group String? @db.VarChar - product String? @db.VarChar - my_company_objid String? @db.VarChar - partner_objid String? @db.VarChar - delivery_date String? @db.VarChar - delivery_place String? @db.VarChar - effective_date String? @db.VarChar - payment_terms String? @db.VarChar - remark String? @db.VarChar - writer String? @db.VarChar - regdate DateTime? @db.Timestamp(6) - status String? @db.VarChar - purchase_date String? @db.VarChar - product_code String? @db.VarChar - sales_request_objid String? @db.VarChar - sales_mng_user_id String? @db.VarChar - title String? @db.VarChar - contract_mgmt_objid String? @db.VarChar - type String? @db.VarChar - inspect_method String? @db.VarChar - vat_method String? @db.VarChar - discount_price String? @db.VarChar - total_supply_unit_price String? @db.VarChar - total_price String? @db.VarChar - nego_rate String? @db.VarChar - total_price_txt String? @db.VarChar - supply_bus_no String? @db.VarChar - supply_user_name String? @db.VarChar - supply_user_hp String? @db.VarChar - supply_user_tel String? @db.VarChar - supply_user_fax String? @db.VarChar - supply_user_email String? @db.VarChar - supply_addr String? @db.VarChar - unit_code String? @db.VarChar - bom_report_objid String? @db.VarChar - order_type_cd String? @db.VarChar - total_supply_price String? @db.VarChar - multi_yn String? @db.VarChar - multi_master_yn String? @db.VarChar - multi_master_objid String? @db.VarChar - delivery_plan_date String? @db.VarChar - delivery_plan_qty String? @db.VarChar - unit_code_old String? @db.VarChar - purchase_order_no_org String? @db.VarChar - reception_status String? @db.VarChar - sales_status String? @db.VarChar - reception_date String? @db.VarChar - total_real_supply_price String? @db.VarChar - total_price_txt_all String? @db.VarChar - total_price_all String? @db.VarChar - discount_price_all String? @db.VarChar - po_client_id String? @db.VarChar - total_supply_unit_price_all String? @db.VarChar - - @@index([bom_report_objid]) - @@index([contract_mgmt_objid]) - @@index([multi_master_objid]) -} - -model purchase_order_master_241216 { - objid String? @db.VarChar - purchase_order_no String? @db.VarChar - category_cd String? @db.VarChar - product_group String? @db.VarChar - product String? @db.VarChar - my_company_objid String? @db.VarChar - partner_objid String? @db.VarChar - delivery_date String? @db.VarChar - delivery_place String? @db.VarChar - effective_date String? @db.VarChar - payment_terms String? @db.VarChar - remark String? @db.VarChar - writer String? @db.VarChar - regdate DateTime? @db.Timestamp(6) - status String? @db.VarChar - purchase_date String? @db.VarChar - product_code String? @db.VarChar - sales_request_objid String? @db.VarChar - sales_mng_user_id String? @db.VarChar - title String? @db.VarChar - contract_mgmt_objid String? @db.VarChar - type String? @db.VarChar - inspect_method String? @db.VarChar - vat_method String? @db.VarChar - discount_price String? @db.VarChar - total_supply_unit_price String? @db.VarChar - total_price String? @db.VarChar - nego_rate String? @db.VarChar - total_price_txt String? @db.VarChar - supply_bus_no String? @db.VarChar - supply_user_name String? @db.VarChar - supply_user_hp String? @db.VarChar - supply_user_tel String? @db.VarChar - supply_user_fax String? @db.VarChar - supply_user_email String? @db.VarChar - supply_addr String? @db.VarChar - unit_code String? @db.VarChar - bom_report_objid String? @db.VarChar - order_type_cd String? @db.VarChar - total_supply_price String? @db.VarChar - multi_yn String? @db.VarChar - multi_master_yn String? @db.VarChar - multi_master_objid String? @db.VarChar - delivery_plan_date String? @db.VarChar - delivery_plan_qty String? @db.VarChar - unit_code_old String? @db.VarChar - purchase_order_no_org String? @db.VarChar - reception_status String? @db.VarChar - sales_status String? @db.VarChar - reception_date String? @db.VarChar - total_real_supply_price String? @db.VarChar - total_price_txt_all String? @db.VarChar - total_price_all String? @db.VarChar - discount_price_all String? @db.VarChar - po_client_id String? @db.VarChar - - @@ignore -} - -model purchase_order_multi { - objid String @id @unique(map: "ui_purchase_order_multi_01") @db.VarChar - purchase_order_master_objid String @db.VarChar - project_objid String @db.VarChar - delivery_plan_date String? @db.VarChar - delivery_plan_qty String? @db.VarChar - regdate DateTime? @db.Timestamp(6) - editdate DateTime? @db.Timestamp(6) - writer String? @db.VarChar(64) - editer String? @db.VarChar(64) -} - -model purchase_order_part { - objid String @id @db.VarChar - purchase_order_master_objid String? @db.VarChar - part_objid String? @db.VarChar - order_qty String? @db.VarChar - partner_price String? @db.VarChar - remark String? @db.VarChar - writer String? @db.VarChar - regdate DateTime? @db.Timestamp(6) - status String? @db.VarChar - part_name String? @db.VarChar - do_no String? @db.VarChar - thickness String? @db.VarChar - width String? @db.VarChar - height String? @db.VarChar - out_diameter String? @db.VarChar - length String? @db.VarChar - in_diameter String? @db.VarChar - inven_total_qty String? @db.VarChar - ld_part_objid String? @db.VarChar - spec String? @db.VarChar - maker String? @db.VarChar - supply_unit_price String? @db.VarChar - unit String? @db.VarChar - price1 String? @db.VarChar - price2 String? @db.VarChar - price3 String? @db.VarChar - part_no String? @db.VarChar - supply_unit_vat_price String? @db.VarChar - price4 String? @db.VarChar - supply_unit_vat_sum_price String? @db.VarChar - total_order_qty String? @db.VarChar - stock_qty String? @db.VarChar - real_order_qty String? @db.VarChar - update_date DateTime? @db.Timestamp(6) - modifier String? @db.VarChar - real_supply_price String? @db.VarChar - bom_qty String? @db.VarChar - qty String? @db.VarChar - - @@index([purchase_order_master_objid]) -} - -model ratecal_mgmt { - ratecal_mgmt_objid Decimal @default(0) @db.Decimal - position String? @db.VarChar(100) - user_name String? @db.VarChar(100) - ordinary_hourly_wage String? @db.VarChar(20) - daily_wage String? @db.VarChar(20) - est_annual_salary String? @db.VarChar(20) - reg_user_id String? @db.VarChar(100) - reg_date DateTime? @db.Timestamp(6) - user_id String? @db.VarChar(50) - yyyy String? @db.VarChar(4) - reason String? @db.VarChar(4000) - status String? @db.VarChar(20) - - @@ignore -} - -model receive_history { - objid String @id @db.VarChar - part_objid String @db.VarChar - parent_objid String @db.VarChar - receive_date String? @db.VarChar - receive_qty String? @db.VarChar - receive_user_id String? @db.VarChar - transfer_user_id String? @db.VarChar - writer String? @db.VarChar - regdate DateTime? @db.Timestamp(6) -} - -model rel_eo_part { - objid Decimal @db.Decimal - parent_objid Decimal @db.Decimal - child_objid Decimal @db.Decimal - reg_date DateTime? @db.Timestamp(6) - writer String? @db.VarChar(50) - memo String? @db.VarChar - - @@ignore -} - -model rel_menu_auth { - objid Decimal? @db.Decimal - menu_objid Decimal? @db.Decimal - auth_objid Decimal? @db.Decimal - writer String? @db.VarChar(32) - regdate DateTime? @db.Timestamp(6) - create_yn String? @default("N") @db.VarChar(50) - read_yn String? @default("N") @db.VarChar(50) - update_yn String? @default("N") @db.VarChar(50) - delete_yn String? @default("N") @db.VarChar(50) - - @@ignore -} - -model rel_sample_supply_plan { - objid Decimal @id @db.Decimal - target_objid String? @db.VarChar(64) - plan_step_code String? @db.VarChar(64) - plan_qty String? @db.VarChar(64) - writer String? @db.VarChar(32) - regdate DateTime? @db.Date -} - -model rel_sample_supply_result { - objid Decimal @id @db.Decimal - target_objid String? @db.VarChar(64) - result_step_parent_code String? @db.VarChar(64) - result_step_code String? @db.VarChar(64) - result_date String? @db.VarChar(64) - result_qty String? @db.VarChar(64) - writer String? @db.VarChar(32) - regdate DateTime? @db.Date -} - -model release_mgmt { - objid String @id @db.VarChar - parent_objid String? @db.VarChar - release_car_no String? @db.VarChar - release_date String? @db.VarChar - task_over_user_id String? @db.VarChar - task_over_date String? @db.VarChar - task_over_comment String? @db.VarChar - status String? @db.VarChar - regdate DateTime? @db.Timestamp(6) - writer String? @db.VarChar - product_group String? @db.VarChar - product String? @db.VarChar - install_complete_date String? @db.VarChar - install_result String? @db.VarChar -} - -model resource_mng { - objid Decimal @id @db.Decimal - part_objid String? @db.VarChar(100) - part_name String? @db.VarChar(100) - spec String? @db.VarChar(50) - material String? @db.VarChar(50) - unit String? @db.VarChar(50) - weight String? @db.VarChar(50) - regdate DateTime? @db.Timestamp(6) - writer String? @db.VarChar - thickness String? @db.VarChar - width String? @db.VarChar - height String? @db.VarChar - out_diameter String? @db.VarChar - in_diameter String? @db.VarChar - length String? @db.VarChar - maker String? @default("NULL::character varying") @db.VarChar(50) - ld_part_objid String? @default("NULL::character varying") @db.VarChar(100) - - @@index([part_objid]) -} - -model resource_price { - objid Decimal @id @db.Decimal - parent_objid Decimal @db.Decimal - unit_price String? @db.VarChar(50) - remark String? @db.VarChar(500) - regdate DateTime? @db.Timestamp(6) - writer String? @db.VarChar(50) - apply_date DateTime? @db.Timestamp(0) - person_price String? @db.VarChar - agency_price String? @db.VarChar -} - -model route { - objid Decimal @default(0) @db.Decimal - target_objid Decimal? @db.Decimal - approval_objid Decimal? @db.Decimal - route_seq String? @db.VarChar(64) - approval_title String? @db.VarChar(512) - approval_desc String? @db.VarChar(512) - writer String? @db.VarChar(32) - regdate DateTime? @db.Timestamp(6) - status String? @db.VarChar(32) - system_type String? @db.VarChar(32) - - @@index([approval_objid]) - @@index([target_objid]) - @@ignore -} - -model sales_bom_part_qty { - sales_bom_objid String @db.VarChar - objid String @id @db.VarChar - bom_report_objid String @db.VarChar - parent_objid String? @db.VarChar - child_objid String? @db.VarChar - parent_part_no String? @db.VarChar - part_no String? @db.VarChar - qty String? @db.VarChar - seq Int? - product_type_code String? @db.VarChar - first_partner_objid String? @db.VarChar - first_partner_price String? @db.VarChar - first_partner_qty String? @db.VarChar - second_partner_objid String? @db.VarChar - second_partner_price String? @db.VarChar - second_partner_qty String? @db.VarChar - third_partner_objid String? @db.VarChar - third_partner_price String? @db.VarChar - third_partner_qty String? @db.VarChar - regdate DateTime? @db.Timestamp(6) - part_objid String? @db.VarChar - partner_objid String? @db.VarChar - partner_price String? @db.VarChar - partner_remark String? @db.VarChar - palette_code String? @db.VarChar - sourcing_code String? @db.VarChar - process1_code String? @db.VarChar - process2_code String? @db.VarChar - process3_code String? @db.VarChar - process4_code String? @db.VarChar - sales_part_code String? @db.VarChar -} - -model sales_bom_report { - objid String @id @default("") @db.VarChar - parent_objid String? @unique(map: "sales_bom_report_parent_objid_idx") @db.VarChar - supply_objid String? @db.VarChar - price String? @db.VarChar - supply_objid1 String? @db.VarChar - price1 String? @db.VarChar(64) - supply_objid2 String? @db.VarChar(100) - price2 String? @db.VarChar(64) - supply_objid3 String? @db.VarChar(64) - price3 String? @db.VarChar(100) - supply_objid4 String? @db.VarChar(100) - price4 String? @db.VarChar(2000) - writer String? @db.VarChar - regdate DateTime? @db.Timestamp(6) - update_date DateTime? @db.Timestamp(6) - modifier String? @db.VarChar -} - -model sales_bom_report_part { - objid String @id @default("") @db.VarChar - parent_objid String? @db.VarChar - part_objid String? @db.VarChar - supply_objid String? @db.VarChar - price String? @db.VarChar - supply_objid1 String? @db.VarChar - price1 String? @db.VarChar(64) - supply_objid2 String? @db.VarChar(100) - price2 String? @db.VarChar(64) - supply_objid3 String? @db.VarChar(64) - price3 String? @db.VarChar(100) - supply_objid4 String? @db.VarChar(100) - price4 String? @db.VarChar(2000) - writer String? @db.VarChar - regdate DateTime? @db.Timestamp(6) - price_sum String? @db.VarChar - parent_part_objid String? @db.VarChar - bom_part_qty_objid String? @db.VarChar - update_date DateTime? @db.Timestamp(6) - modifier String? @db.VarChar - pre_booking_qty String? @db.VarChar - - @@index([parent_objid]) -} - -model sales_bom_report_part_241218 { - objid String? @db.VarChar - parent_objid String? @db.VarChar - part_objid String? @db.VarChar - supply_objid String? @db.VarChar - price String? @db.VarChar - supply_objid1 String? @db.VarChar - price1 String? @db.VarChar(64) - supply_objid2 String? @db.VarChar(100) - price2 String? @db.VarChar(64) - supply_objid3 String? @db.VarChar(64) - price3 String? @db.VarChar(100) - supply_objid4 String? @db.VarChar(100) - price4 String? @db.VarChar(2000) - writer String? @db.VarChar - regdate DateTime? @db.Timestamp(6) - price_sum String? @db.VarChar - parent_part_objid String? @db.VarChar - bom_part_qty_objid String? @db.VarChar - update_date DateTime? @db.Timestamp(6) - modifier String? @db.VarChar - pre_booking_qty String? @db.VarChar - - @@ignore -} - -model sales_long_delivery { - objid String @id @db.VarChar - ld_part_name String @db.VarChar - spec String? @db.VarChar - form_no String? @db.VarChar - maker String? @db.VarChar - material_code String? @db.VarChar - supply_objid String? @db.VarChar - regdate DateTime? @db.Timestamp(6) - writer String? @db.VarChar - location String? @db.VarChar - price String? @default("0") @db.VarChar -} - -model sales_long_delivery_input { - objid String @id(map: "sales_long_delivery_plan_pkey") @db.VarChar - parent_objid String? @db.VarChar - contract_objid String? @db.VarChar - input_qty String? @db.VarChar - input_date String? @db.VarChar - admin_edit_date String? @db.VarChar - admin_editor String? @db.VarChar -} - -model sales_long_delivery_predict { - objid String @id @db.VarChar - parent_objid String? @db.VarChar - month String? @db.VarChar - use_place String? @db.VarChar - qty String? @db.VarChar - note String? @db.VarChar - contract_objid String? @db.VarChar -} - -model sales_part_chg { - objid String @id @db.VarChar - part_objid String? @db.VarChar - confirm_date String? @db.VarChar - act_cd String? @db.VarChar - purchase_order_master_objid String? @db.VarChar - note String? @db.VarChar - regdate DateTime? @db.Timestamp(6) - writer String? @db.VarChar - act_status String? @db.VarChar - bom_report_objid String? @db.VarChar - qty_child_objid String? @db.VarChar -} - -model sales_request_master { - objid String @id @db.VarChar - request_mng_no String? @db.VarChar - request_cd String? @db.VarChar - project_no String? @db.VarChar - release_date String? @db.VarChar - request_reasons String? @db.VarChar - request_user_id String? @db.VarChar - delivery_request_date String? @db.VarChar - unit_name String? @db.VarChar - status String? @db.VarChar - receipt_user_id String? @db.VarChar - receipt_date String? @db.VarChar - writer String? @db.VarChar - regdate DateTime? @db.Timestamp(6) - remark String? @db.VarChar -} - -model sales_request_part { - objid String @id @db.VarChar - sales_bom_qty_objid String? @db.VarChar - part_objid String? @db.VarChar - sales_request_master_objid String? @db.VarChar - qty String? @db.VarChar - partner_objid String? @db.VarChar - partner_price String? @db.VarChar - delivery_request_date String? @db.VarChar - writer String? @db.VarChar - regdate DateTime? @db.Timestamp(6) - status String? @db.VarChar - remark String? @db.VarChar - order_qty String? @db.VarChar - org_qty String? @db.VarChar - spec String? @db.VarChar - part_name String? @db.VarChar -} - -model sample_supply { - objid Decimal @id @db.Decimal - project_objid String? @db.VarChar(64) - oem_objid String? @db.VarChar(64) - car_objid String? @db.VarChar(64) - product_group_objid String? @db.VarChar(64) - product_objid String? @db.VarChar(64) - unit String? @db.VarChar(32) - status String? @db.VarChar(32) - writer String? @db.VarChar(32) - regdate DateTime? @db.Date -} - -model setup_wbs_task { - objid String? @unique(map: "setup_wbs_task_pk") @db.VarChar - contract_objid String? @db.VarChar - parent_objid String? @db.VarChar - task_category String? @db.VarChar - task_name String? @db.VarChar(1000) - standard_objid String? @db.VarChar - setup_plan_start String? @db.VarChar - setup_plan_end String? @db.VarChar - setup_act_start String? @db.VarChar - setup_act_end String? @db.VarChar - setup_delaye_day String? @db.VarChar - writer String? @db.VarChar - employees_in String? @db.VarChar - employees_out String? @db.VarChar - employees_total String? @db.VarChar - setup_rate String? @default("0") @db.VarChar - unit_no String? @db.VarChar - task_seq String? @db.VarChar - proj_step String? @db.VarChar - regdate DateTime? @db.Timestamp(6) - - @@index([contract_objid]) - @@ignore -} - -model setup_wbs_task_standard { - objid String? @unique @db.VarChar - contract_objid String? @db.VarChar - parent_objid String? @db.VarChar - task_category String? @db.VarChar - task_name String? @db.VarChar(1000) - setup_user_id String? @db.VarChar - setup_plan_start String? @db.VarChar - setup_plan_end String? @db.VarChar - setup_act_start String? @db.VarChar - setup_act_end String? @db.VarChar - setup_delaye_day String? @db.VarChar - writer String? @db.VarChar - employees_in String? @db.VarChar - employees_out String? @db.VarChar - employees_total String? @db.VarChar - setup_rate String? @default("0") @db.VarChar - unit_no String? @db.VarChar - task_seq String? @db.VarChar - proj_step String? @db.VarChar - - @@ignore -} - -model standard_doc_category { - objid Decimal @id(map: "name") @db.Decimal - parent_objid Decimal? @db.Decimal - category_type String? @db.VarChar(32) - use_car String? @default("0") @db.VarChar(32) - use_product String? @default("0") @db.VarChar(32) - use_revision String? @default("0") @db.VarChar(32) - use_doc_link String? @default("0") @db.VarChar(32) - use_compatition_car String? @default("0") @db.VarChar(32) - use_product_group String? @default("0") @db.VarChar(32) - doc_no_rule String? @db.VarChar(64) - category_name String? @db.VarChar(64) - seq Decimal? @db.Decimal - spec_no String? @db.VarChar(32) - writer String? @db.VarChar(32) - spec_input_type String? @db.VarChar(32) - regdate DateTime? @db.Timestamp(6) - status String? @db.VarChar(32) - use_manufacturer String? @default("0") @db.VarChar(32) - use_participation_date String? @default("0") @db.VarChar(32) -} - -model standard_doc_info { - objid Decimal? @db.Decimal - category_objid Decimal? @db.Decimal - doc_no String? @db.VarChar(128) - doc_name String? @db.VarChar(128) - spec_no String? @db.VarChar(128) - product_group_objid Decimal? @db.Decimal - product_objid Decimal? @db.Decimal - car_objid Decimal? @db.Decimal - grade_objid Decimal? @db.Decimal - compatition_car_name String? @db.VarChar(64) - standard_name String? @db.VarChar(128) - company_objid Decimal? @db.Decimal - oem_objid Decimal? @db.Decimal - compete_company_objid Decimal? @db.Decimal - description String? @db.VarChar(4000) - change_history String? @db.VarChar(4000) - step String? @db.VarChar(32) - rev String? @db.VarChar(32) - establish_date DateTime? @db.Timestamp(6) - revision_date DateTime? @db.Timestamp(6) - is_last String @default("0") @db.VarChar(32) - writer String? @db.VarChar(32) - spec_input_type String? @db.VarChar(64) - regdate DateTime? @db.Timestamp(6) - status String? @db.VarChar(32) - revision_order String? @db.VarChar(32) - eo_no String? @db.VarChar(64) - manufacturer String? @db.VarChar(64) - participation_date DateTime? @db.Timestamp(6) - - @@ignore -} - -model structural_review_proposal { - objid Decimal @id @db.Decimal - project_objid String? @db.VarChar(64) - oem_objid String? @db.VarChar(64) - car_objid String? @db.VarChar(64) - product_group_objid String? @db.VarChar(64) - product_objid String? @db.VarChar(64) - problem_contents String? @db.VarChar(1024) - suggest_contents String? @db.VarChar(1024) - review_contents String? @db.VarChar(1024) - charger_user_id String? @db.VarChar(64) - measure_result_status String? @db.VarChar(64) - past_car_problem_type String? @db.VarChar(64) - measure_date String? @db.VarChar(64) - problem_type_objid String? @db.VarChar(64) - result_contents String? @db.VarChar(1024) - status String? @db.VarChar(32) - writer String? @db.VarChar(32) - regdate DateTime? @db.Date -} - -model supply_charger_mng { - objid String @id @db.VarChar - charger_type String? @db.VarChar - supply_objid String? @db.VarChar - charger_name String? @db.VarChar - phone String? @db.VarChar - tel String? @db.VarChar - fax String? @db.VarChar - email String? @db.VarChar - writer String? @db.VarChar - regdate DateTime? @db.Timestamp(6) -} - -model supply_mng { - objid Decimal @id @default(0) @db.Decimal - supply_code String? @db.VarChar(100) - supply_name String? @db.VarChar(100) - reg_no String? @db.VarChar(100) - supply_address String? @db.VarChar(500) - supply_busname String? @db.VarChar(100) - supply_stockname String? @db.VarChar(100) - supply_tel_no String? @db.VarChar(30) - supply_fax_no String? @db.VarChar(30) - charge_user_name String? @db.VarChar(100) - payment_method String? @db.VarChar(100) - reg_id String? @db.VarChar(100) - reg_date DateTime? @db.Timestamp(6) - status String? @db.VarChar(32) - area_cd String? @db.VarChar(32) - bus_reg_no String? @db.VarChar(100) - office_no String? @default("NULL::character varying") @db.VarChar(32) - email String? @default("NULL::character varying") @db.VarChar(32) - cus_no String? @db.VarChar -} - -model supply_mng_history { - objid Decimal @id @db.Decimal - target_objid Decimal @db.Decimal - supply_code String? @db.VarChar(100) - supply_name String? @db.VarChar(100) - reg_no String? @db.VarChar(100) - supply_address String? @db.VarChar(500) - supply_busname String? @db.VarChar(100) - supply_stockname String? @db.VarChar(100) - supply_tel_no String? @db.VarChar(30) - supply_fax_no String? @db.VarChar(30) - charge_user_name String? @db.VarChar(100) - payment_method String? @db.VarChar(100) - writer String? @db.VarChar(100) - regdate DateTime? @db.Timestamp(6) - status String? @db.VarChar(32) -} - -model surtax { - objid Decimal @default(0) @db.Decimal - order_mgmt_objid Decimal? @db.Decimal - region_cd String? @db.VarChar(20) - customer_cd String? @db.VarChar(20) - reg_date String? @db.VarChar(10) - title String? @db.VarChar(200) - qty Decimal? @db.Decimal - price Decimal? @db.Decimal - sup_price Decimal? @db.Decimal - sur_price Decimal? @db.Decimal - total_price Decimal? @db.Decimal - reg_user_id String? @db.VarChar(50) - - @@ignore -} - -model table_labels { - table_name String @id @db.VarChar(100) - table_label String? @db.VarChar(200) - description String? - created_date DateTime? @default(now()) @db.Timestamp(6) - updated_date DateTime? @default(now()) @db.Timestamp(6) - column_labels column_labels[] -} - -model template_mng { - objid Int @id - template_code String? @db.VarChar - contents String? - title String? @db.VarChar - reg_date DateTime? @db.Timestamp(6) - status String? @db.VarChar - template_code_detail String? @db.VarChar -} - -model time_sheet { - objid Decimal @default(0) @db.Decimal - project_mgmt_objid Decimal? @db.Decimal - work_date String? @db.VarChar(10) - reg_user_id String? @db.VarChar(20) - bus_cd String? @db.VarChar(100) - title String? @db.VarChar(500) - trip_cd String? @db.VarChar(100) - company_cd String? @db.VarChar(100) - work_time String? @db.VarChar(10) - reg_date DateTime? @db.Timestamp(6) - dept_id String? @db.VarChar(10) - system_reg_user_id String? @db.VarChar(20) - - @@ignore -} - -model used_mng { - objid Decimal @id @default(0) @db.Decimal - equipment_number String? @default("NULL::character varying") @db.VarChar(100) - division String? @default("NULL::character varying") @db.VarChar(100) - buyer String? @default("NULL::character varying") @db.VarChar(100) - purchase_amount String? @default("NULL::character varying") @db.VarChar(100) - purchase_date DateTime? @db.Timestamp(6) - location String? @default("NULL::character varying") @db.VarChar(100) - uniqueness String? @default("NULL::character varying") @db.VarChar(1000) - weight String? @default("NULL::character varying") @db.VarChar(100) - span String? @default("NULL::character varying") @db.VarChar(100) - length String? @default("NULL::character varying") @db.VarChar(100) - head String? @default("NULL::character varying") @db.VarChar(10) - neck_height String? @default("NULL::character varying") @db.VarChar(100) - wheel_base String? @default("NULL::character varying") @db.VarChar(100) - winding String? @default("NULL::character varying") @db.VarChar(100) - rail String? @default("NULL::character varying") @db.VarChar(100) - wheel_size String? @default("NULL::character varying") @db.VarChar(4000) - transverse String? @default("NULL::character varying") @db.VarChar(100) - base_plate String? @default("NULL::character varying") @db.VarChar(100) - pinion_gear String? @default("NULL::character varying") @db.VarChar(100) - electric String? @default("NULL::character varying") @db.VarChar(100) - frame String? @default("NULL::character varying") @db.VarChar(100) - upper_lower_plate String? @default("NULL::character varying") @db.VarChar(100) - inner_width String? @default("NULL::character varying") @db.VarChar(100) - side_plate String? @default("NULL::character varying") @db.VarChar(100) - outer_width String? @default("NULL::character varying") @db.VarChar(100) - repair_amount String? @default("NULL::character varying") @db.VarChar(100) - sales_target String? @default("NULL::character varying") @db.VarChar(100) - sales_amount String? @default("NULL::character varying") @db.VarChar(100) - input_amount String? @default("NULL::character varying") @db.VarChar(100) - regdate DateTime? @db.Timestamp(6) - editdate DateTime? @db.Timestamp(6) - writer String? @default("NULL::character varying") @db.VarChar(50) - status String? @default("NULL::character varying") @db.VarChar(50) - use_yn String? @db.VarChar(10) -} - -model user_info { - sabun String? @db.VarChar(1024) - user_id String @id(map: "user_id") @db.VarChar(1024) - user_password String? @db.VarChar(1024) - user_name String? @db.VarChar(1024) - user_name_eng String? @db.VarChar(1024) - user_name_cn String? @db.VarChar(1024) - dept_code String? @db.VarChar(1024) - dept_name String? @db.VarChar(1024) - position_code String? @db.VarChar(1024) - position_name String? @db.VarChar(1024) - email String? @db.VarChar(1024) - tel String? @db.VarChar(1024) - cell_phone String? @db.VarChar(1024) - user_type String? @db.VarChar(1024) - user_type_name String? @db.VarChar(1024) - regdate DateTime? @db.Timestamp(6) - status String? @db.VarChar(32) - end_date DateTime? @db.Timestamp(6) - fax_no String? @db.VarChar - partner_objid String? @db.VarChar - rank String? @db.VarChar - photo Bytes? - locale String? @db.VarChar - company_code String? @db.VarChar(50) - data_type String? @db.VarChar(64) -} - -model user_info_history { - sabun String? @db.VarChar(1024) - user_id String @db.VarChar(1024) - user_name String? @db.VarChar(1024) - dept_code String? @db.VarChar(1024) - dept_name String? @db.VarChar(1024) - user_type_name String? @db.VarChar(1024) - history_type String? @db.VarChar(64) - writer String? @db.VarChar(64) - regdate DateTime? @db.Timestamp(6) - status String? @db.VarChar(32) - - @@ignore -} - -model work_diary { - objid String @id @db.VarChar - contract_objid String? @db.VarChar - unit_code String? @db.VarChar - division String? @db.VarChar - task_name String? @db.VarChar - worker_id String? @db.VarChar - work_start_date String? @db.VarChar - work_end_date String? @db.VarChar - work_hour String? @db.VarChar - remark String? @db.VarChar - status String? @db.VarChar - writer String? @db.VarChar - regdate DateTime? @db.Timestamp(6) - sourcing_type String? @db.VarChar - production_type String? @db.VarChar -} - -model work_mail_list { - objid String? @db.VarChar - mailtype String? @db.VarChar - user_id String? @db.VarChar - - @@ignore -} - -/// The underlying table does not contain a valid unique identifier and can therefore currently not be handled by Prisma Client. -model zz_230410_user_info { - sabun String? @db.VarChar(1024) - user_id String? @db.VarChar(1024) - user_password String? @db.VarChar(1024) - user_name String? @db.VarChar(1024) - user_name_eng String? @db.VarChar(1024) - user_name_cn String? @db.VarChar(1024) - dept_code String? @db.VarChar(1024) - dept_name String? @db.VarChar(1024) - position_code String? @db.VarChar(1024) - position_name String? @db.VarChar(1024) - email String? @db.VarChar(1024) - tel String? @db.VarChar(1024) - cell_phone String? @db.VarChar(1024) - user_type String? @db.VarChar(1024) - user_type_name String? @db.VarChar(1024) - regdate DateTime? @db.Timestamp(6) - data_type String? @db.VarChar(64) - status String? @db.VarChar(32) - end_date DateTime? @db.Timestamp(6) - fax_no String? @db.VarChar - - @@ignore -} - -model screen_definitions { - screen_id Int @id @default(autoincrement()) - screen_name String @db.VarChar(100) - screen_code String @db.VarChar(50) - table_name String @db.VarChar(100) - company_code String @db.VarChar(50) - description String? - is_active String @default("Y") @db.Char(1) - layout_metadata Json? - created_date DateTime @default(now()) @db.Timestamp(6) - created_by String? @db.VarChar(50) - updated_date DateTime @default(now()) @db.Timestamp(6) - updated_by String? @db.VarChar(50) - deleted_date DateTime? @db.Timestamp(6) - deleted_by String? @db.VarChar(50) - delete_reason String? - layouts screen_layouts[] - menu_assignments screen_menu_assignments[] - - @@index([company_code]) - @@index([is_active, company_code], map: "idx_screen_definitions_status") -} - -model screen_layouts { - layout_id Int @id @default(autoincrement()) - screen_id Int - component_type String @db.VarChar(50) - component_id String @unique @db.VarChar(100) - parent_id String? @db.VarChar(100) - position_x Int - position_y Int - width Int - height Int - properties Json? - display_order Int @default(0) - created_date DateTime @default(now()) @db.Timestamp(6) - layout_type String? @db.VarChar(50) - layout_config Json? - zones_config Json? - zone_id String? @db.VarChar(100) - screen screen_definitions @relation(fields: [screen_id], references: [screen_id], onDelete: Cascade) - widgets screen_widgets[] - - @@index([screen_id]) - @@index([layout_type], map: "idx_screen_layouts_layout_type") - @@index([zone_id], map: "idx_screen_layouts_zone_id") -} - -model screen_widgets { - widget_id Int @id @default(autoincrement()) - layout_id Int - table_name String @db.VarChar(100) - column_name String @db.VarChar(100) - widget_type String @db.VarChar(50) - label String? @db.VarChar(200) - placeholder String? @db.VarChar(200) - is_required Boolean @default(false) - is_readonly Boolean @default(false) - validation_rules Json? - display_properties Json? - created_date DateTime @default(now()) @db.Timestamp(6) - layout screen_layouts @relation(fields: [layout_id], references: [layout_id], onDelete: Cascade) - - @@index([layout_id]) -} - -model screen_templates { - template_id Int @id @default(autoincrement()) - template_name String @db.VarChar(100) - template_type String @db.VarChar(50) - company_code String @db.VarChar(50) - description String? - layout_data Json? - is_public Boolean @default(false) - created_by String? @db.VarChar(50) - created_date DateTime @default(now()) @db.Timestamp(6) - - @@index([company_code]) -} - -model screen_menu_assignments { - assignment_id Int @id @default(autoincrement()) - screen_id Int - menu_objid Decimal @db.Decimal - company_code String @db.VarChar(50) - display_order Int @default(0) - is_active String @default("Y") @db.Char(1) - created_date DateTime @default(now()) @db.Timestamp(6) - created_by String? @db.VarChar(50) - screen screen_definitions @relation(fields: [screen_id], references: [screen_id], onDelete: Cascade) - - @@unique([screen_id, menu_objid, company_code]) - @@index([company_code]) -} - -/// 공통코드 카테고리 테이블 -model code_category { - category_code String @id @db.VarChar(50) - category_name String @db.VarChar(100) - category_name_eng String? @db.VarChar(100) - description String? - sort_order Int? @default(0) - is_active String? @default("Y") @db.Char(1) - created_date DateTime? @default(now()) @db.Timestamp(6) - created_by String? @db.VarChar(50) - updated_date DateTime? @default(now()) @db.Timestamp(6) - updated_by String? @db.VarChar(50) - codes code_info[] -} - -/// 공통코드 상세 정보 테이블 -model code_info { - code_category String @db.VarChar(50) - code_value String @db.VarChar(50) - code_name String @db.VarChar(100) - code_name_eng String? @db.VarChar(100) - description String? - sort_order Int? @default(0) - is_active String? @default("Y") @db.Char(1) - created_date DateTime? @default(now()) @db.Timestamp(6) - created_by String? @db.VarChar(50) - updated_date DateTime? @default(now()) @db.Timestamp(6) - updated_by String? @db.VarChar(50) - category code_category @relation(fields: [code_category], references: [category_code], onDelete: Cascade, map: "fk_code_info_category") - - @@id([code_category, code_value], map: "pk_code_info") - @@index([code_category, sort_order], map: "idx_code_info_sort") -} - -model web_type_standards { - web_type String @id @db.VarChar(50) - type_name String @db.VarChar(100) - type_name_eng String? @db.VarChar(100) - description String? - category String? @default("input") @db.VarChar(50) - default_config Json? - validation_rules Json? - default_style Json? - input_properties Json? - sort_order Int? @default(0) - is_active String? @default("Y") @db.Char(1) - created_date DateTime? @default(now()) @db.Timestamp(6) - created_by String? @db.VarChar(50) - updated_date DateTime? @default(now()) @db.Timestamp(6) - updated_by String? @db.VarChar(50) - component_name String? @default("TextWidget") @db.VarChar(100) - config_panel String? @db.VarChar(100) - - @@index([is_active], map: "idx_web_type_standards_active") - @@index([category], map: "idx_web_type_standards_category") - @@index([sort_order], map: "idx_web_type_standards_sort") -} - -model style_templates { - template_id Int @id @default(autoincrement()) - template_name String @db.VarChar(100) - template_name_eng String? @db.VarChar(100) - template_type String @db.VarChar(50) - category String? @db.VarChar(50) - style_config Json - preview_config Json? - company_code String? @default("*") @db.VarChar(50) - is_default Boolean? @default(false) - is_public Boolean? @default(true) - sort_order Int? @default(0) - is_active String? @default("Y") @db.Char(1) - created_date DateTime? @default(now()) @db.Timestamp(6) - created_by String? @db.VarChar(50) - updated_date DateTime? @default(now()) @db.Timestamp(6) - updated_by String? @db.VarChar(50) - - @@index([is_active], map: "idx_style_templates_active") - @@index([category], map: "idx_style_templates_category") - @@index([company_code], map: "idx_style_templates_company") - @@index([template_type], map: "idx_style_templates_type") -} - -model button_action_standards { - action_type String @id @db.VarChar(50) - action_name String @db.VarChar(100) - action_name_eng String? @db.VarChar(100) - description String? - category String? @default("general") @db.VarChar(50) - default_text String? @db.VarChar(100) - default_text_eng String? @db.VarChar(100) - default_icon String? @db.VarChar(50) - default_color String? @db.VarChar(50) - default_variant String? @db.VarChar(50) - confirmation_required Boolean? @default(false) - confirmation_message String? - validation_rules Json? - action_config Json? - sort_order Int? @default(0) - is_active String? @default("Y") @db.Char(1) - created_date DateTime? @default(now()) @db.Timestamp(6) - created_by String? @db.VarChar(50) - updated_date DateTime? @default(now()) @db.Timestamp(6) - updated_by String? @db.VarChar(50) - - @@index([is_active], map: "idx_button_action_standards_active") - @@index([category], map: "idx_button_action_standards_category") - @@index([sort_order], map: "idx_button_action_standards_sort") -} - -model grid_standards { - grid_id Int @id @default(autoincrement()) - grid_name String @db.VarChar(100) - grid_name_eng String? @db.VarChar(100) - description String? - grid_size Int - grid_color String? @default("#e5e7eb") @db.VarChar(50) - grid_opacity Decimal? @default(0.5) @db.Decimal(3, 2) - snap_enabled Boolean? @default(true) - snap_threshold Int? @default(5) - grid_config Json? - company_code String? @default("*") @db.VarChar(50) - is_default Boolean? @default(false) - sort_order Int? @default(0) - is_active String? @default("Y") @db.Char(1) - created_date DateTime? @default(now()) @db.Timestamp(6) - created_by String? @db.VarChar(50) - updated_date DateTime? @default(now()) @db.Timestamp(6) - updated_by String? @db.VarChar(50) - - @@index([is_active], map: "idx_grid_standards_active") - @@index([company_code], map: "idx_grid_standards_company") - @@index([sort_order], map: "idx_grid_standards_sort") -} - -model template_standards { - template_code String @id @db.VarChar(50) - template_name String @db.VarChar(100) - template_name_eng String? @db.VarChar(100) - description String? - category String @db.VarChar(50) - icon_name String? @db.VarChar(50) - default_size Json? @db.Json - layout_config Json @db.Json - preview_image String? @db.VarChar(255) - sort_order Int? @default(0) - is_active String? @default("Y") @db.Char(1) - is_public String? @default("Y") @db.Char(1) - company_code String @db.VarChar(50) - created_date DateTime? @default(now()) @db.Timestamp(6) - created_by String? @db.VarChar(50) - updated_date DateTime? @default(now()) @db.Timestamp(6) - updated_by String? @db.VarChar(50) - - @@index([category], map: "idx_template_standards_category") - @@index([company_code], map: "idx_template_standards_company") - @@index([is_active], map: "idx_template_standards_active") - @@index([sort_order], map: "idx_template_standards_sort") -} - -model component_standards { - component_code String @id @db.VarChar(50) - component_name String @db.VarChar(100) - component_name_eng String? @db.VarChar(100) - description String? - category String @db.VarChar(50) - icon_name String? @db.VarChar(50) - default_size Json? @db.Json - component_config Json @db.Json - preview_image String? @db.VarChar(255) - sort_order Int? @default(0) - is_active String? @default("Y") @db.Char(1) - is_public String? @default("Y") @db.Char(1) - company_code String @db.VarChar(50) - created_date DateTime? @default(now()) @db.Timestamp(6) - created_by String? @db.VarChar(50) - updated_date DateTime? @default(now()) @db.Timestamp(6) - updated_by String? @db.VarChar(50) - - @@index([category], map: "idx_component_standards_category") - @@index([company_code], map: "idx_component_standards_company") - @@index([is_active], map: "idx_component_standards_active") - @@index([sort_order], map: "idx_component_standards_sort") -} - -model layout_standards { - layout_code String @id @db.VarChar(50) - layout_name String @db.VarChar(100) - layout_name_eng String? @db.VarChar(100) - description String? - layout_type String @db.VarChar(50) - category String @db.VarChar(50) - icon_name String? @db.VarChar(50) - default_size Json? - layout_config Json - zones_config Json - preview_image String? @db.VarChar(255) - sort_order Int? @default(0) - is_active String? @default("Y") @db.Char(1) - is_public String? @default("Y") @db.Char(1) - company_code String @db.VarChar(50) - created_date DateTime? @default(now()) @db.Timestamp(6) - created_by String? @db.VarChar(50) - updated_date DateTime? @default(now()) @db.Timestamp(6) - updated_by String? @db.VarChar(50) - layout_instances layout_instances[] - - @@index([layout_type], map: "idx_layout_standards_type") - @@index([category], map: "idx_layout_standards_category") - @@index([company_code], map: "idx_layout_standards_company") - @@index([is_active], map: "idx_layout_standards_active") - @@index([sort_order], map: "idx_layout_standards_sort") -} - -model table_relationships { - relationship_id Int @id @default(autoincrement()) - relationship_name String? @db.VarChar(200) - from_table_name String? @db.VarChar(100) - from_column_name String? @db.VarChar(100) - to_table_name String? @db.VarChar(100) - to_column_name String? @db.VarChar(100) - relationship_type String? @db.VarChar(20) - connection_type String? @db.VarChar(20) - company_code String? @db.VarChar(50) - settings Json? - is_active String? @db.Char(1) - created_date DateTime? @db.Timestamp(6) - created_by String? @db.VarChar(50) - updated_date DateTime? @db.Timestamp(6) - updated_by String? @db.VarChar(50) - diagram_id Int? -} - -model data_relationship_bridge { - bridge_id Int @id @default(autoincrement()) - relationship_id Int? - from_table_name String @db.VarChar(100) - from_column_name String @db.VarChar(100) - to_table_name String @db.VarChar(100) - to_column_name String @db.VarChar(100) - connection_type String @db.VarChar(20) - company_code String @db.VarChar(50) - created_at DateTime? @default(now()) @db.Timestamp(6) - created_by String? @db.VarChar(50) - updated_at DateTime? @default(now()) @db.Timestamp(6) - updated_by String? @db.VarChar(50) - is_active String? @default("Y") @db.Char(1) - bridge_data Json? - from_key_value String? @db.VarChar(500) - from_record_id String? @db.VarChar(100) - to_key_value String? @db.VarChar(500) - to_record_id String? @db.VarChar(100) - - @@index([connection_type], map: "idx_data_bridge_connection_type") - @@index([company_code, is_active], map: "idx_data_bridge_company_active") -} - -/// This model contains an expression index which requires additional setup for migrations. Visit https://pris.ly/d/expression-indexes for more info. -model dataflow_diagrams { - diagram_id Int @id @default(autoincrement()) - diagram_name String @db.VarChar(255) - relationships Json @default("{\"tables\": [], \"relationships\": []}") - company_code String @db.VarChar(50) - created_at DateTime? @default(now()) @db.Timestamp(6) - updated_at DateTime? @default(now()) @updatedAt @db.Timestamp(6) - created_by String? @db.VarChar(50) - updated_by String? @db.VarChar(50) - node_positions Json? - control Json? - plan Json? - category Json? @db.Json - - @@unique([company_code, diagram_name], map: "unique_diagram_name_per_company") - @@index([diagram_name], map: "idx_dataflow_diagrams_name") - @@index([node_positions], map: "idx_dataflow_diagrams_node_positions", type: Gin) -} - -/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info. -model layout_categories { - category_code String @id @db.VarChar(50) - category_name String @db.VarChar(100) - category_name_eng String? @db.VarChar(100) - description String? - parent_category String? @db.VarChar(50) - icon_name String? @db.VarChar(50) - sort_order Int? @default(0) - is_active String? @default("Y") @db.Char(1) - created_date DateTime? @default(now()) @db.Timestamp(6) - created_by String? @db.VarChar(50) - updated_date DateTime? @default(now()) @db.Timestamp(6) - updated_by String? @db.VarChar(50) - layout_categories layout_categories? @relation("layout_categoriesTolayout_categories", fields: [parent_category], references: [category_code], onDelete: NoAction, onUpdate: NoAction, map: "fk_layout_categories_parent") - other_layout_categories layout_categories[] @relation("layout_categoriesTolayout_categories") - - @@index([is_active], map: "idx_layout_categories_active") - @@index([parent_category], map: "idx_layout_categories_parent") - @@index([sort_order], map: "idx_layout_categories_sort") -} - -/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info. -model layout_instances { - instance_id Int @id @default(autoincrement()) - instance_name String @db.VarChar(100) - layout_code String @db.VarChar(50) - screen_id String? @db.VarChar(50) - instance_config Json? - components_data Json? - grid_settings Json? - is_active String? @default("Y") @db.Char(1) - company_code String @db.VarChar(50) - created_date DateTime? @default(now()) @db.Timestamp(6) - created_by String? @db.VarChar(50) - updated_date DateTime? @default(now()) @db.Timestamp(6) - updated_by String? @db.VarChar(50) - layout_standards layout_standards @relation(fields: [layout_code], references: [layout_code], onDelete: NoAction, onUpdate: NoAction, map: "fk_layout_instances_layout") - - @@index([is_active], map: "idx_layout_instances_active") - @@index([company_code], map: "idx_layout_instances_company") - @@index([layout_code], map: "idx_layout_instances_layout") - @@index([screen_id], map: "idx_layout_instances_screen") -} - -/// The underlying table does not contain a valid unique identifier and can therefore currently not be handled by Prisma Client. -model table_relationships_backup { - relationship_id Int? - relationship_name String? @db.VarChar(200) - from_table_name String? @db.VarChar(100) - from_column_name String? @db.VarChar(100) - to_table_name String? @db.VarChar(100) - to_column_name String? @db.VarChar(100) - relationship_type String? @db.VarChar(20) - connection_type String? @db.VarChar(20) - company_code String? @db.VarChar(50) - settings Json? - is_active String? @db.Char(1) - created_date DateTime? @db.Timestamp(6) - created_by String? @db.VarChar(50) - updated_date DateTime? @db.Timestamp(6) - updated_by String? @db.VarChar(50) - diagram_id Int? - - @@ignore -} - -model test_sales_info { - sales_no String @id(map: "pk_test_sales_info") @db.VarChar(200) - contract_type String? @db.VarChar(50) - order_seq Int? - domestic_foreign String? @db.VarChar(20) - customer_name String? @db.VarChar(200) - product_type String? @db.VarChar(100) - machine_type String? @db.VarChar(100) - customer_project_name String? @db.VarChar(200) - expected_delivery_date DateTime? @db.Date - receiving_location String? @db.VarChar(200) - setup_location String? @db.VarChar(200) - equipment_direction String? @db.VarChar(100) - equipment_count Int? @default(0) - equipment_type String? @db.VarChar(100) - equipment_length Decimal? @db.Decimal(10, 2) - manager_name String? @db.VarChar(100) - reg_date DateTime? @default(now()) @db.Timestamp(6) - status String? @default("진행중") @db.VarChar(50) -} - -model test_project_info { - project_no String @id @db.VarChar(200) - sales_no String? @db.VarChar(20) - contract_type String? @db.VarChar(50) - order_seq Int? - domestic_foreign String? @db.VarChar(20) - customer_name String? @db.VarChar(200) - project_status String? @default("PLANNING") @db.VarChar(50) - project_start_date DateTime? @db.Date - project_end_date DateTime? @db.Date - project_manager String? @db.VarChar(100) - project_description String? - created_by String? @db.VarChar(100) - created_date DateTime? @default(now()) @db.Timestamp(6) - updated_by String? @db.VarChar(100) - updated_date DateTime? @default(now()) @updatedAt @db.Timestamp(6) - - @@index([sales_no], map: "idx_project_sales_no") - @@index([project_status], map: "idx_project_status") - @@index([customer_name], map: "idx_project_customer") - @@index([project_manager], map: "idx_project_manager") -} - -model batch_jobs { - id Int @id @default(autoincrement()) - job_name String @db.VarChar(100) - job_type String @db.VarChar(20) - description String? - created_by String? @db.VarChar(50) - updated_by String? @db.VarChar(50) - company_code String @default("*") @db.VarChar(20) - config_json Json? - created_date DateTime? @default(now()) @db.Timestamp(6) - execution_count Int @default(0) - failure_count Int @default(0) - last_executed_at DateTime? @db.Timestamp(6) - next_execution_at DateTime? @db.Timestamp(6) - schedule_cron String? @db.VarChar(100) - success_count Int @default(0) - updated_date DateTime? @default(now()) @updatedAt @db.Timestamp(6) - is_active String @default("Y") @db.Char(1) - - @@index([job_type], map: "idx_batch_jobs_type") - @@index([company_code], map: "idx_batch_jobs_company_code") -} - -/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info. -model batch_job_executions { - id Int @id @default(autoincrement()) - job_id Int - execution_id String @unique @db.VarChar(100) - start_time DateTime @db.Timestamp(6) - end_time DateTime? @db.Timestamp(6) - status String @default("STARTED") @db.VarChar(20) - exit_code Int? - exit_message String? - parameters Json? - logs String? - created_at DateTime? @default(now()) @db.Timestamp(6) - - @@index([execution_id], map: "idx_batch_executions_execution_id") - @@index([job_id], map: "idx_batch_executions_job_id") - @@index([start_time], map: "idx_batch_executions_start_time") - @@index([status], map: "idx_batch_executions_status") -} - -model batch_job_parameters { - id Int @id @default(autoincrement()) - job_id Int - parameter_name String @db.VarChar(100) - parameter_value String? - parameter_type String? @default("STRING") @db.VarChar(50) - is_required Boolean? @default(false) - description String? - created_at DateTime? @default(now()) @db.Timestamp(6) - updated_at DateTime? @db.Timestamp(6) - - @@unique([job_id, parameter_name]) - @@index([job_id], map: "idx_batch_parameters_job_id") -} - -model batch_schedules { - id Int @id @default(autoincrement()) - job_id Int - schedule_name String @db.VarChar(255) - cron_expression String @db.VarChar(100) - timezone String? @default("Asia/Seoul") @db.VarChar(50) - is_active Boolean? @default(true) - start_date DateTime? @db.Date - end_date DateTime? @db.Date - created_by String @db.VarChar(100) - created_at DateTime? @default(now()) @db.Timestamp(6) - updated_by String? @db.VarChar(100) - updated_at DateTime? @db.Timestamp(6) - - @@index([is_active], map: "idx_batch_schedules_active") - @@index([job_id], map: "idx_batch_schedules_job_id") -} - -/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info. -/// This model or at least one of its fields has comments in the database, and requires an additional setup for migrations: Read more: https://pris.ly/d/database-comments -model dataflow_external_calls { - id Int @id @default(autoincrement()) - diagram_id Int - source_table String @db.VarChar(100) - trigger_condition Json - external_call_config_id Int - message_template String? - is_active String? @default("Y") @db.Char(1) - created_by Int? - updated_by Int? - created_at DateTime? @default(now()) @db.Timestamp(6) - updated_at DateTime? @default(now()) @db.Timestamp(6) -} - -model ddl_execution_log { - id Int @id @default(autoincrement()) - user_id String @db.VarChar(100) - company_code String @db.VarChar(50) - ddl_type String @db.VarChar(50) - table_name String @db.VarChar(100) - ddl_query String - success Boolean - error_message String? - executed_at DateTime? @default(now()) @db.Timestamp(6) -} - -/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info. -/// This model or at least one of its fields has comments in the database, and requires an additional setup for migrations: Read more: https://pris.ly/d/database-comments -model external_call_logs { - id Int @id @default(autoincrement()) - dataflow_external_call_id Int? - external_call_config_id Int - trigger_data Json? - request_data Json? - response_data Json? - status String @db.VarChar(20) - error_message String? - execution_time Int? - executed_at DateTime? @default(now()) @db.Timestamp(6) - - @@index([executed_at], map: "idx_external_call_logs_executed") -} - -model my_custom_table { - id Int @id @default(autoincrement()) - created_date DateTime? @default(now()) @db.Timestamp(6) - updated_date DateTime? @default(now()) @db.Timestamp(6) - company_code String? @default("*") @db.VarChar(50) - customer_name String? @db.VarChar - email_address String? @db.VarChar(255) -} - -model table_type_columns { - id Int @id @default(autoincrement()) - table_name String @db.VarChar(255) - column_name String @db.VarChar(255) - input_type String @default("text") @db.VarChar(50) - detail_settings String? @default("{}") - is_nullable String? @default("Y") @db.VarChar(10) - display_order Int? @default(0) - created_date DateTime? @default(now()) @db.Timestamp(6) - updated_date DateTime? @default(now()) @db.Timestamp(6) - - @@unique([table_name, column_name]) - @@index([input_type], map: "idx_table_type_columns_input_type") - @@index([table_name], map: "idx_table_type_columns_table_name") -} - -model test_api_integration_1758589777139 { - id String @id @default(dbgenerated("(gen_random_uuid())::text")) @db.VarChar(500) - created_date String? @default(dbgenerated("(now())::text")) @db.VarChar(500) - updated_date String? @default(dbgenerated("(now())::text")) @db.VarChar(500) - writer String? @db.VarChar(500) - company_code String? @default("*") @db.VarChar(500) - product_name String? @db.VarChar(500) - price String? @db.VarChar(500) - category String? @db.VarChar(500) -} - -model test_new_table { - id Int @id @default(autoincrement()) - created_date DateTime? @default(now()) @db.Timestamp(6) - updated_date DateTime? @default(now()) @db.Timestamp(6) - company_code String? @default("*") @db.VarChar(50) - name String? @db.VarChar - email String? @db.VarChar(255) - user_test_column String? @db.VarChar - dsfsdf123215 String? @db.VarChar - aaaassda String? @db.VarChar -} - -model test_new_table33333 { - id Int @id @default(autoincrement()) - created_date DateTime? @default(now()) @db.Timestamp(6) - updated_date DateTime? @default(now()) @db.Timestamp(6) - writer String? @db.VarChar(100) - company_code String? @default("*") @db.VarChar(50) - eeeeeeee String? @db.VarChar(500) - wwww String? @db.VarChar(500) - sssss String? @db.VarChar(500) -} - -model test_new_table44444 { - id String @id @default(dbgenerated("(gen_random_uuid())::text")) @db.VarChar(500) - created_date String? @default(dbgenerated("(now())::text")) @db.VarChar(500) - updated_date String? @default(dbgenerated("(now())::text")) @db.VarChar(500) - writer String? @db.VarChar(500) - company_code String? @db.VarChar(500) - ttttttt String? @db.VarChar(500) - yyyyyyy String? @db.VarChar(500) - uuuuuuu String? @db.VarChar(500) - iiiiiii String? @db.VarChar(500) -} - -model test_new_table555555 { - id String @id @default(dbgenerated("(gen_random_uuid())::text")) @db.VarChar(500) - created_date String? @default(dbgenerated("(now())::text")) @db.VarChar(500) - updated_date String? @default(dbgenerated("(now())::text")) @db.VarChar(500) - writer String? @db.VarChar(500) - company_code String? @db.VarChar(500) - rtrtrtrtr String? @db.VarChar(500) - ererwewewe String? @db.VarChar(500) - wetyeryrtyut String? @db.VarChar(500) - werwqq String? @db.VarChar(500) - saved_file_name String? @db.VarChar(500) -} - -model test_table_info { - id Int @id @default(autoincrement()) - created_date DateTime? @default(now()) @db.Timestamp(6) - updated_date DateTime? @default(now()) @db.Timestamp(6) - company_code String? @default("*") @db.VarChar(50) - objid Int - test_name String? @db.VarChar(250) - ggggggggggg String? @db.VarChar - test_column_1 String? @db.VarChar - test_column_2 String? @db.VarChar - test_column_3 String? @db.VarChar - final_test_column String? @db.VarChar - zzzzzzz String? @db.VarChar - bbbbbbb String? @db.VarChar - realtime_test String? @db.VarChar - table_update_test String? @db.VarChar -} - -model test_table_info2222 { - id Int @id @default(autoincrement()) - created_date DateTime? @default(now()) @db.Timestamp(6) - updated_date DateTime? @default(now()) @db.Timestamp(6) - company_code String? @default("*") @db.VarChar(50) - clll_cc String? @db.VarChar - eeee_eee String? @db.VarChar - saved_file_name String? @db.VarChar - debug_test_column String? @db.VarChar - field_1 String? @db.VarChar - rrrrrrrrrr String? @db.VarChar - tttttttt String? @db.VarChar -} - -model test_varchar_unified { - id String @id @default(dbgenerated("(gen_random_uuid())::text")) @db.VarChar(500) - created_date String? @default(dbgenerated("(now())::text")) @db.VarChar(500) - updated_date String? @default(dbgenerated("(now())::text")) @db.VarChar(500) - writer String? @db.VarChar(500) - company_code String? @default("*") @db.VarChar(500) - product_name String? @db.VarChar(500) - price String? @db.VarChar(500) - launch_date String? @db.VarChar(500) - is_active String? @db.VarChar(500) -} - -model test_varchar_unified_1758588878993 { - id String @id @default(dbgenerated("(gen_random_uuid())::text")) @db.VarChar(500) - created_date String? @default(dbgenerated("(now())::text")) @db.VarChar(500) - updated_date String? @default(dbgenerated("(now())::text")) @db.VarChar(500) - writer String? @db.VarChar(500) - company_code String? @default("*") @db.VarChar(500) - product_name String? @db.VarChar(500) - price String? @db.VarChar(500) - launch_date String? @db.VarChar(500) - is_active String? @db.VarChar(500) -} - -model writer_test_table { - id Int @id @default(autoincrement()) - created_date DateTime? @default(now()) @db.Timestamp(6) - updated_date DateTime? @default(now()) @db.Timestamp(6) - writer String? @db.VarChar(100) - company_code String? @default("*") @db.VarChar(50) - test_field String? @db.VarChar - field_1 String? @db.VarChar -} - -// 데이터 수집 설정 테이블 -model data_collection_configs { - id Int @id @default(autoincrement()) - config_name String @db.VarChar(100) - description String? - source_connection_id Int - source_table String @db.VarChar(100) - target_table String? @db.VarChar(100) - collection_type String @db.VarChar(20) // full, incremental, delta - schedule_cron String? @db.VarChar(100) - is_active String @default("Y") @db.Char(1) - last_collected_at DateTime? @db.Timestamp(6) - collection_options Json? - created_date DateTime? @default(now()) @db.Timestamp(6) - created_by String? @db.VarChar(50) - updated_date DateTime? @default(now()) @updatedAt @db.Timestamp(6) - updated_by String? @db.VarChar(50) - company_code String @default("*") @db.VarChar(20) - - // 관계 - collection_jobs data_collection_jobs[] - collection_history data_collection_history[] - external_connection external_db_connections @relation(fields: [source_connection_id], references: [id]) - - @@index([source_connection_id], map: "idx_data_collection_configs_connection") - @@index([is_active], map: "idx_data_collection_configs_active") - @@index([company_code], map: "idx_data_collection_configs_company") -} - -// 데이터 수집 작업 테이블 -model data_collection_jobs { - id Int @id @default(autoincrement()) - config_id Int - job_status String @db.VarChar(20) // pending, running, completed, failed - started_at DateTime? @db.Timestamp(6) - completed_at DateTime? @db.Timestamp(6) - records_processed Int? @default(0) - error_message String? - job_details Json? - created_date DateTime? @default(now()) @db.Timestamp(6) - - // 관계 - config data_collection_configs @relation(fields: [config_id], references: [id], onDelete: Cascade) - - @@index([config_id], map: "idx_data_collection_jobs_config") - @@index([job_status], map: "idx_data_collection_jobs_status") - @@index([created_date], map: "idx_data_collection_jobs_created") -} - -// 데이터 수집 이력 테이블 -model data_collection_history { - id Int @id @default(autoincrement()) - config_id Int - collection_date DateTime @db.Timestamp(6) - records_collected Int @default(0) - execution_time_ms Int @default(0) - status String @db.VarChar(20) // success, partial, failed - error_details String? - created_date DateTime? @default(now()) @db.Timestamp(6) - - // 관계 - config data_collection_configs @relation(fields: [config_id], references: [id], onDelete: Cascade) - - @@index([config_id], map: "idx_data_collection_history_config") - @@index([collection_date], map: "idx_data_collection_history_date") - @@index([status], map: "idx_data_collection_history_status") -} - -// 데이터 수집 배치 관리 테이블 (기존 batch_jobs와 구분) -model collection_batch_management { - id Int @id @default(autoincrement()) - batch_name String @db.VarChar(100) - description String? - batch_type String @db.VarChar(20) // collection, sync, cleanup, custom - schedule_cron String? @db.VarChar(100) - is_active String @default("Y") @db.Char(1) - config_json Json? - last_executed_at DateTime? @db.Timestamp(6) - next_execution_at DateTime? @db.Timestamp(6) - execution_count Int @default(0) - success_count Int @default(0) - failure_count Int @default(0) - created_date DateTime? @default(now()) @db.Timestamp(6) - created_by String? @db.VarChar(50) - updated_date DateTime? @default(now()) @updatedAt @db.Timestamp(6) - updated_by String? @db.VarChar(50) - company_code String @default("*") @db.VarChar(20) - - // 관계 - batch_executions collection_batch_executions[] - - @@index([batch_type], map: "idx_collection_batch_mgmt_type") - @@index([is_active], map: "idx_collection_batch_mgmt_active") - @@index([company_code], map: "idx_collection_batch_mgmt_company") - @@index([next_execution_at], map: "idx_collection_batch_mgmt_next_execution") -} - -// 데이터 수집 배치 실행 테이블 -model collection_batch_executions { - id Int @id @default(autoincrement()) - batch_id Int - execution_status String @db.VarChar(20) // pending, running, completed, failed, cancelled - started_at DateTime? @db.Timestamp(6) - completed_at DateTime? @db.Timestamp(6) - execution_time_ms Int? - result_data Json? - error_message String? - log_details String? - created_date DateTime? @default(now()) @db.Timestamp(6) - - // 관계 - batch collection_batch_management @relation(fields: [batch_id], references: [id], onDelete: Cascade) - - @@index([batch_id], map: "idx_collection_batch_executions_batch") - @@index([execution_status], map: "idx_collection_batch_executions_status") - @@index([created_date], map: "idx_collection_batch_executions_created") -} diff --git a/backend-node/simple-test-user.js b/backend-node/simple-test-user.js deleted file mode 100644 index 354eb947..00000000 --- a/backend-node/simple-test-user.js +++ /dev/null @@ -1,30 +0,0 @@ -const { Client } = require("pg"); - -async function createTestUser() { - const client = new Client({ - connectionString: process.env.DATABASE_URL, - }); - - try { - await client.connect(); - console.log("✅ 데이터베이스 연결 성공"); - - // 테스트용 사용자 생성 - await client.query(` - INSERT INTO user_info (user_id, user_name, user_password, status, company_code, data_type) - VALUES ('admin', '테스트 관리자', 'f21b1ce8b08dc955bd4afff71b3db1fc', 'active', 'ILSHIN', 'PLM') - ON CONFLICT (user_id) DO UPDATE SET - user_name = EXCLUDED.user_name, - user_password = EXCLUDED.user_password, - status = EXCLUDED.status - `); - - console.log("✅ 테스트 사용자 생성/업데이트 완료"); - } catch (error) { - console.error("❌ 오류 발생:", error); - } finally { - await client.end(); - } -} - -createTestUser(); diff --git a/backend-node/src/tests/authService.test.ts b/backend-node/src/tests/authService.test.ts deleted file mode 100644 index dee0e730..00000000 --- a/backend-node/src/tests/authService.test.ts +++ /dev/null @@ -1,426 +0,0 @@ -/** - * AuthService Raw Query 전환 단위 테스트 - * Phase 1.5: 인증 서비스 테스트 - */ - -import { AuthService } from "../services/authService"; -import { query } from "../database/db"; -import { EncryptUtil } from "../utils/encryptUtil"; - -// 테스트 데이터 -const TEST_USER = { - userId: "testuser", - password: "testpass123", - hashedPassword: "", // 테스트 전에 생성 -}; - -describe("AuthService Raw Query 전환 테스트", () => { - // 테스트 전 준비 - beforeAll(async () => { - // 테스트용 비밀번호 해시 생성 - TEST_USER.hashedPassword = EncryptUtil.encrypt(TEST_USER.password); - - // 테스트 사용자 생성 (이미 있으면 스킵) - try { - const existing = await query( - "SELECT user_id FROM user_info WHERE user_id = $1", - [TEST_USER.userId] - ); - - if (existing.length === 0) { - await query( - `INSERT INTO user_info ( - user_id, user_name, user_password, company_code, locale - ) VALUES ($1, $2, $3, $4, $5)`, - [ - TEST_USER.userId, - "테스트 사용자", - TEST_USER.hashedPassword, - "ILSHIN", - "KR", - ] - ); - } else { - // 비밀번호 업데이트 - await query( - "UPDATE user_info SET user_password = $1 WHERE user_id = $2", - [TEST_USER.hashedPassword, TEST_USER.userId] - ); - } - } catch (error) { - console.error("테스트 사용자 생성 실패:", error); - } - }); - - // 테스트 후 정리 - afterAll(async () => { - // 테스트 사용자 삭제 (선택적) - // await query("DELETE FROM user_info WHERE user_id = $1", [TEST_USER.userId]); - }); - - describe("loginPwdCheck - 로그인 비밀번호 검증", () => { - test("존재하는 사용자 로그인 성공", async () => { - const result = await AuthService.loginPwdCheck( - TEST_USER.userId, - TEST_USER.password - ); - - expect(result.loginResult).toBe(true); - expect(result.errorReason).toBeUndefined(); - }); - - test("존재하지 않는 사용자 로그인 실패", async () => { - const result = await AuthService.loginPwdCheck( - "nonexistent_user_12345", - "anypassword" - ); - - expect(result.loginResult).toBe(false); - expect(result.errorReason).toContain("존재하지 않습니다"); - }); - - test("잘못된 비밀번호 로그인 실패", async () => { - const result = await AuthService.loginPwdCheck( - TEST_USER.userId, - "wrongpassword123" - ); - - expect(result.loginResult).toBe(false); - expect(result.errorReason).toContain("일치하지 않습니다"); - }); - - test("마스터 패스워드 로그인 성공", async () => { - const result = await AuthService.loginPwdCheck( - TEST_USER.userId, - "qlalfqjsgh11" - ); - - expect(result.loginResult).toBe(true); - }); - - test("빈 사용자 ID 처리", async () => { - const result = await AuthService.loginPwdCheck("", TEST_USER.password); - - expect(result.loginResult).toBe(false); - }); - - test("빈 비밀번호 처리", async () => { - const result = await AuthService.loginPwdCheck(TEST_USER.userId, ""); - - expect(result.loginResult).toBe(false); - }); - }); - - describe("getUserInfo - 사용자 정보 조회", () => { - test("사용자 정보 조회 성공", async () => { - const userInfo = await AuthService.getUserInfo(TEST_USER.userId); - - expect(userInfo).not.toBeNull(); - expect(userInfo?.userId).toBe(TEST_USER.userId); - expect(userInfo?.userName).toBeDefined(); - expect(userInfo?.companyCode).toBeDefined(); - expect(userInfo?.locale).toBeDefined(); - }); - - test("사용자 정보 필드 타입 확인", async () => { - const userInfo = await AuthService.getUserInfo(TEST_USER.userId); - - expect(userInfo).not.toBeNull(); - expect(typeof userInfo?.userId).toBe("string"); - expect(typeof userInfo?.userName).toBe("string"); - expect(typeof userInfo?.companyCode).toBe("string"); - expect(typeof userInfo?.locale).toBe("string"); - }); - - test("권한 정보 조회 (있는 경우)", async () => { - const userInfo = await AuthService.getUserInfo(TEST_USER.userId); - - // 권한이 없으면 authName은 빈 문자열 - expect(userInfo).not.toBeNull(); - if (userInfo) { - expect(typeof userInfo.authName === 'string' || userInfo.authName === undefined).toBe(true); - } - }); - - test("존재하지 않는 사용자 조회 실패", async () => { - const userInfo = await AuthService.getUserInfo("nonexistent_user_12345"); - - expect(userInfo).toBeNull(); - }); - - test("회사 정보 기본값 확인", async () => { - const userInfo = await AuthService.getUserInfo(TEST_USER.userId); - - // company_code가 없으면 기본값 "ILSHIN" - expect(userInfo?.companyCode).toBeDefined(); - expect(typeof userInfo?.companyCode).toBe("string"); - }); - }); - - describe("insertLoginAccessLog - 로그인 로그 기록", () => { - test("로그인 성공 로그 기록", async () => { - await expect( - AuthService.insertLoginAccessLog({ - systemName: "PMS", - userId: TEST_USER.userId, - loginResult: true, - remoteAddr: "127.0.0.1", - }) - ).resolves.not.toThrow(); - }); - - test("로그인 실패 로그 기록", async () => { - await expect( - AuthService.insertLoginAccessLog({ - systemName: "PMS", - userId: TEST_USER.userId, - loginResult: false, - errorMessage: "비밀번호 불일치", - remoteAddr: "127.0.0.1", - }) - ).resolves.not.toThrow(); - }); - - test("로그인 로그 기록 후 DB 확인", async () => { - await AuthService.insertLoginAccessLog({ - systemName: "PMS", - userId: TEST_USER.userId, - loginResult: true, - remoteAddr: "127.0.0.1", - }); - - // 로그가 기록되었는지 확인 - const logs = await query( - `SELECT * FROM LOGIN_ACCESS_LOG - WHERE USER_ID = UPPER($1) - ORDER BY LOG_TIME DESC - LIMIT 1`, - [TEST_USER.userId] - ); - - expect(logs.length).toBeGreaterThan(0); - expect(logs[0].user_id).toBe(TEST_USER.userId.toUpperCase()); - // login_result는 문자열 또는 불리언일 수 있음 - expect(logs[0].login_result).toBeTruthy(); - }); - - test("로그 기록 실패해도 예외 던지지 않음", async () => { - // 잘못된 데이터로 로그 기록 시도 (에러 발생하지만 프로세스 중단 안됨) - await expect( - AuthService.insertLoginAccessLog({ - systemName: "PMS", - userId: TEST_USER.userId, - loginResult: true, - remoteAddr: "127.0.0.1", - }) - ).resolves.not.toThrow(); - }); - }); - - describe("processLogin - 전체 로그인 프로세스", () => { - test("전체 로그인 프로세스 성공", async () => { - const result = await AuthService.processLogin( - TEST_USER.userId, - TEST_USER.password, - "127.0.0.1" - ); - - expect(result.success).toBe(true); - expect(result.token).toBeDefined(); - expect(result.userInfo).toBeDefined(); - expect(result.userInfo?.userId).toBe(TEST_USER.userId); - expect(result.errorReason).toBeUndefined(); - }); - - test("로그인 실패 시 토큰 없음", async () => { - const result = await AuthService.processLogin( - TEST_USER.userId, - "wrongpassword", - "127.0.0.1" - ); - - expect(result.success).toBe(false); - expect(result.token).toBeUndefined(); - expect(result.userInfo).toBeUndefined(); - expect(result.errorReason).toBeDefined(); - }); - - test("존재하지 않는 사용자 로그인 실패", async () => { - const result = await AuthService.processLogin( - "nonexistent_user", - "anypassword", - "127.0.0.1" - ); - - expect(result.success).toBe(false); - expect(result.errorReason).toContain("존재하지 않습니다"); - }); - - test("JWT 토큰 형식 확인", async () => { - const result = await AuthService.processLogin( - TEST_USER.userId, - TEST_USER.password, - "127.0.0.1" - ); - - if (result.success && result.token) { - // JWT 토큰은 3개 파트로 구성 (header.payload.signature) - const parts = result.token.split("."); - expect(parts.length).toBe(3); - } - }); - - test("로그인 프로세스 로그 기록 확인", async () => { - await AuthService.processLogin( - TEST_USER.userId, - TEST_USER.password, - "127.0.0.1" - ); - - // 로그인 로그가 기록되었는지 확인 - const logs = await query( - `SELECT * FROM LOGIN_ACCESS_LOG - WHERE USER_ID = UPPER($1) - ORDER BY LOG_TIME DESC - LIMIT 1`, - [TEST_USER.userId] - ); - - expect(logs.length).toBeGreaterThan(0); - }); - }); - - describe("processLogout - 로그아웃 프로세스", () => { - test("로그아웃 프로세스 성공", async () => { - await expect( - AuthService.processLogout(TEST_USER.userId, "127.0.0.1") - ).resolves.not.toThrow(); - }); - - test("로그아웃 로그 기록 확인", async () => { - await AuthService.processLogout(TEST_USER.userId, "127.0.0.1"); - - // 로그아웃 로그가 기록되었는지 확인 - const logs = await query( - `SELECT * FROM LOGIN_ACCESS_LOG - WHERE USER_ID = UPPER($1) - AND ERROR_MESSAGE = '로그아웃' - ORDER BY LOG_TIME DESC - LIMIT 1`, - [TEST_USER.userId] - ); - - expect(logs.length).toBeGreaterThan(0); - expect(logs[0].error_message).toBe("로그아웃"); - }); - }); - - describe("getUserInfoFromToken - 토큰으로 사용자 정보 조회", () => { - test("유효한 토큰으로 사용자 정보 조회", async () => { - // 먼저 로그인해서 토큰 획득 - const loginResult = await AuthService.processLogin( - TEST_USER.userId, - TEST_USER.password, - "127.0.0.1" - ); - - expect(loginResult.success).toBe(true); - expect(loginResult.token).toBeDefined(); - - // 토큰으로 사용자 정보 조회 - const userInfo = await AuthService.getUserInfoFromToken( - loginResult.token! - ); - - expect(userInfo).not.toBeNull(); - expect(userInfo?.userId).toBe(TEST_USER.userId); - }); - - test("잘못된 토큰으로 조회 실패", async () => { - const userInfo = await AuthService.getUserInfoFromToken("invalid_token"); - - expect(userInfo).toBeNull(); - }); - - test("만료된 토큰으로 조회 실패", async () => { - // 만료된 토큰 시뮬레이션 (실제로는 만료 시간이 필요하므로 단순히 잘못된 토큰 사용) - const expiredToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.expired.token"; - const userInfo = await AuthService.getUserInfoFromToken(expiredToken); - - expect(userInfo).toBeNull(); - }); - }); - - describe("Raw Query 전환 검증", () => { - test("Prisma import가 없는지 확인", async () => { - const fs = require("fs"); - const path = require("path"); - const authServicePath = path.join( - __dirname, - "../services/authService.ts" - ); - const content = fs.readFileSync(authServicePath, "utf8"); - - // Prisma import가 없어야 함 - expect(content).not.toContain('import prisma from "../config/database"'); - expect(content).not.toContain("import { PrismaClient }"); - expect(content).not.toContain("prisma.user_info"); - expect(content).not.toContain("prisma.$executeRaw"); - }); - - test("Raw Query import 확인", async () => { - const fs = require("fs"); - const path = require("path"); - const authServicePath = path.join( - __dirname, - "../services/authService.ts" - ); - const content = fs.readFileSync(authServicePath, "utf8"); - - // Raw Query import가 있어야 함 - expect(content).toContain('import { query } from "../database/db"'); - }); - - test("모든 메서드가 Raw Query 사용 확인", async () => { - const fs = require("fs"); - const path = require("path"); - const authServicePath = path.join( - __dirname, - "../services/authService.ts" - ); - const content = fs.readFileSync(authServicePath, "utf8"); - - // query() 함수 호출이 있어야 함 - expect(content).toContain("await query<"); - expect(content).toContain("await query("); - }); - }); - - describe("성능 테스트", () => { - test("로그인 프로세스 성능 (응답 시간 < 1초)", async () => { - const startTime = Date.now(); - - await AuthService.processLogin( - TEST_USER.userId, - TEST_USER.password, - "127.0.0.1" - ); - - const endTime = Date.now(); - const elapsedTime = endTime - startTime; - - expect(elapsedTime).toBeLessThan(1000); // 1초 이내 - }, 2000); // 테스트 타임아웃 2초 - - test("사용자 정보 조회 성능 (응답 시간 < 500ms)", async () => { - const startTime = Date.now(); - - await AuthService.getUserInfo(TEST_USER.userId); - - const endTime = Date.now(); - const elapsedTime = endTime - startTime; - - expect(elapsedTime).toBeLessThan(500); // 500ms 이내 - }, 1000); // 테스트 타임아웃 1초 - }); -}); \ No newline at end of file diff --git a/backend-node/src/tests/database.test.ts b/backend-node/src/tests/database.test.ts deleted file mode 100644 index dfd8251b..00000000 --- a/backend-node/src/tests/database.test.ts +++ /dev/null @@ -1,455 +0,0 @@ -/** - * Database Manager 테스트 - * - * Phase 1 기반 구조 검증 - */ - -import { query, queryOne, transaction, getPoolStatus } from "../database/db"; -import { QueryBuilder } from "../utils/queryBuilder"; -import { DatabaseValidator } from "../utils/databaseValidator"; - -describe("Database Manager Tests", () => { - describe("QueryBuilder", () => { - test("SELECT 쿼리 생성 - 기본", () => { - const { query: sql, params } = QueryBuilder.select("users", { - where: { user_id: "test_user" }, - }); - - expect(sql).toContain("SELECT * FROM users"); - expect(sql).toContain("WHERE user_id = $1"); - expect(params).toEqual(["test_user"]); - }); - - test("SELECT 쿼리 생성 - 복잡한 조건", () => { - const { query: sql, params } = QueryBuilder.select("users", { - columns: ["user_id", "username", "email"], - where: { status: "active", role: "admin" }, - orderBy: "created_at DESC", - limit: 10, - offset: 20, - }); - - expect(sql).toContain("SELECT user_id, username, email FROM users"); - expect(sql).toContain("WHERE status = $1 AND role = $2"); - expect(sql).toContain("ORDER BY created_at DESC"); - expect(sql).toContain("LIMIT $3"); - expect(sql).toContain("OFFSET $4"); - expect(params).toEqual(["active", "admin", 10, 20]); - }); - - test("SELECT 쿼리 생성 - JOIN", () => { - const { query: sql, params } = QueryBuilder.select("users", { - columns: ["users.user_id", "users.username", "departments.dept_name"], - joins: [ - { - type: "LEFT", - table: "departments", - on: "users.dept_id = departments.dept_id", - }, - ], - where: { "users.status": "active" }, - }); - - expect(sql).toContain("LEFT JOIN departments"); - expect(sql).toContain("ON users.dept_id = departments.dept_id"); - expect(sql).toContain("WHERE users.status = $1"); - expect(params).toEqual(["active"]); - }); - - test("INSERT 쿼리 생성 - RETURNING", () => { - const { query: sql, params } = QueryBuilder.insert( - "users", - { - user_id: "new_user", - username: "John Doe", - email: "john@example.com", - }, - { - returning: ["id", "user_id"], - } - ); - - expect(sql).toContain("INSERT INTO users"); - expect(sql).toContain("(user_id, username, email)"); - expect(sql).toContain("VALUES ($1, $2, $3)"); - expect(sql).toContain("RETURNING id, user_id"); - expect(params).toEqual(["new_user", "John Doe", "john@example.com"]); - }); - - test("INSERT 쿼리 생성 - UPSERT", () => { - const { query: sql, params } = QueryBuilder.insert( - "users", - { - user_id: "user123", - username: "Jane", - email: "jane@example.com", - }, - { - onConflict: { - columns: ["user_id"], - action: "DO UPDATE", - updateSet: ["username", "email"], - }, - returning: ["*"], - } - ); - - expect(sql).toContain("ON CONFLICT (user_id) DO UPDATE"); - expect(sql).toContain( - "SET username = EXCLUDED.username, email = EXCLUDED.email" - ); - expect(sql).toContain("RETURNING *"); - }); - - test("UPDATE 쿼리 생성", () => { - const { query: sql, params } = QueryBuilder.update( - "users", - { username: "Updated Name", email: "updated@example.com" }, - { user_id: "user123" }, - { returning: ["*"] } - ); - - expect(sql).toContain("UPDATE users"); - expect(sql).toContain("SET username = $1, email = $2"); - expect(sql).toContain("WHERE user_id = $3"); - expect(sql).toContain("RETURNING *"); - expect(params).toEqual([ - "Updated Name", - "updated@example.com", - "user123", - ]); - }); - - test("DELETE 쿼리 생성", () => { - const { query: sql, params } = QueryBuilder.delete("users", { - user_id: "user_to_delete", - }); - - expect(sql).toContain("DELETE FROM users"); - expect(sql).toContain("WHERE user_id = $1"); - expect(params).toEqual(["user_to_delete"]); - }); - - test("COUNT 쿼리 생성", () => { - const { query: sql, params } = QueryBuilder.count("users", { - status: "active", - }); - - expect(sql).toContain("SELECT COUNT(*) as count FROM users"); - expect(sql).toContain("WHERE status = $1"); - expect(params).toEqual(["active"]); - }); - }); - - describe("DatabaseValidator", () => { - test("테이블명 검증 - 유효한 이름", () => { - expect(DatabaseValidator.validateTableName("users")).toBe(true); - expect(DatabaseValidator.validateTableName("user_info")).toBe(true); - expect(DatabaseValidator.validateTableName("_internal_table")).toBe(true); - expect(DatabaseValidator.validateTableName("table123")).toBe(true); - }); - - test("테이블명 검증 - 유효하지 않은 이름", () => { - expect(DatabaseValidator.validateTableName("")).toBe(false); - expect(DatabaseValidator.validateTableName("123table")).toBe(false); - expect(DatabaseValidator.validateTableName("user-table")).toBe(false); - expect(DatabaseValidator.validateTableName("user table")).toBe(false); - expect(DatabaseValidator.validateTableName("SELECT")).toBe(false); // 예약어 - expect(DatabaseValidator.validateTableName("a".repeat(64))).toBe(false); // 너무 긺 - }); - - test("컬럼명 검증 - 유효한 이름", () => { - expect(DatabaseValidator.validateColumnName("user_id")).toBe(true); - expect(DatabaseValidator.validateColumnName("created_at")).toBe(true); - expect(DatabaseValidator.validateColumnName("is_active")).toBe(true); - }); - - test("컬럼명 검증 - 유효하지 않은 이름", () => { - expect(DatabaseValidator.validateColumnName("user-id")).toBe(false); - expect(DatabaseValidator.validateColumnName("user id")).toBe(false); - expect(DatabaseValidator.validateColumnName("WHERE")).toBe(false); // 예약어 - }); - - test("데이터 타입 검증", () => { - expect(DatabaseValidator.validateDataType("VARCHAR")).toBe(true); - expect(DatabaseValidator.validateDataType("VARCHAR(255)")).toBe(true); - expect(DatabaseValidator.validateDataType("INTEGER")).toBe(true); - expect(DatabaseValidator.validateDataType("TIMESTAMP")).toBe(true); - expect(DatabaseValidator.validateDataType("JSONB")).toBe(true); - expect(DatabaseValidator.validateDataType("INTEGER[]")).toBe(true); - expect(DatabaseValidator.validateDataType("DECIMAL(10,2)")).toBe(true); - }); - - test("WHERE 조건 검증", () => { - expect( - DatabaseValidator.validateWhereClause({ - user_id: "test", - status: "active", - }) - ).toBe(true); - - expect( - DatabaseValidator.validateWhereClause({ - "config->>type": "form", // JSON 쿼리 - }) - ).toBe(true); - - expect( - DatabaseValidator.validateWhereClause({ - "invalid-column": "value", - }) - ).toBe(false); - }); - - test("페이지네이션 검증", () => { - expect(DatabaseValidator.validatePagination(1, 10)).toBe(true); - expect(DatabaseValidator.validatePagination(5, 100)).toBe(true); - - expect(DatabaseValidator.validatePagination(0, 10)).toBe(false); // page < 1 - expect(DatabaseValidator.validatePagination(1, 0)).toBe(false); // pageSize < 1 - expect(DatabaseValidator.validatePagination(1, 2000)).toBe(false); // pageSize > 1000 - }); - - test("ORDER BY 검증", () => { - expect(DatabaseValidator.validateOrderBy("created_at")).toBe(true); - expect(DatabaseValidator.validateOrderBy("created_at ASC")).toBe(true); - expect(DatabaseValidator.validateOrderBy("created_at DESC")).toBe(true); - - expect(DatabaseValidator.validateOrderBy("created_at INVALID")).toBe( - false - ); - expect(DatabaseValidator.validateOrderBy("invalid-column ASC")).toBe( - false - ); - }); - - test("UUID 검증", () => { - expect( - DatabaseValidator.validateUUID("550e8400-e29b-41d4-a716-446655440000") - ).toBe(true); - expect(DatabaseValidator.validateUUID("invalid-uuid")).toBe(false); - }); - - test("이메일 검증", () => { - expect(DatabaseValidator.validateEmail("test@example.com")).toBe(true); - expect(DatabaseValidator.validateEmail("user.name@domain.co.kr")).toBe( - true - ); - expect(DatabaseValidator.validateEmail("invalid-email")).toBe(false); - expect(DatabaseValidator.validateEmail("test@")).toBe(false); - }); - }); - - describe("Integration Tests (실제 DB 연결 필요)", () => { - // 실제 데이터베이스 연결이 필요한 테스트들 - // DB 연결 실패 시 스킵되도록 설정 - - beforeAll(async () => { - // DB 연결 테스트 - try { - await query("SELECT 1 as test"); - console.log("✅ 데이터베이스 연결 성공 - Integration Tests 실행"); - } catch (error) { - console.warn("⚠️ 데이터베이스 연결 실패 - Integration Tests 스킵"); - console.warn("DB 연결 오류:", error); - } - }); - - test("실제 쿼리 실행 테스트", async () => { - try { - const result = await query( - "SELECT NOW() as current_time, version() as pg_version" - ); - - expect(result).toHaveLength(1); - expect(result[0]).toHaveProperty("current_time"); - expect(result[0]).toHaveProperty("pg_version"); - expect(result[0].pg_version).toContain("PostgreSQL"); - - console.log("🕐 현재 시간:", result[0].current_time); - console.log("📊 PostgreSQL 버전:", result[0].pg_version); - } catch (error) { - console.error("❌ 쿼리 실행 테스트 실패:", error); - throw error; - } - }); - - test("파라미터화된 쿼리 테스트", async () => { - try { - const testValue = "test_value_" + Date.now(); - const result = await query( - "SELECT $1 as input_value, $2 as number_value, $3 as boolean_value", - [testValue, 42, true] - ); - - expect(result).toHaveLength(1); - expect(result[0].input_value).toBe(testValue); - expect(parseInt(result[0].number_value)).toBe(42); // PostgreSQL은 숫자를 문자열로 반환 - expect( - result[0].boolean_value === true || result[0].boolean_value === "true" - ).toBe(true); // PostgreSQL boolean 처리 - - console.log("📝 파라미터 테스트 결과:", result[0]); - } catch (error) { - console.error("❌ 파라미터 쿼리 테스트 실패:", error); - throw error; - } - }); - - test("단일 행 조회 테스트", async () => { - try { - // 존재하는 데이터 조회 - const result = await queryOne("SELECT 1 as value, 'exists' as status"); - expect(result).not.toBeNull(); - expect(result?.value).toBe(1); - expect(result?.status).toBe("exists"); - - // 존재하지 않는 데이터 조회 - const emptyResult = await queryOne( - "SELECT * FROM (SELECT 1 as id) t WHERE id = 999" - ); - expect(emptyResult).toBeNull(); - - console.log("🔍 단일 행 조회 결과:", result); - } catch (error) { - console.error("❌ 단일 행 조회 테스트 실패:", error); - throw error; - } - }); - - test("트랜잭션 테스트", async () => { - try { - const result = await transaction(async (client) => { - const res1 = await client.query( - "SELECT 1 as value, 'first' as label" - ); - const res2 = await client.query( - "SELECT 2 as value, 'second' as label" - ); - const res3 = await client.query("SELECT $1 as computed_value", [ - res1.rows[0].value + res2.rows[0].value, - ]); - - return { - res1: res1.rows, - res2: res2.rows, - res3: res3.rows, - transaction_id: Math.random().toString(36).substr(2, 9), - }; - }); - - expect(result.res1[0].value).toBe(1); - expect(result.res1[0].label).toBe("first"); - expect(result.res2[0].value).toBe(2); - expect(result.res2[0].label).toBe("second"); - expect(parseInt(result.res3[0].computed_value)).toBe(3); // PostgreSQL은 숫자를 문자열로 반환 - expect(result.transaction_id).toBeDefined(); - - console.log("🔄 트랜잭션 테스트 결과:", { - first_value: result.res1[0].value, - second_value: result.res2[0].value, - computed_value: result.res3[0].computed_value, - transaction_id: result.transaction_id, - }); - } catch (error) { - console.error("❌ 트랜잭션 테스트 실패:", error); - throw error; - } - }); - - test("트랜잭션 롤백 테스트", async () => { - try { - await expect( - transaction(async (client) => { - await client.query("SELECT 1 as value"); - // 의도적으로 오류 발생 - throw new Error("의도적인 롤백 테스트"); - }) - ).rejects.toThrow("의도적인 롤백 테스트"); - - console.log("🔄 트랜잭션 롤백 테스트 성공"); - } catch (error) { - console.error("❌ 트랜잭션 롤백 테스트 실패:", error); - throw error; - } - }); - - test("연결 풀 상태 확인", () => { - try { - const status = getPoolStatus(); - - expect(status).toHaveProperty("totalCount"); - expect(status).toHaveProperty("idleCount"); - expect(status).toHaveProperty("waitingCount"); - expect(typeof status.totalCount).toBe("number"); - expect(typeof status.idleCount).toBe("number"); - expect(typeof status.waitingCount).toBe("number"); - - console.log("🏊‍♂️ 연결 풀 상태:", { - 총_연결수: status.totalCount, - 유휴_연결수: status.idleCount, - 대기_연결수: status.waitingCount, - }); - } catch (error) { - console.error("❌ 연결 풀 상태 확인 실패:", error); - throw error; - } - }); - - test("데이터베이스 메타데이터 조회", async () => { - try { - // 현재 데이터베이스 정보 조회 - const dbInfo = await query(` - SELECT - current_database() as database_name, - current_user as current_user, - inet_server_addr() as server_address, - inet_server_port() as server_port - `); - - expect(dbInfo).toHaveLength(1); - expect(dbInfo[0].database_name).toBeDefined(); - expect(dbInfo[0].current_user).toBeDefined(); - - console.log("🗄️ 데이터베이스 정보:", { - 데이터베이스명: dbInfo[0].database_name, - 현재사용자: dbInfo[0].current_user, - 서버주소: dbInfo[0].server_address, - 서버포트: dbInfo[0].server_port, - }); - } catch (error) { - console.error("❌ 데이터베이스 메타데이터 조회 실패:", error); - throw error; - } - }); - - test("테이블 존재 여부 확인", async () => { - try { - // 시스템 테이블 조회로 안전하게 테스트 - const tables = await query(` - SELECT table_name, table_type - FROM information_schema.tables - WHERE table_schema = 'public' - AND table_type = 'BASE TABLE' - LIMIT 5 - `); - - expect(Array.isArray(tables)).toBe(true); - console.log(`📋 발견된 테이블 수: ${tables.length}`); - - if (tables.length > 0) { - console.log( - "📋 테이블 목록 (최대 5개):", - tables.map((t) => t.table_name).join(", ") - ); - } - } catch (error) { - console.error("❌ 테이블 존재 여부 확인 실패:", error); - throw error; - } - }); - }); -}); - -// 테스트 실행 방법: -// npm test -- database.test.ts diff --git a/backend-node/src/tests/integration/auth.integration.test.ts b/backend-node/src/tests/integration/auth.integration.test.ts deleted file mode 100644 index 24020003..00000000 --- a/backend-node/src/tests/integration/auth.integration.test.ts +++ /dev/null @@ -1,382 +0,0 @@ -/** - * AuthService 통합 테스트 - * Phase 1.5: 인증 시스템 전체 플로우 테스트 - * - * 테스트 시나리오: - * 1. 로그인 → 토큰 발급 - * 2. 토큰으로 API 인증 - * 3. 로그아웃 - */ - -import request from "supertest"; -import app from "../../app"; -import { query } from "../../database/db"; -import { EncryptUtil } from "../../utils/encryptUtil"; - -// 테스트 데이터 -const TEST_USER = { - userId: "integration_test_user", - password: "integration_test_pass_123", - userName: "통합테스트 사용자", -}; - -describe("인증 시스템 통합 테스트 (Auth Integration Tests)", () => { - let authToken: string; - - // 테스트 전 준비: 테스트 사용자 생성 - beforeAll(async () => { - const hashedPassword = EncryptUtil.encrypt(TEST_USER.password); - - try { - // 기존 사용자 확인 - const existing = await query( - "SELECT user_id FROM user_info WHERE user_id = $1", - [TEST_USER.userId] - ); - - if (existing.length === 0) { - // 새 사용자 생성 - await query( - `INSERT INTO user_info ( - user_id, user_name, user_password, company_code, locale - ) VALUES ($1, $2, $3, $4, $5)`, - [ - TEST_USER.userId, - TEST_USER.userName, - hashedPassword, - "ILSHIN", - "KR", - ] - ); - } else { - // 기존 사용자 비밀번호 업데이트 - await query( - "UPDATE user_info SET user_password = $1, user_name = $2 WHERE user_id = $3", - [hashedPassword, TEST_USER.userName, TEST_USER.userId] - ); - } - - console.log(`✅ 통합 테스트 사용자 준비 완료: ${TEST_USER.userId}`); - } catch (error) { - console.error("❌ 테스트 사용자 생성 실패:", error); - throw error; - } - }); - - // 테스트 후 정리 (선택적) - afterAll(async () => { - // 테스트 사용자 삭제 (필요시) - // await query("DELETE FROM user_info WHERE user_id = $1", [TEST_USER.userId]); - console.log("✅ 통합 테스트 완료"); - }); - - describe("1. 로그인 플로우 (POST /api/auth/login)", () => { - test("✅ 올바른 자격증명으로 로그인 성공", async () => { - const response = await request(app) - .post("/api/auth/login") - .send({ - userId: TEST_USER.userId, - password: TEST_USER.password, - }) - .expect(200); - - expect(response.body.success).toBe(true); - expect(response.body.token).toBeDefined(); - expect(response.body.userInfo).toBeDefined(); - expect(response.body.userInfo.userId).toBe(TEST_USER.userId); - expect(response.body.userInfo.userName).toBe(TEST_USER.userName); - - // 토큰 저장 (다음 테스트에서 사용) - authToken = response.body.token; - }); - - test("❌ 잘못된 비밀번호로 로그인 실패", async () => { - const response = await request(app) - .post("/api/auth/login") - .send({ - userId: TEST_USER.userId, - password: "wrong_password_123", - }) - .expect(200); - - expect(response.body.success).toBe(false); - expect(response.body.token).toBeUndefined(); - expect(response.body.errorReason).toBeDefined(); - expect(response.body.errorReason).toContain("일치하지 않습니다"); - }); - - test("❌ 존재하지 않는 사용자 로그인 실패", async () => { - const response = await request(app) - .post("/api/auth/login") - .send({ - userId: "nonexistent_user_999", - password: "anypassword", - }) - .expect(200); - - expect(response.body.success).toBe(false); - expect(response.body.token).toBeUndefined(); - expect(response.body.errorReason).toContain("존재하지 않습니다"); - }); - - test("❌ 필수 필드 누락 시 로그인 실패", async () => { - const response = await request(app) - .post("/api/auth/login") - .send({ - userId: TEST_USER.userId, - // password 누락 - }) - .expect(400); - - expect(response.body.success).toBe(false); - }); - - test("✅ JWT 토큰 형식 검증", () => { - expect(authToken).toBeDefined(); - expect(typeof authToken).toBe("string"); - - // JWT는 3개 파트로 구성 (header.payload.signature) - const parts = authToken.split("."); - expect(parts.length).toBe(3); - }); - }); - - describe("2. 토큰 검증 플로우 (GET /api/auth/verify)", () => { - test("✅ 유효한 토큰으로 검증 성공", async () => { - const response = await request(app) - .get("/api/auth/verify") - .set("Authorization", `Bearer ${authToken}`) - .expect(200); - - expect(response.body.valid).toBe(true); - expect(response.body.userInfo).toBeDefined(); - expect(response.body.userInfo.userId).toBe(TEST_USER.userId); - }); - - test("❌ 토큰 없이 요청 시 실패", async () => { - const response = await request(app).get("/api/auth/verify").expect(401); - - expect(response.body.valid).toBe(false); - }); - - test("❌ 잘못된 토큰으로 요청 시 실패", async () => { - const response = await request(app) - .get("/api/auth/verify") - .set("Authorization", "Bearer invalid_token_12345") - .expect(401); - - expect(response.body.valid).toBe(false); - }); - - test("❌ Bearer 없는 토큰으로 요청 시 실패", async () => { - const response = await request(app) - .get("/api/auth/verify") - .set("Authorization", authToken) // Bearer 키워드 없음 - .expect(401); - - expect(response.body.valid).toBe(false); - }); - }); - - describe("3. 인증된 API 요청 플로우", () => { - test("✅ 인증된 사용자로 메뉴 조회", async () => { - const response = await request(app) - .get("/api/admin/menu") - .set("Authorization", `Bearer ${authToken}`) - .expect(200); - - expect(Array.isArray(response.body)).toBe(true); - }); - - test("❌ 인증 없이 보호된 API 요청 실패", async () => { - const response = await request(app).get("/api/admin/menu").expect(401); - - expect(response.body.success).toBe(false); - }); - }); - - describe("4. 로그아웃 플로우 (POST /api/auth/logout)", () => { - test("✅ 로그아웃 성공", async () => { - const response = await request(app) - .post("/api/auth/logout") - .set("Authorization", `Bearer ${authToken}`) - .expect(200); - - expect(response.body.success).toBe(true); - }); - - test("✅ 로그아웃 로그 기록 확인", async () => { - // 로그아웃 로그가 기록되었는지 확인 - const logs = await query( - `SELECT * FROM LOGIN_ACCESS_LOG - WHERE USER_ID = UPPER($1) - AND ERROR_MESSAGE = '로그아웃' - ORDER BY LOG_TIME DESC - LIMIT 1`, - [TEST_USER.userId] - ); - - expect(logs.length).toBeGreaterThan(0); - expect(logs[0].error_message).toBe("로그아웃"); - }); - }); - - describe("5. 전체 시나리오 테스트", () => { - test("✅ 로그인 → 인증 → API 호출 → 로그아웃 전체 플로우", async () => { - // 1. 로그인 - const loginResponse = await request(app) - .post("/api/auth/login") - .send({ - userId: TEST_USER.userId, - password: TEST_USER.password, - }) - .expect(200); - - expect(loginResponse.body.success).toBe(true); - const token = loginResponse.body.token; - - // 2. 토큰 검증 - const verifyResponse = await request(app) - .get("/api/auth/verify") - .set("Authorization", `Bearer ${token}`) - .expect(200); - - expect(verifyResponse.body.valid).toBe(true); - - // 3. 보호된 API 호출 - const menuResponse = await request(app) - .get("/api/admin/menu") - .set("Authorization", `Bearer ${token}`) - .expect(200); - - expect(Array.isArray(menuResponse.body)).toBe(true); - - // 4. 로그아웃 - const logoutResponse = await request(app) - .post("/api/auth/logout") - .set("Authorization", `Bearer ${token}`) - .expect(200); - - expect(logoutResponse.body.success).toBe(true); - }); - }); - - describe("6. 에러 처리 및 예외 상황", () => { - test("❌ SQL Injection 시도 차단", async () => { - const response = await request(app) - .post("/api/auth/login") - .send({ - userId: "admin' OR '1'='1", - password: "password", - }) - .expect(200); - - // SQL Injection이 차단되어 로그인 실패해야 함 - expect(response.body.success).toBe(false); - }); - - test("❌ 빈 문자열로 로그인 시도", async () => { - const response = await request(app) - .post("/api/auth/login") - .send({ - userId: "", - password: "", - }) - .expect(400); - - expect(response.body.success).toBe(false); - }); - - test("❌ 매우 긴 사용자 ID로 로그인 시도", async () => { - const longUserId = "a".repeat(1000); - const response = await request(app) - .post("/api/auth/login") - .send({ - userId: longUserId, - password: "password", - }) - .expect(200); - - expect(response.body.success).toBe(false); - }); - }); - - describe("7. 로그인 이력 확인", () => { - test("✅ 로그인 성공 이력 조회", async () => { - // 로그인 실행 - await request(app).post("/api/auth/login").send({ - userId: TEST_USER.userId, - password: TEST_USER.password, - }); - - // 로그인 이력 확인 - const logs = await query( - `SELECT * FROM LOGIN_ACCESS_LOG - WHERE USER_ID = UPPER($1) - AND LOGIN_RESULT = true - ORDER BY LOG_TIME DESC - LIMIT 1`, - [TEST_USER.userId] - ); - - expect(logs.length).toBeGreaterThan(0); - expect(logs[0].login_result).toBeTruthy(); - expect(logs[0].system_name).toBe("PMS"); - }); - - test("✅ 로그인 실패 이력 조회", async () => { - // 로그인 실패 실행 - await request(app).post("/api/auth/login").send({ - userId: TEST_USER.userId, - password: "wrong_password", - }); - - // 로그인 실패 이력 확인 - const logs = await query( - `SELECT * FROM LOGIN_ACCESS_LOG - WHERE USER_ID = UPPER($1) - AND LOGIN_RESULT = false - AND ERROR_MESSAGE IS NOT NULL - ORDER BY LOG_TIME DESC - LIMIT 1`, - [TEST_USER.userId] - ); - - expect(logs.length).toBeGreaterThan(0); - expect(logs[0].login_result).toBeFalsy(); - expect(logs[0].error_message).toBeDefined(); - }); - }); - - describe("8. 성능 테스트", () => { - test("✅ 동시 로그인 요청 처리 (10개)", async () => { - const promises = Array.from({ length: 10 }, () => - request(app).post("/api/auth/login").send({ - userId: TEST_USER.userId, - password: TEST_USER.password, - }) - ); - - const responses = await Promise.all(promises); - - responses.forEach((response) => { - expect(response.status).toBe(200); - expect(response.body.success).toBe(true); - }); - }, 10000); // 10초 타임아웃 - - test("✅ 로그인 응답 시간 (< 1초)", async () => { - const startTime = Date.now(); - - await request(app).post("/api/auth/login").send({ - userId: TEST_USER.userId, - password: TEST_USER.password, - }); - - const endTime = Date.now(); - const elapsedTime = endTime - startTime; - - expect(elapsedTime).toBeLessThan(1000); // 1초 이내 - }, 2000); - }); -}); \ No newline at end of file diff --git a/backend-node/test-db.js b/backend-node/test-db.js deleted file mode 100644 index 1f814b13..00000000 --- a/backend-node/test-db.js +++ /dev/null @@ -1,37 +0,0 @@ -const { Client } = require("pg"); -require("dotenv/config"); - -async function testDatabase() { - const client = new Client({ - connectionString: process.env.DATABASE_URL, - }); - - try { - await client.connect(); - console.log("✅ 데이터베이스 연결 성공"); - - // 사용자 정보 조회 - const userResult = await client.query( - "SELECT user_id, user_name, status FROM user_info LIMIT 5" - ); - console.log("👥 사용자 정보:", userResult.rows); - - // 테이블 라벨 정보 조회 - const tableLabelsResult = await client.query( - "SELECT * FROM table_labels LIMIT 5" - ); - console.log("🏷️ 테이블 라벨 정보:", tableLabelsResult.rows); - - // 컬럼 라벨 정보 조회 - const columnLabelsResult = await client.query( - "SELECT * FROM column_labels LIMIT 5" - ); - console.log("📋 컬럼 라벨 정보:", columnLabelsResult.rows); - } catch (error) { - console.error("❌ 오류 발생:", error); - } finally { - await client.end(); - } -} - -testDatabase(); diff --git a/backend-node/test-jwt.js b/backend-node/test-jwt.js deleted file mode 100644 index 610d85b3..00000000 --- a/backend-node/test-jwt.js +++ /dev/null @@ -1,41 +0,0 @@ -const jwt = require("jsonwebtoken"); - -// JWT 설정 -const JWT_SECRET = "your-super-secret-jwt-key-change-in-production"; -const JWT_EXPIRES_IN = "24h"; - -// 테스트용 사용자 정보 -const testUserInfo = { - userId: "arvin", - userName: "ARVIN", - deptName: "생산기술부", - companyCode: "ILSHIN", -}; - -console.log("=== JWT 토큰 테스트 ==="); -console.log("사용자 정보:", testUserInfo); - -// JWT 토큰 생성 -const token = jwt.sign(testUserInfo, JWT_SECRET, { - expiresIn: JWT_EXPIRES_IN, - issuer: "PMS-System", - audience: "PMS-Users", -}); - -console.log("\n생성된 토큰:"); -console.log(token); - -// 토큰 검증 -try { - const decoded = jwt.verify(token, JWT_SECRET); - console.log("\n토큰 검증 성공:"); - console.log(decoded); -} catch (error) { - console.log("\n토큰 검증 실패:"); - console.log(error.message); -} - -// 토큰 디코드 (검증 없이) -const decodedWithoutVerification = jwt.decode(token); -console.log("\n토큰 디코드 (검증 없이):"); -console.log(decodedWithoutVerification); diff --git a/backend-node/test-token.js b/backend-node/test-token.js deleted file mode 100644 index 61b1eca4..00000000 --- a/backend-node/test-token.js +++ /dev/null @@ -1,41 +0,0 @@ -const jwt = require("jsonwebtoken"); -const fs = require("fs"); - -// JWT 설정 -const JWT_SECRET = "your-super-secret-jwt-key-change-in-production"; -const JWT_EXPIRES_IN = "24h"; - -// 테스트용 사용자 정보 -const testUserInfo = { - userId: "arvin", - userName: "ARVIN", - deptName: "생산기술부", - companyCode: "ILSHIN", -}; - -console.log("=== JWT 토큰 생성 ==="); -console.log("사용자 정보:", testUserInfo); - -// JWT 토큰 생성 -const token = jwt.sign(testUserInfo, JWT_SECRET, { - expiresIn: JWT_EXPIRES_IN, - issuer: "PMS-System", - audience: "PMS-Users", -}); - -console.log("\n생성된 토큰:"); -console.log(token); - -// 토큰을 파일로 저장 -fs.writeFileSync("test-token.txt", token); -console.log("\n토큰이 test-token.txt 파일에 저장되었습니다."); - -// 토큰 검증 테스트 -try { - const decoded = jwt.verify(token, JWT_SECRET); - console.log("\n토큰 검증 성공:"); - console.log(decoded); -} catch (error) { - console.log("\n토큰 검증 실패:"); - console.log(error.message); -} diff --git a/backend-node/test-token.txt b/backend-node/test-token.txt deleted file mode 100644 index 94ca8740..00000000 --- a/backend-node/test-token.txt +++ /dev/null @@ -1 +0,0 @@ -eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJhcnZpbiIsInVzZXJOYW1lIjoiQVJWSU4iLCJkZXB0TmFtZSI6IuyDneyCsOq4sOyIoOu2gCIsImNvbXBhbnlDb2RlIjoiSUxTSElOIiwiaWF0IjoxNzU1Njc1NDg1LCJleHAiOjE3NTU3NjE4ODUsImF1ZCI6IlBNUy1Vc2VycyIsImlzcyI6IlBNUy1TeXN0ZW0ifQ.9TUMD_Rq-5kVNt9EFTztM6J1cxklg8wAclRAvbj1uq0 \ No newline at end of file diff --git a/backend-node/update-password.js b/backend-node/update-password.js deleted file mode 100644 index a9f738fe..00000000 --- a/backend-node/update-password.js +++ /dev/null @@ -1,36 +0,0 @@ -const { Client } = require("pg"); - -async function updatePassword() { - const client = new Client({ - connectionString: process.env.DATABASE_URL, - }); - - try { - await client.connect(); - console.log("✅ 데이터베이스 연결 성공"); - - // kkh 사용자의 비밀번호를 admin123으로 변경 - await client.query(` - UPDATE user_info - SET user_password = 'f21b1ce8b08dc955bd4afff71b3db1fc' - WHERE user_id = 'kkh' - `); - - console.log("✅ 비밀번호 변경 완료: kkh -> admin123"); - - // 변경 확인 - const result = await client.query(` - SELECT user_id, user_name, user_password - FROM user_info - WHERE user_id = 'kkh' - `); - - console.log("👤 변경된 사용자:", result.rows[0]); - } catch (error) { - console.error("❌ 오류 발생:", error); - } finally { - await client.end(); - } -} - -updatePassword(); diff --git a/src/services/dataflowDiagramService.ts b/src/services/dataflowDiagramService.ts index a73585dc..3c79e551 100644 --- a/src/services/dataflowDiagramService.ts +++ b/src/services/dataflowDiagramService.ts @@ -182,10 +182,9 @@ export class DataflowDiagramService { return false; } - await query( - `DELETE FROM dataflow_diagrams WHERE diagram_id = $1`, - [diagramId] - ); + await query(`DELETE FROM dataflow_diagrams WHERE diagram_id = $1`, [ + diagramId, + ]); return true; }