외부커넥션관리

This commit is contained in:
leeheejin
2025-09-24 10:04:25 +09:00
parent affb6899cc
commit bc6e6056c1
32 changed files with 6580 additions and 94 deletions

View File

@@ -27,16 +27,12 @@ model external_call_configs {
api_type String? @db.VarChar(20)
config_data Json
description String?
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)
@@index([is_active], map: "idx_external_call_configs_active")
@@index([company_code], map: "idx_external_call_configs_company")
@@index([call_type, api_type], map: "idx_external_call_configs_type")
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 external_db_connections {
@@ -62,6 +58,9 @@ model external_db_connections {
updated_date DateTime? @default(now()) @updatedAt @db.Timestamp(6)
updated_by String? @db.VarChar(50)
// 관계
collection_configs data_collection_configs[]
@@index([connection_name], map: "idx_external_db_connections_name")
}
@@ -3968,9 +3967,6 @@ model table_relationships {
updated_date DateTime? @db.Timestamp(6)
updated_by String? @db.VarChar(50)
diagram_id Int?
// 역방향 관계
bridges data_relationship_bridge[]
}
model data_relationship_bridge {
@@ -3993,9 +3989,6 @@ model data_relationship_bridge {
to_key_value String? @db.VarChar(500)
to_record_id String? @db.VarChar(100)
// 관계 정의
relationship table_relationships? @relation(fields: [relationship_id], references: [relationship_id])
@@index([connection_type], map: "idx_data_bridge_connection_type")
@@index([company_code, is_active], map: "idx_data_bridge_company_active")
}
@@ -4088,55 +4081,434 @@ model table_relationships_backup {
}
model test_sales_info {
sales_no String @id @db.VarChar(20)
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)
// 관계 정의: 영업 정보에서 프로젝트로
projects test_project_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? @db.Text
// 시스템 관리 컬럼들
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)
// 관계 정의: 영업 정보 참조
sales test_sales_info? @relation(fields: [sales_no], references: [sales_no])
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")
}