입력 폼 저장기능

This commit is contained in:
kjs 2025-09-04 14:22:11 +09:00
parent feb26fa32a
commit d7c41fc35d
1 changed files with 107 additions and 197 deletions

View File

@ -8,7 +8,17 @@ datasource db {
url = env("DATABASE_URL") url = env("DATABASE_URL")
} }
// 테이블 타입관리 관련 모델은 이미 정의되어 있음 (line 11, 717) 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 admin_supply_mng { model admin_supply_mng {
objid Decimal @id @default(0) @db.Decimal objid Decimal @id @default(0) @db.Decimal
@ -74,15 +84,12 @@ model approval {
@@ignore @@ignore
} }
model approval_kind { model approval_kind {
target_type String @db.VarChar target_type String @id @db.VarChar
target_name String? @db.VarChar target_name String? @db.VarChar
regdate DateTime? @db.Timestamp(6) regdate DateTime? @db.Timestamp(6)
status String? @db.VarChar status String? @db.VarChar
@@id([target_type])
@@index([status]) @@index([status])
} }
@ -135,8 +142,6 @@ model arrival_plan {
@@index([part_objid]) @@index([part_objid])
} }
model as_mng { model as_mng {
objid Int @id objid Int @id
as_no String? @db.VarChar as_no String? @db.VarChar
@ -247,20 +252,13 @@ model attach_file_info {
@@ignore @@ignore
} }
model authority_master { model authority_master {
objid Decimal @id @default(0) @db.Decimal objid Decimal @id @default(0) @db.Decimal
auth_name String? @default("NULL::character varying") @db.VarChar(256) auth_name String? @default("NULL::character varying") @db.VarChar(256)
auth_code String? @default("NULL::character varying") @db.VarChar(64) auth_code String? @default("NULL::character varying") @db.VarChar(64)
writer String? @default("NULL::character varying") @db.VarChar(32) writer String? @default("NULL::character varying") @db.VarChar(32)
regdate DateTime? @db.Timestamp(6) regdate DateTime? @db.Timestamp(6)
status String? @default("NULL::character varying") @db.VarChar(32) status String? @default("NULL::character varying") @db.VarChar(32)
// 관계 설정
sub_users authority_sub_user[] sub_users authority_sub_user[]
} }
@ -277,15 +275,12 @@ model authority_master_history {
} }
model authority_sub_user { model authority_sub_user {
objid Decimal @id @default(0) @db.Decimal objid Decimal @id @default(0) @db.Decimal
master_objid Decimal? @db.Decimal master_objid Decimal? @db.Decimal
user_id String? @default("NULL::character varying") @db.VarChar(64) user_id String? @default("NULL::character varying") @db.VarChar(64)
writer String? @default("NULL::character varying") @db.VarChar(64) writer String? @default("NULL::character varying") @db.VarChar(64)
regdate DateTime? @db.Timestamp(6) regdate DateTime? @db.Timestamp(6)
// 관계 설정
authority_master authority_master? @relation(fields: [master_objid], references: [objid]) authority_master authority_master? @relation(fields: [master_objid], references: [objid])
user user_info? @relation(fields: [user_id], references: [user_id])
@@index([master_objid]) @@index([master_objid])
@@index([user_id]) @@index([user_id])
@ -343,13 +338,6 @@ model bom_part_qty {
@@index([parent_objid]) @@index([parent_objid])
} }
model car_distribute_member { model car_distribute_member {
objid Decimal @db.Decimal objid Decimal @db.Decimal
car_objid Decimal @db.Decimal car_objid Decimal @db.Decimal
@ -439,6 +427,7 @@ model column_labels {
column_name String? @db.VarChar(100) column_name String? @db.VarChar(100)
column_label String? @db.VarChar(200) column_label String? @db.VarChar(200)
web_type String? @db.VarChar(50) web_type String? @db.VarChar(50)
input_type String? @default("direct") @db.VarChar(20) // direct, auto
detail_settings String? detail_settings String?
description String? description String?
display_order Int? @default(0) display_order Int? @default(0)
@ -530,9 +519,10 @@ model company_mng {
regdate DateTime? @db.Timestamp(6) regdate DateTime? @db.Timestamp(6)
status String? @db.VarChar(32) status String? @db.VarChar(32)
// 관계 // 관계 정
menus menu_info[] menus menu_info[]
} }
model contract_mgmt { model contract_mgmt {
objid String @id @db.VarChar objid String @id @db.VarChar
category_cd String? @db.VarChar category_cd String? @db.VarChar
@ -599,8 +589,6 @@ model contract_mgmt_option {
@@index([option_objid]) @@index([option_objid])
} }
model counselingmgmt { model counselingmgmt {
objid String @id @db.VarChar objid String @id @db.VarChar
reg_date String? @db.VarChar reg_date String? @db.VarChar
@ -625,8 +613,6 @@ model counselingmgmt {
parent_seq String? @db.VarChar parent_seq String? @db.VarChar
} }
model customer_service_mgmt { model customer_service_mgmt {
objid String @id @db.VarChar objid String @id @db.VarChar
service_no String? @db.VarChar service_no String? @db.VarChar
@ -1181,8 +1167,6 @@ model inventory_mgmt_in {
@@index([parent_objid]) @@index([parent_objid])
} }
model inventory_mgmt_out { model inventory_mgmt_out {
objid String @id @db.VarChar objid String @id @db.VarChar
parent_objid String? @db.VarChar parent_objid String? @db.VarChar
@ -1262,6 +1246,7 @@ model invoice_mgmt {
discount_percentage String? @db.VarChar discount_percentage String? @db.VarChar
inv_discount_price String? @db.VarChar inv_discount_price String? @db.VarChar
} }
model invoice_mgmt_part { model invoice_mgmt_part {
objid String @id @db.VarChar objid String @id @db.VarChar
invoice_objid String? @db.VarChar invoice_objid String? @db.VarChar
@ -1506,7 +1491,7 @@ model menu_info {
lang_key String? @db.VarChar(100) lang_key String? @db.VarChar(100)
lang_key_desc String? @db.VarChar(100) lang_key_desc String? @db.VarChar(100)
// 관계 설정 (나중에 활용 가능) // 관계 정의
company company_mng? @relation(fields: [company_code], references: [company_code]) company company_mng? @relation(fields: [company_code], references: [company_code])
@@index([parent_obj_id]) @@index([parent_obj_id])
@ -1537,8 +1522,6 @@ model mold_dev_request_info {
status String? @db.VarChar(50) status String? @db.VarChar(50)
} }
model multi_lang_key_master { model multi_lang_key_master {
key_id Int @id @default(autoincrement()) key_id Int @id @default(autoincrement())
company_code String @default("*") @db.VarChar(20) company_code String @default("*") @db.VarChar(20)
@ -1801,7 +1784,6 @@ model order_spec_mng_history {
@@ignore @@ignore
} }
model part_bom_qty { model part_bom_qty {
bom_report_objid Decimal @db.Decimal bom_report_objid Decimal @db.Decimal
objid Decimal @id @db.Decimal objid Decimal @id @db.Decimal
@ -1837,9 +1819,6 @@ model part_bom_report {
@@index([unit_code, contract_objid], map: "part_bom_report_unit_code_idx") @@index([unit_code, contract_objid], map: "part_bom_report_unit_code_idx")
} }
model part_distribution_list { model part_distribution_list {
part_objid Decimal @db.Decimal part_objid Decimal @db.Decimal
product_mgmt_objid String? @db.VarChar(100) product_mgmt_objid String? @db.VarChar(100)
@ -2021,9 +2000,6 @@ model part_mng_history {
@@ignore @@ignore
} }
model planning_issue { model planning_issue {
objid String @id @db.VarChar objid String @id @db.VarChar
issue_no String @db.VarChar issue_no String @db.VarChar
@ -2221,10 +2197,6 @@ model pms_wbs_task {
@@ignore @@ignore
} }
model pms_wbs_task_confirm { model pms_wbs_task_confirm {
objid Decimal? @db.Decimal objid Decimal? @db.Decimal
target_objid Decimal? @db.Decimal target_objid Decimal? @db.Decimal
@ -2349,6 +2321,7 @@ model product_group_mng {
@@ignore @@ignore
} }
model product_kind_spec { model product_kind_spec {
objid String @db.VarChar objid String @db.VarChar
objid_parent String @db.VarChar objid_parent String @db.VarChar
@ -2798,13 +2771,6 @@ model purchase_order_master {
@@index([multi_master_objid]) @@index([multi_master_objid])
} }
model purchase_order_master_241216 { model purchase_order_master_241216 {
objid String? @db.VarChar objid String? @db.VarChar
purchase_order_no String? @db.VarChar purchase_order_no String? @db.VarChar
@ -2920,13 +2886,6 @@ model purchase_order_part {
@@index([purchase_order_master_objid]) @@index([purchase_order_master_objid])
} }
model ratecal_mgmt { model ratecal_mgmt {
ratecal_mgmt_objid Decimal @default(0) @db.Decimal ratecal_mgmt_objid Decimal @default(0) @db.Decimal
position String? @db.VarChar(100) position String? @db.VarChar(100)
@ -2944,8 +2903,6 @@ model ratecal_mgmt {
@@ignore @@ignore
} }
model receive_history { model receive_history {
objid String @id @db.VarChar objid String @id @db.VarChar
part_objid String @db.VarChar part_objid String @db.VarChar
@ -3071,7 +3028,6 @@ model route {
@@ignore @@ignore
} }
model sales_bom_part_qty { model sales_bom_part_qty {
sales_bom_objid String @db.VarChar sales_bom_objid String @db.VarChar
objid String @id @db.VarChar objid String @id @db.VarChar
@ -3106,7 +3062,6 @@ model sales_bom_part_qty {
sales_part_code String? @db.VarChar sales_part_code String? @db.VarChar
} }
model sales_bom_report { model sales_bom_report {
objid String @id @default("") @db.VarChar objid String @id @default("") @db.VarChar
parent_objid String? @unique(map: "sales_bom_report_parent_objid_idx") @db.VarChar parent_objid String? @unique(map: "sales_bom_report_parent_objid_idx") @db.VarChar
@ -3152,7 +3107,6 @@ model sales_bom_report_part {
@@index([parent_objid]) @@index([parent_objid])
} }
model sales_bom_report_part_241218 { model sales_bom_report_part_241218 {
objid String? @db.VarChar objid String? @db.VarChar
parent_objid String? @db.VarChar parent_objid String? @db.VarChar
@ -3193,8 +3147,6 @@ model sales_long_delivery {
price String? @default("0") @db.VarChar price String? @default("0") @db.VarChar
} }
model sales_long_delivery_input { model sales_long_delivery_input {
objid String @id(map: "sales_long_delivery_plan_pkey") @db.VarChar objid String @id(map: "sales_long_delivery_plan_pkey") @db.VarChar
parent_objid String? @db.VarChar parent_objid String? @db.VarChar
@ -3205,8 +3157,6 @@ model sales_long_delivery_input {
admin_editor String? @db.VarChar admin_editor String? @db.VarChar
} }
model sales_long_delivery_predict { model sales_long_delivery_predict {
objid String @id @db.VarChar objid String @id @db.VarChar
parent_objid String? @db.VarChar parent_objid String? @db.VarChar
@ -3249,7 +3199,6 @@ model sales_request_master {
remark String? @db.VarChar remark String? @db.VarChar
} }
model sales_request_part { model sales_request_part {
objid String @id @db.VarChar objid String @id @db.VarChar
sales_bom_qty_objid String? @db.VarChar sales_bom_qty_objid String? @db.VarChar
@ -3309,7 +3258,7 @@ model setup_wbs_task {
} }
model setup_wbs_task_standard { model setup_wbs_task_standard {
objid String? @unique(map: "setup_wbs_task_standard_objid_key") @db.VarChar objid String? @unique @db.VarChar
contract_objid String? @db.VarChar contract_objid String? @db.VarChar
parent_objid String? @db.VarChar parent_objid String? @db.VarChar
task_category String? @db.VarChar task_category String? @db.VarChar
@ -3808,6 +3757,7 @@ model swpc120a_tbl {
@@id([imitemid, suvndcd], map: "pk_swpc120a_tbl") @@id([imitemid, suvndcd], map: "pk_swpc120a_tbl")
} }
model swpc130a_tbl { model swpc130a_tbl {
imitemid String @db.VarChar(15) imitemid String @db.VarChar(15)
suvndcd String @db.VarChar(5) suvndcd String @db.VarChar(5)
@ -4566,6 +4516,7 @@ model swsb500a_tbl {
edit_date DateTime? @db.Timestamp(6) edit_date DateTime? @db.Timestamp(6)
edit_emp String? @db.VarChar(30) edit_emp String? @db.VarChar(30)
} }
model swsb510a_tbl { model swsb510a_tbl {
frw_req_no String @id(map: "pk_swsb510a_tbl") @db.VarChar(10) frw_req_no String @id(map: "pk_swsb510a_tbl") @db.VarChar(10)
req_date String? @db.VarChar(8) req_date String? @db.VarChar(8)
@ -4874,15 +4825,6 @@ model table_labels {
column_labels column_labels[] column_labels column_labels[]
} }
model template_mng { model template_mng {
objid Int @id objid Int @id
template_code String? @db.VarChar template_code String? @db.VarChar
@ -4893,12 +4835,6 @@ model template_mng {
template_code_detail String? @db.VarChar template_code_detail String? @db.VarChar
} }
model time_sheet { model time_sheet {
objid Decimal @default(0) @db.Decimal objid Decimal @default(0) @db.Decimal
project_mgmt_objid Decimal? @db.Decimal project_mgmt_objid Decimal? @db.Decimal
@ -4971,7 +4907,6 @@ model user_info {
user_type String? @db.VarChar(1024) user_type String? @db.VarChar(1024)
user_type_name String? @db.VarChar(1024) user_type_name String? @db.VarChar(1024)
regdate DateTime? @db.Timestamp(6) regdate DateTime? @db.Timestamp(6)
data_type String? @db.VarChar(64)
status String? @db.VarChar(32) status String? @db.VarChar(32)
end_date DateTime? @db.Timestamp(6) end_date DateTime? @db.Timestamp(6)
fax_no String? @db.VarChar fax_no String? @db.VarChar
@ -4980,9 +4915,7 @@ model user_info {
photo Bytes? photo Bytes?
locale String? @db.VarChar locale String? @db.VarChar
company_code String? @db.VarChar(50) company_code String? @db.VarChar(50)
data_type String? @db.VarChar(64)
// 관계 설정
authorities authority_sub_user[]
} }
model user_info_history { model user_info_history {
@ -5051,44 +4984,38 @@ model zz_230410_user_info {
@@ignore @@ignore
} }
// 화면관리 시스템 Prisma 스키마
// 기존 schema.prisma에 추가할 모델들
model screen_definitions { model screen_definitions {
screen_id Int @id @default(autoincrement()) screen_id Int @id @default(autoincrement())
screen_name String @db.VarChar(100) screen_name String @db.VarChar(100)
screen_code String @unique @db.VarChar(50) screen_code String @unique @db.VarChar(50)
table_name String @db.VarChar(100) table_name String @db.VarChar(100)
company_code String @db.VarChar(50) company_code String @db.VarChar(50)
description String? @db.Text description String?
is_active String @default("Y") @db.Char(1) is_active String @default("Y") @db.Char(1)
created_date DateTime @default(now()) @db.Timestamp(6) created_date DateTime @default(now()) @db.Timestamp(6)
created_by String? @db.VarChar(50) created_by String? @db.VarChar(50)
updated_date DateTime @default(now()) @db.Timestamp(6) updated_date DateTime @default(now()) @db.Timestamp(6)
updated_by String? @db.VarChar(50) updated_by String? @db.VarChar(50)
layouts screen_layouts[]
// 관계
layouts screen_layouts[]
menu_assignments screen_menu_assignments[] menu_assignments screen_menu_assignments[]
@@index([company_code]) @@index([company_code])
} }
model screen_layouts { model screen_layouts {
layout_id Int @id @default(autoincrement()) layout_id Int @id @default(autoincrement())
screen_id Int screen_id Int
component_type String @db.VarChar(50) component_type String @db.VarChar(50)
component_id String @unique @db.VarChar(100) component_id String @unique @db.VarChar(100)
parent_id String? @db.VarChar(100) parent_id String? @db.VarChar(100)
position_x Int position_x Int
position_y Int position_y Int
width Int width Int
height Int height Int
properties Json? properties Json?
display_order Int @default(0) display_order Int @default(0)
created_date DateTime @default(now()) @db.Timestamp(6) created_date DateTime @default(now()) @db.Timestamp(6)
// 관계
screen screen_definitions @relation(fields: [screen_id], references: [screen_id], onDelete: Cascade) screen screen_definitions @relation(fields: [screen_id], references: [screen_id], onDelete: Cascade)
widgets screen_widgets[] widgets screen_widgets[]
@ -5096,99 +5023,82 @@ model screen_layouts {
} }
model screen_widgets { model screen_widgets {
widget_id Int @id @default(autoincrement()) widget_id Int @id @default(autoincrement())
layout_id Int layout_id Int
table_name String @db.VarChar(100) table_name String @db.VarChar(100)
column_name String @db.VarChar(100) column_name String @db.VarChar(100)
widget_type String @db.VarChar(50) widget_type String @db.VarChar(50)
label String? @db.VarChar(200) label String? @db.VarChar(200)
placeholder String? @db.VarChar(200) placeholder String? @db.VarChar(200)
is_required Boolean @default(false) is_required Boolean @default(false)
is_readonly Boolean @default(false) is_readonly Boolean @default(false)
validation_rules Json? validation_rules Json?
display_properties Json? display_properties Json?
created_date DateTime @default(now()) @db.Timestamp(6) created_date DateTime @default(now()) @db.Timestamp(6)
layout screen_layouts @relation(fields: [layout_id], references: [layout_id], onDelete: Cascade)
// 관계
layout screen_layouts @relation(fields: [layout_id], references: [layout_id], onDelete: Cascade)
@@index([layout_id]) @@index([layout_id])
} }
model screen_templates { model screen_templates {
template_id Int @id @default(autoincrement()) template_id Int @id @default(autoincrement())
template_name String @db.VarChar(100) template_name String @db.VarChar(100)
template_type String @db.VarChar(50) template_type String @db.VarChar(50)
company_code String @db.VarChar(50) company_code String @db.VarChar(50)
description String? @db.Text description String?
layout_data Json? layout_data Json?
is_public Boolean @default(false) is_public Boolean @default(false)
created_by String? @db.VarChar(50) created_by String? @db.VarChar(50)
created_date DateTime @default(now()) @db.Timestamp(6) created_date DateTime @default(now()) @db.Timestamp(6)
@@index([company_code]) @@index([company_code])
} }
model screen_menu_assignments { model screen_menu_assignments {
assignment_id Int @id @default(autoincrement()) assignment_id Int @id @default(autoincrement())
screen_id Int screen_id Int
menu_objid Decimal @db.Decimal menu_objid Decimal @db.Decimal
company_code String @db.VarChar(50) company_code String @db.VarChar(50)
display_order Int @default(0) display_order Int @default(0)
is_active String @default("Y") @db.Char(1) is_active String @default("Y") @db.Char(1)
created_date DateTime @default(now()) @db.Timestamp(6) created_date DateTime @default(now()) @db.Timestamp(6)
created_by String? @db.VarChar(50) created_by String? @db.VarChar(50)
screen screen_definitions @relation(fields: [screen_id], references: [screen_id], onDelete: Cascade)
// 관계
screen screen_definitions @relation(fields: [screen_id], references: [screen_id], onDelete: Cascade)
@@unique([screen_id, menu_objid, company_code]) @@unique([screen_id, menu_objid, company_code])
@@index([company_code]) @@index([company_code])
} }
// =====================================================
// 공통코드 관리 시스템 모델
// =====================================================
/// 공통코드 카테고리 테이블 /// 공통코드 카테고리 테이블
model code_category { model code_category {
category_code String @id @db.VarChar(50) category_code String @id @db.VarChar(50)
category_name String @db.VarChar(100) category_name String @db.VarChar(100)
category_name_eng String? @db.VarChar(100) category_name_eng String? @db.VarChar(100)
description String? @db.Text description String?
sort_order Int @default(0) sort_order Int? @default(0)
is_active String @default("Y") @db.Char(1) is_active String? @default("Y") @db.Char(1)
created_date DateTime? @default(now()) @db.Timestamp(6) created_date DateTime? @default(now()) @db.Timestamp(6)
created_by String? @db.VarChar(50) created_by String? @db.VarChar(50)
updated_date DateTime? @default(now()) @db.Timestamp(6) updated_date DateTime? @default(now()) @db.Timestamp(6)
updated_by String? @db.VarChar(50) updated_by String? @db.VarChar(50)
codes code_info[]
// 관계 - 코드 상세 정보
codes code_info[]
@@index([is_active])
@@index([sort_order])
} }
/// 공통코드 상세 정보 테이블 /// 공통코드 상세 정보 테이블
model code_info { model code_info {
code_category String @db.VarChar(50) code_category String @db.VarChar(50)
code_value String @db.VarChar(50) code_value String @db.VarChar(50)
code_name String @db.VarChar(100) code_name String @db.VarChar(100)
code_name_eng String? @db.VarChar(100) code_name_eng String? @db.VarChar(100)
description String? @db.Text description String?
sort_order Int @default(0) sort_order Int? @default(0)
is_active String @default("Y") @db.Char(1) is_active String? @default("Y") @db.Char(1)
created_date DateTime? @default(now()) @db.Timestamp(6) created_date DateTime? @default(now()) @db.Timestamp(6)
created_by String? @db.VarChar(50) created_by String? @db.VarChar(50)
updated_date DateTime? @default(now()) @db.Timestamp(6) updated_date DateTime? @default(now()) @db.Timestamp(6)
updated_by String? @db.VarChar(50) 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")
category code_category @relation(fields: [code_category], references: [category_code], onDelete: Cascade, onUpdate: Cascade) @@index([code_category, sort_order], map: "idx_code_info_sort")
@@id([code_category, code_value])
@@index([code_category])
@@index([is_active])
@@index([code_category, sort_order])
} }