|
1
|
-- ## iitp DB Schemas - Initial setup - Creation and Delete if tables exists
|
|
2
|
-- ## ver 0.0.5 last updated data : 2025.08.18
|
|
3
|
-- ## Only for PostgreSQL
|
|
4
|
-- ## Open API Admin 관리용 Admin 서비스 데이터용 테이블 생성 스크립트
|
|
5
|
-- ##
|
|
6
|
|
|
7
|
|
|
8
|
-- ################################################
|
|
9
|
-- ## ADMIN 시스템 테이블 생성
|
|
10
|
-- ################################################
|
|
11
|
|
|
12
|
-- #### IITP Admin Account(user) 정보 테이블 ####
|
|
13
|
|
|
14
|
-- # public.sys_adm_account definition
|
|
15
|
|
|
16
|
DROP TABLE IF EXISTS public.sys_adm_account;
|
|
17
|
|
|
18
|
|
|
19
|
CREATE TABLE public.sys_adm_account (
|
|
20
|
adm_id int4 GENERATED BY DEFAULT AS IDENTITY( INCREMENT BY 1 MINVALUE 1 MAXVALUE 2147483647 START 1 CACHE 1 NO CYCLE) NOT NULL, -- system id, 고유 식별자 (자동 증가)
|
|
21
|
login_id VARCHAR(128) NOT NULL, -- admin login id
|
|
22
|
password char(60) NOT NULL, -- admin login password (bcrypt Hassing)
|
|
23
|
name VARCHAR(90) NOT NULL, -- admin name
|
|
24
|
|
|
25
|
roles varchar(8) NOT NULL, -- admin role, "sys_admin_roles" comm code 참조
|
|
26
|
status char(1) DEFAULT 'A' NOT NULL, -- 데이터 상태, "data_status" comm code 참조
|
|
27
|
del_yn char(1) DEFAULT 'N'::bpchar NOT NULL, -- 삭제여부 (Y: 삭제)
|
|
28
|
|
|
29
|
latest_login_at timestamptz, -- latest login time
|
|
30
|
|
|
31
|
affiliation VARCHAR(60), -- admin 소속
|
|
32
|
description VARCHAR(600), -- admin 설명
|
|
33
|
note VARCHAR(600), -- 비고
|
|
34
|
|
|
35
|
created_at timestamptz DEFAULT CURRENT_TIMESTAMP NOT NULL, -- 레코드 생성 시각
|
|
36
|
updated_at timestamptz DEFAULT CURRENT_TIMESTAMP, -- 레코드 수정 시각
|
|
37
|
deleted_at timestamptz NULL, -- 삭제 일시 (논리 삭제 시 기록)
|
|
38
|
created_by varchar(40) NOT NULL, -- 데이터 생성자 (SYS-BACH, SYS-MANUAL, BY-USER, admin name), "sys_work_type" comm code 참조
|
|
39
|
updated_by varchar(40) NULL, -- 데이터 수정자
|
|
40
|
deleted_by varchar(40) NULL, -- 데이터 삭제자
|
|
41
|
|
|
42
|
CONSTRAINT pkey_sys_adm_account PRIMARY KEY (adm_id)
|
|
43
|
);
|
|
44
|
|
|
45
|
CREATE UNIQUE INDEX uidx_sys_adm_account_login ON public.sys_adm_account USING btree (login_id);
|
|
46
|
CREATE INDEX idx_sys_adm_account_name ON public.sys_adm_account USING btree (name);
|
|
47
|
CREATE INDEX idx_sys_adm_account_role_status ON public.sys_adm_account USING btree (roles, status);
|
|
48
|
COMMENT ON TABLE public.sys_adm_account IS 'IITP Admin Account(user) 정보 테이블';
|
|
49
|
|
|
50
|
COMMENT ON COLUMN public.sys_adm_account.adm_id IS ' system id, 고유 식별자 (자동 증가)';
|
|
51
|
COMMENT ON COLUMN public.sys_adm_account.login_id IS 'admin login id';
|
|
52
|
COMMENT ON COLUMN public.sys_adm_account.password IS 'admin login password (bcrypt Hassing), 초기 비번(12345!!!)';
|
|
53
|
COMMENT ON COLUMN public.sys_adm_account.name IS 'admin name';
|
|
54
|
|
|
55
|
COMMENT ON COLUMN public.sys_adm_account.roles IS 'admin role, "sys_admin_roles" comm code 참조';
|
|
56
|
COMMENT ON COLUMN public.sys_adm_account.status IS '"data_status" comm code 참조';
|
|
57
|
COMMENT ON COLUMN public.sys_adm_account.del_yn IS '삭제여부 (Y: 삭제)';
|
|
58
|
|
|
59
|
COMMENT ON COLUMN public.sys_adm_account.affiliation IS 'admin 소속';
|
|
60
|
COMMENT ON COLUMN public.sys_adm_account.description IS 'admin 설명';
|
|
61
|
COMMENT ON COLUMN public.sys_adm_account.note IS '비고';
|
|
62
|
|
|
63
|
COMMENT ON COLUMN public.sys_adm_account.latest_login_at IS '마지막 로그인 시각';
|
|
64
|
|
|
65
|
COMMENT ON COLUMN public.sys_adm_account.created_at IS '레코드 생성 시각';
|
|
66
|
COMMENT ON COLUMN public.sys_adm_account.updated_at IS '레코드 수정 시각';
|
|
67
|
COMMENT ON COLUMN public.sys_adm_account.deleted_at IS '삭제 일시 (논리 삭제 시 기록)';
|
|
68
|
COMMENT ON COLUMN public.sys_adm_account.created_by IS '데이터 생성자 (SYS-BACH, SYS-MANUAL, BY-USER, admin name), "sys_work_type" comm code 참조';
|
|
69
|
COMMENT ON COLUMN public.sys_adm_account.updated_by IS '데이터 수정자';
|
|
70
|
COMMENT ON COLUMN public.sys_adm_account.deleted_by IS '데이터 삭제자';
|
|
71
|
|
|
72
|
|
|
73
|
|
|
74
|
|
|
75
|
-- #### IITP 공지사항 게시 정보 테이블 ####
|
|
76
|
|
|
77
|
-- # public.sys_notice definition
|
|
78
|
|
|
79
|
DROP TABLE IF EXISTS public.sys_notice;
|
|
80
|
|
|
81
|
|
|
82
|
CREATE TABLE sys_notice (
|
|
83
|
notice_id int4 GENERATED BY DEFAULT AS IDENTITY( INCREMENT BY 1 MINVALUE 1 MAXVALUE 2147483647 START 1 CACHE 1 NO CYCLE) NOT NULL, -- 공지사항 고유 ID
|
|
84
|
title VARCHAR(300) NOT NULL, -- 공지 제목
|
|
85
|
content VARCHAR(6000) NOT NULL, -- 공지 본문 내용
|
|
86
|
notice_type CHAR(1) NOT null DEFAULT 'G' CHECK (notice_type IN ('G', 'S', 'E')), -- 공지 유형 (예: G(general), S(system), E(event))
|
|
87
|
pinned_yn CHAR(1) DEFAULT 'N', -- 상단 고정 여부 (Y 시 우선 노출)
|
|
88
|
public_yn CHAR(1) DEFAULT 'Y', -- 공개 여부 (N이면 비공개 또는 관리자 전용)
|
|
89
|
posted_at timestamptz DEFAULT CURRENT_TIMESTAMP, -- 게시 일시
|
|
90
|
start_dt DATE, -- 공지 시작일 (노출 시작일)
|
|
91
|
end_dt DATE, -- 공지 종료일 (노출 종료일)
|
|
92
|
created_by VARCHAR(100), -- 작성자
|
|
93
|
updated_by VARCHAR(100), -- 수정자
|
|
94
|
created_at timestamptz DEFAULT CURRENT_TIMESTAMP, -- 생성 일시
|
|
95
|
updated_at timestamptz, -- 수정 일시
|
|
96
|
|
|
97
|
CONSTRAINT pkey_sys_notice PRIMARY KEY (notice_id)
|
|
98
|
);
|
|
99
|
|
|
100
|
CREATE INDEX idx_sys_notice_type_dt ON public.sys_notice USING btree (notice_type, start_dt,end_dt);
|
|
101
|
|
|
102
|
COMMENT ON TABLE sys_notice IS '공지사항 게시 정보 테이블';
|
|
103
|
|
|
104
|
COMMENT ON COLUMN sys_notice.notice_id IS '공지사항 고유 식별자';
|
|
105
|
COMMENT ON COLUMN sys_notice.title IS '공지 제목';
|
|
106
|
COMMENT ON COLUMN sys_notice.content IS '공지 본문 텍스트';
|
|
107
|
COMMENT ON COLUMN sys_notice.notice_type IS '공지 유형 (예: G(general), S(system), E(event))';
|
|
108
|
COMMENT ON COLUMN sys_notice.pinned_yn IS '공지 상단 고정 여부 (Y 시 우선 노출)';
|
|
109
|
COMMENT ON COLUMN sys_notice.public_yn IS '공개 여부 (N이면 비공개 또는 관리자 전용)';
|
|
110
|
COMMENT ON COLUMN sys_notice.posted_at IS '공지 게시 일시';
|
|
111
|
COMMENT ON COLUMN sys_notice.start_dt IS '공지 노출 시작일';
|
|
112
|
COMMENT ON COLUMN sys_notice.end_dt IS '공지 노출 종료일';
|
|
113
|
COMMENT ON COLUMN sys_notice.created_by IS '공지 작성자 ID 또는 이름';
|
|
114
|
COMMENT ON COLUMN sys_notice.updated_by IS '공지 수정자 ID 또는 이름';
|
|
115
|
COMMENT ON COLUMN sys_notice.created_at IS '레코드 생성 시각';
|
|
116
|
COMMENT ON COLUMN sys_notice.updated_at IS '레코드 수정 시각';
|
|
117
|
|
|
118
|
|
|
119
|
|
|
120
|
|
|
121
|
|
|
122
|
-- #### IITP 자주 묻는 질문(FAQ) 정보 테이블 ####
|
|
123
|
|
|
124
|
-- # public.sys_faq definition
|
|
125
|
|
|
126
|
DROP TABLE IF EXISTS public.sys_faq;
|
|
127
|
|
|
128
|
CREATE TABLE public.sys_faq (
|
|
129
|
faq_id int4 GENERATED BY DEFAULT AS IDENTITY( INCREMENT BY 1 MINVALUE 1 MAXVALUE 2147483647 START 1 CACHE 1 NO CYCLE) NOT NULL, -- system id, 고유 식별자 (자동 증가)
|
|
130
|
faq_type VARCHAR(12) NOT NULL, -- FAQ 유형, "faq_type" comm code 참조
|
|
131
|
question VARCHAR(600) NOT NULL, -- 질문
|
|
132
|
answer VARCHAR(3000) NOT NULL, -- 답변
|
|
133
|
sort_order INT DEFAULT 0, -- 정렬 우선순위
|
|
134
|
hit_cnt INT DEFAULT 0, -- 조회수
|
|
135
|
use_yn CHAR(1) DEFAULT 'Y', -- 사용 여부 (Y/N)
|
|
136
|
created_at timestamptz DEFAULT CURRENT_TIMESTAMP,
|
|
137
|
updated_at timestamptz DEFAULT CURRENT_TIMESTAMP,
|
|
138
|
created_by varchar(40),
|
|
139
|
updated_by varchar(40),
|
|
140
|
|
|
141
|
CONSTRAINT pkey_sys_faq PRIMARY KEY (faq_id)
|
|
142
|
);
|
|
143
|
CREATE INDEX idx_sys_faq_type_sort ON public.sys_faq USING btree (faq_type, sort_order,use_yn);
|
|
144
|
|
|
145
|
|
|
146
|
COMMENT ON TABLE public.sys_faq IS '자주 묻는 질문(FAQ) 정보 테이블';
|
|
147
|
|
|
148
|
COMMENT ON COLUMN public.sys_faq.faq_id IS 'FAQ 고유 ID';
|
|
149
|
COMMENT ON COLUMN public.sys_faq.faq_type IS 'FAQ 유형, "faq_type" comm code 참조';
|
|
150
|
COMMENT ON COLUMN public.sys_faq.question IS 'FAQ 질문';
|
|
151
|
COMMENT ON COLUMN public.sys_faq.answer IS 'FAQ 답변';
|
|
152
|
COMMENT ON COLUMN public.sys_faq.sort_order IS '정렬 순서';
|
|
153
|
COMMENT ON COLUMN public.sys_faq.hit_cnt IS 'FAQ 조회수';
|
|
154
|
COMMENT ON COLUMN public.sys_faq.use_yn IS '사용 여부 (Y/N))';
|
|
155
|
|
|
156
|
|
|
157
|
COMMENT ON COLUMN public.sys_faq.created_by IS '등록자 ID 또는 이름';
|
|
158
|
COMMENT ON COLUMN public.sys_faq.updated_by IS '수정자 ID 또는 이름';
|
|
159
|
COMMENT ON COLUMN public.sys_faq.created_at IS '등록 일시';
|
|
160
|
COMMENT ON COLUMN public.sys_faq.updated_at IS '수정 일시';
|
|
161
|
|
|
162
|
|
|
163
|
|
|
164
|
|
|
165
|
-- #### IITP 일반 사용자 QnA 테이블 (질문과 답변 포함) ####
|
|
166
|
|
|
167
|
-- # public.sys_qna definition
|
|
168
|
|
|
169
|
DROP TABLE IF EXISTS public.sys_qna;
|
|
170
|
|
|
171
|
CREATE TABLE public.sys_qna (
|
|
172
|
qna_id BIGSERIAL NOT NULL, -- 질문 고유 식별자
|
|
173
|
user_id int4 NOT NULL, -- 작성자 system ID
|
|
174
|
qna_type VARCHAR(32) NOT NULL, -- 질문 유형, "qna_type" comm code 참조
|
|
175
|
title VARCHAR(600) NOT NULL, -- 질문 제목
|
|
176
|
content VARCHAR(6000) NOT NULL, -- 질문 내용
|
|
177
|
secret_yn CHAR(1) DEFAULT 'N', -- 비공개 여부 (Y: 비공개, N: 공개)
|
|
178
|
writer_name varchar(90), -- 작성자 이름 (선택 입력)
|
|
179
|
answer_content VARCHAR(6000), -- 답변 내용
|
|
180
|
answered_by varchar(40), -- 답변자 ID 또는 이름
|
|
181
|
answered_yn CHAR(1) DEFAULT 'N', -- 답변 공개(완료) 여부 (Y: 공개(완료), N: 비공개(미답변))
|
|
182
|
hit_cnt INT DEFAULT 0, -- 조회수
|
|
183
|
del_yn char(1) DEFAULT 'N'::bpchar NOT NULL, -- 삭제여부 (Y: 삭제)
|
|
184
|
answered_at timestamptz, -- 답변 일시
|
|
185
|
created_at timestamptz NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 질문 등록일시
|
|
186
|
updated_at timestamptz DEFAULT CURRENT_TIMESTAMP, -- 마지막 수정일시
|
|
187
|
deleted_at timestamptz, -- 삭제 일시
|
|
188
|
created_by varchar(40), -- 생성자
|
|
189
|
updated_by varchar(40), -- 수정자
|
|
190
|
deleted_by varchar(40), -- 삭제자
|
|
191
|
|
|
192
|
CONSTRAINT pkey_sys_qna PRIMARY KEY (qna_id)
|
|
193
|
);
|
|
194
|
CREATE INDEX idx_sys_qna_type_screct ON public.sys_qna USING btree (qna_type, secret_yn);
|
|
195
|
CREATE INDEX idx_sys_qna_type_sort ON public.sys_qna USING btree (hit_cnt, created_at);
|
|
196
|
|
|
197
|
|
|
198
|
COMMENT ON TABLE public.sys_qna IS '일반 사용자 QnA 테이블 (질문과 답변 포함)';
|
|
199
|
|
|
200
|
COMMENT ON COLUMN public.sys_qna.qna_id IS 'QnA 고유 식별자 (Primary Key)';
|
|
201
|
COMMENT ON COLUMN public.sys_qna.user_id IS '작성자 system ID ';
|
|
202
|
COMMENT ON COLUMN public.sys_qna.qna_type IS 'QnA 질문 유형, "qna_type" comm code 참조';
|
|
203
|
COMMENT ON COLUMN public.sys_qna.title IS '질문 제목';
|
|
204
|
COMMENT ON COLUMN public.sys_qna.content IS '질문 본문 내용';
|
|
205
|
COMMENT ON COLUMN public.sys_qna.secret_yn IS '비공개 여부 (Y: 비공개, N: 공개)';
|
|
206
|
COMMENT ON COLUMN public.sys_qna.writer_name IS '작성자 이름 (옵션)';
|
|
207
|
COMMENT ON COLUMN public.sys_qna.answer_content IS '답변 내용';
|
|
208
|
COMMENT ON COLUMN public.sys_qna.answered_by IS '답변 작성자 ID 또는 이름';
|
|
209
|
COMMENT ON COLUMN public.sys_qna.answered_yn IS '답변 공개(완료) 여부 (Y: 공개(완료), N: 비공개(미답변))';
|
|
210
|
COMMENT ON COLUMN public.sys_qna.hit_cnt IS 'QnA 조회수';
|
|
211
|
COMMENT ON COLUMN public.sys_qna.del_yn IS '삭제여부 (Y: 삭제)';
|
|
212
|
COMMENT ON COLUMN public.sys_qna.answered_at IS '답변 등록 일시';
|
|
213
|
COMMENT ON COLUMN public.sys_qna.created_at IS '질문 등록 일시';
|
|
214
|
COMMENT ON COLUMN public.sys_qna.updated_at IS '질문 수정 일시';
|
|
215
|
COMMENT ON COLUMN public.sys_qna.deleted_at IS '삭제 일시 (soft delete)';
|
|
216
|
COMMENT ON COLUMN public.sys_qna.created_by IS '생성자 ID';
|
|
217
|
COMMENT ON COLUMN public.sys_qna.updated_by IS '수정자 ID';
|
|
218
|
COMMENT ON COLUMN public.sys_qna.deleted_by IS '삭제자 ID';
|
|
219
|
|
|
220
|
|
|
221
|
|
|
222
|
|
|
223
|
|
|
224
|
|
|
225
|
|
|
226
|
-- ################################################
|
|
227
|
-- ## 시스템 로그 기록
|
|
228
|
-- ################################################
|
|
229
|
|
|
230
|
|
|
231
|
|
|
232
|
-- #### IITP 사용자 access(login/logout) 이력 테이블 ####
|
|
233
|
|
|
234
|
-- # public.sys_log_user_access definition
|
|
235
|
|
|
236
|
DROP TABLE IF EXISTS public.sys_log_user_access;
|
|
237
|
|
|
238
|
CREATE TABLE public.sys_log_user_access (
|
|
239
|
log_id BIGSERIAL NOT NULL, -- 로그 고유 ID
|
|
240
|
user_id int4 NOT NULL, -- 사용자 ID
|
|
241
|
user_type CHAR(1) NOT NULL CHECK (user_type IN ('U', 'A')), -- 사용자 유형
|
|
242
|
log_type VARCHAR(16) NOT NULL CHECK (log_type IN ('LOGIN', 'LOGOUT', 'LOGOUT-T-EXP')), -- 수행한 액션 종류 (예: LOGIN, LOGOUT, LOGOUT-T-EXP)
|
|
243
|
act_result CHAR(1) NOT NULL CHECK (act_result IN ('S', 'F')), -- 액션 결과 ( S, F)
|
|
244
|
err_code VARCHAR(10), -- 실패 시 에러 코드
|
|
245
|
err_msg VARCHAR(200), -- 실패 시 에러 메시지
|
|
246
|
ip_addr VARCHAR(50), -- 요청 IP 주소
|
|
247
|
user_agent VARCHAR(512), -- 사용자 디바이스 정보 (브라우저 등)
|
|
248
|
access_tm timestamptz NOT NULL DEFAULT CURRENT_TIMESTAMP, -- access 시각
|
|
249
|
created_at timestamptz DEFAULT CURRENT_TIMESTAMP,
|
|
250
|
|
|
251
|
CONSTRAINT pkey_sys_log_user_access PRIMARY KEY (log_id)
|
|
252
|
);
|
|
253
|
CREATE INDEX idx_sys_log_user_access_user_type ON public.sys_log_user_access USING btree (user_id, user_type,log_type);
|
|
254
|
|
|
255
|
|
|
256
|
COMMENT ON TABLE public.sys_log_user_access IS '사용자 access(login/logout) 이력 테이블';
|
|
257
|
|
|
258
|
COMMENT ON COLUMN public.sys_log_user_access.log_id IS '로그 고유 ID';
|
|
259
|
COMMENT ON COLUMN public.sys_log_user_access.user_id IS '사용자 ID';
|
|
260
|
COMMENT ON COLUMN public.sys_log_user_access.user_type IS '사용자 유형(U:User, A:Admin)';
|
|
261
|
|
|
262
|
COMMENT ON COLUMN public.sys_log_user_access.log_type IS '수행한 액션 (예: LOGIN, LOGOUT,LOGOUT-T-EXP)';
|
|
263
|
COMMENT ON COLUMN public.sys_log_user_access.act_result IS '성공 여부( S:성공, F:실패)';
|
|
264
|
COMMENT ON COLUMN public.sys_log_user_access.err_code IS '에러 발생 시 코드';
|
|
265
|
COMMENT ON COLUMN public.sys_log_user_access.err_msg IS '에러 발생 시 상세 메시지';
|
|
266
|
COMMENT ON COLUMN public.sys_log_user_access.ip_addr IS '요청을 보낸 클라이언트 IP';
|
|
267
|
COMMENT ON COLUMN public.sys_log_user_access.user_agent IS '사용자 디바이스 정보 (브라우저 등)';
|
|
268
|
COMMENT ON COLUMN public.sys_log_user_access.access_tm IS 'access 시각';
|
|
269
|
COMMENT ON COLUMN public.sys_log_user_access.created_at IS '등록 일시';
|
|
270
|
|
|
271
|
|
|
272
|
|
|
273
|
|
|
274
|
-- #### IITP 어드민/사용자 데이터 변경 이력 테이블 ####
|
|
275
|
|
|
276
|
-- # public.sys_log_change_his definition
|
|
277
|
|
|
278
|
DROP TABLE IF EXISTS public.sys_log_change_his;
|
|
279
|
|
|
280
|
CREATE TABLE sys_log_change_his (
|
|
281
|
log_id BIGSERIAL PRIMARY KEY,
|
|
282
|
|
|
283
|
actor_type CHAR(1) NOT NULL CHECK (actor_type IN ('U', 'A')), -- 사용자 유형
|
|
284
|
actor_id BIGINT NOT NULL, -- user_id or admin_id depending on actor_type
|
|
285
|
|
|
286
|
action_type VARCHAR(36) NOT NULL, -- 변경 타입 (예: 'DEL_ACCOUNT', 'EDIT_ACCOUNT')
|
|
287
|
target_type VARCHAR(64), -- 변경 대상 타입(예: 'USER_PROFILE', 'ADMIN_MENU', 'ROLE', etc.)
|
|
288
|
target_id BIGINT, -- 대상 ID
|
|
289
|
|
|
290
|
act_result CHAR(1) NOT NULL CHECK (act_result IN ('S', 'F')), -- 액션 결과 ( S, F)
|
|
291
|
chg_summary JSONB, -- 주요 변경 내용 요약, 예: {"bf": {...}, "af: {...}}
|
|
292
|
|
|
293
|
err_code VARCHAR(10), -- 실패 시 에러 코드
|
|
294
|
err_msg VARCHAR(200), -- 실패 시 에러 메시지
|
|
295
|
|
|
296
|
ip_addr VARCHAR(50), -- 요청 IP 주소
|
|
297
|
user_agent VARCHAR(512), -- 사용자 디바이스 정보 (브라우저 등)
|
|
298
|
|
|
299
|
act_tm timestamptz NOT NULL DEFAULT CURRENT_TIMESTAMP, -- action 시각
|
|
300
|
created_at timestamptz DEFAULT CURRENT_TIMESTAMP
|
|
301
|
);
|
|
302
|
CREATE INDEX idx_sys_log_change_his_act_type_id ON public.sys_log_change_his USING btree (actor_type, actor_id, action_type);
|
|
303
|
CREATE INDEX idx_sys_log_change_his_tgt_type_id ON public.sys_log_change_his USING btree (target_type, target_id);
|
|
304
|
|
|
305
|
|
|
306
|
COMMENT ON TABLE public.sys_log_change_his IS '어드민/사용자 데이터 변경 이력 테이블';
|
|
307
|
|
|
308
|
COMMENT ON COLUMN public.sys_log_change_his.log_id IS '로그 고유 ID';
|
|
309
|
COMMENT ON COLUMN public.sys_log_change_his.actor_type IS '사사용자 유형(U:User, A:Admin)';
|
|
310
|
COMMENT ON COLUMN public.sys_log_change_his.actor_id IS 'user_id or admin_id depending on actor_type';
|
|
311
|
|
|
312
|
COMMENT ON COLUMN public.sys_log_change_his.action_type IS '변경 타입 (예: DEL_ACCOUNT, EDIT_ACCOUNT)';
|
|
313
|
COMMENT ON COLUMN public.sys_log_change_his.target_type IS '변경 대상 타입 (예: USR_PROFILE, ADM_MENU, ROLE, etc.)';
|
|
314
|
COMMENT ON COLUMN public.sys_log_change_his.target_id IS '대상 ID';
|
|
315
|
|
|
316
|
COMMENT ON COLUMN public.sys_log_change_his.act_result IS '성공 여부( S:성공, F:실패)';
|
|
317
|
COMMENT ON COLUMN public.sys_log_change_his.chg_summary IS '주요 변경 내용 요약, 예: {"bf": {...}, "af: {...}}';
|
|
318
|
|
|
319
|
COMMENT ON COLUMN public.sys_log_change_his.err_code IS '에러 발생 시 코드';
|
|
320
|
COMMENT ON COLUMN public.sys_log_change_his.err_msg IS '에러 발생 시 상세 메시지';
|
|
321
|
COMMENT ON COLUMN public.sys_log_change_his.ip_addr IS '요청을 보낸 클라이언트 IP';
|
|
322
|
COMMENT ON COLUMN public.sys_log_change_his.user_agent IS '사용자 디바이스 정보 (브라우저 등)';
|
|
323
|
COMMENT ON COLUMN public.sys_log_change_his.act_tm IS 'action 시각';
|
|
324
|
COMMENT ON COLUMN public.sys_log_change_his.created_at IS '등록 일시';
|
|
325
|
|
|
326
|
|
|
327
|
|
|
328
|
|
|
329
|
|
|
330
|
|
|
331
|
|
|
332
|
|
|
333
|
|
|
334
|
-- ################################################
|
|
335
|
-- ## 통계 데이터 수집 기록
|
|
336
|
-- ################################################
|
|
337
|
|
|
338
|
-- #### KOSIS 통계 데이터 수집 기록 ####
|
|
339
|
|
|
340
|
-- # public.sys_ext_api_info definition
|
|
341
|
|
|
342
|
-- Drop table if table exists
|
|
343
|
|
|
344
|
CREATE TABLE public.sys_log_stats_intg_his (
|
|
345
|
log_id int8 GENERATED BY DEFAULT AS identity
|
|
346
|
|
|
347
|
intg_tbl_id VARCHAR(50) NOT NULL, -- 데이터 동합할 내부 db table id
|
|
348
|
stat_tbl_id varchar(40) NOT NULL, -- 원데이터 통계 id
|
|
349
|
action_type varchar(24) NOT NULL, -- action type "log_his_stat_act_type" comm code 참조
|
|
350
|
|
|
351
|
ret_yn char(1) NOT NULL, -- action 실패 여부
|
|
352
|
err_code char(6), -- 실패시 에러 코드
|
|
353
|
err_msg varchar(300), -- 실패시 에러 메시지
|
|
354
|
|
|
355
|
created_at timestamptz DEFAULT CURRENT_TIMESTAMP NOT NULL, -- 레코드 생성 시각
|
|
356
|
created_by varchar(40) NULL, -- 데이터 생성자 (SYS-BACH, SYS-MANUAL, BY-USER, admin name), "sys_work_type" comm code 참조
|
|
357
|
|
|
358
|
CONSTRAINT pkey_log_his_stats_intg PRIMARY KEY (log_id)
|
|
359
|
};
|
|
360
|
|
|
361
|
|
|
362
|
|
|
363
|
COMMENT ON COLUMN public.log_his_stats_intg.created_at IS '레코드 생성 시각';
|
|
364
|
COMMENT ON COLUMN public.log_his_stats_intg.created_by IS '데이터 생성자 (SYS-BACH, SYS-MANUAL, BY-USER, admin name), "sys_work_type" comm code 참조';
|