File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
-- 공통코드. 진행단계·처리결과·공공누리유형 같은 선택지를 소스가 아니라 데이터로 관리한다.
--
-- 저장값(code)은 지금 각 업무 테이블에 들어 있는 한글 문자열을 그대로 쓴다. 영문 코드키로
-- 바꾸면 기존 데이터를 전부 변환해야 하고 엑셀 업로드/다운로드 양식까지 손봐야 해서,
-- 위험 대비 실익이 없다. 진행단계만 예외로 숫자 문자열이며 organization.stage는 smallint 유지.
create table code_group (
group_id varchar(50) primary key,
group_name varchar(100) not null,
description text,
-- 관리 화면에서 코드 추가·삭제를 허용할지. 로직과 강하게 묶인 그룹(STAGE 등)은 false로 두고
-- 표시명·순서만 바꾸게 한다. 단계 추가는 마이그레이션으로 한다.
editable boolean not null default true
);
create table code (
group_id varchar(50) not null references code_group(group_id),
-- 저장값. review_item.review_minor가 varchar(300)이라 그 길이에 맞춘다.
code varchar(300) not null,
-- 화면 표시명. 저장값과 다를 수 있다 - 권리확인 세부항목은 저장값이
-- '2. 후천적 권리 전부 보유(계약서 확인 필요)'인데 화면에는 짧은 형태로 나온다.
label varchar(200) not null,
sort_order int not null,
active boolean not null default true,
-- 코드별 부가 속성. 값만 담고 동작은 담지 않는다 - 동작까지 밀어넣으면
-- DB 안에 규칙 언어를 새로 만드는 꼴이 되어 오히려 읽기 어려워진다.
attrs jsonb not null default '{}'::jsonb,
primary key (group_id, code)
);
create index idx_code_group_sort on code (group_id, sort_order);