-- ============================================================ -- AUTH_PERM_TREE: 트리 구조 기반 리소스(메뉴) 권한 정의 -- 부모-자식 관계로 N-depth 서브탭 권한 제어 지원 -- ============================================================ CREATE TABLE IF NOT EXISTS AUTH_PERM_TREE ( RSRC_CD VARCHAR(50) NOT NULL, -- 콜론 구분 경로: 'prediction', 'aerial:media' PARENT_CD VARCHAR(50), -- NULL이면 최상위 탭 RSRC_NM VARCHAR(100) NOT NULL, -- 표시명 RSRC_DESC VARCHAR(200), -- 설명 (NULL 허용) ICON VARCHAR(20), -- 아이콘 (NULL 허용, 선택 옵션) RSRC_LEVEL SMALLINT NOT NULL DEFAULT 0, -- depth (0=탭, 1=서브탭, 2+) SORT_ORD SMALLINT NOT NULL DEFAULT 0, -- 형제 노드 간 정렬 USE_YN CHAR(1) NOT NULL DEFAULT 'Y', CONSTRAINT PK_PERM_TREE PRIMARY KEY (RSRC_CD), CONSTRAINT FK_PERM_TREE_PARENT FOREIGN KEY (PARENT_CD) REFERENCES AUTH_PERM_TREE(RSRC_CD) ); CREATE INDEX IF NOT EXISTS IDX_PERM_TREE_PARENT ON AUTH_PERM_TREE(PARENT_CD); -- ============================================================ -- 초기 데이터 -- ============================================================ -- Level 0: 메인 탭 (11개) INSERT INTO AUTH_PERM_TREE (RSRC_CD, PARENT_CD, RSRC_NM, RSRC_DESC, RSRC_LEVEL, SORT_ORD) VALUES ('prediction', NULL, '유출유 확산예측', '확산 예측 실행 및 결과 조회', 0, 1), ('hns', NULL, 'HNS·대기확산', '대기확산 분석 실행 및 조회', 0, 2), ('rescue', NULL, '긴급구난', '구난 예측 실행 및 조회', 0, 3), ('reports', NULL, '보고자료', '사고 보고서 작성 및 조회', 0, 4), ('aerial', NULL, '항공탐색', '항공 탐색 데이터 조회', 0, 5), ('assets', NULL, '방제자산 관리', '방제 장비 및 자산 관리', 0, 6), ('scat', NULL, '해안평가', 'SCAT 조사 실행 및 조회', 0, 7), ('board', NULL, '게시판', '자료실 및 공지사항 조회', 0, 8), ('weather', NULL, '기상정보', '기상 및 해상 정보 조회', 0, 9), ('incidents', NULL, '통합조회', '사고 상세 정보 조회', 0, 10), ('admin', NULL, '관리', '사용자 및 권한 관리', 0, 11) ON CONFLICT (RSRC_CD) DO NOTHING; -- Level 1: prediction 하위 INSERT INTO AUTH_PERM_TREE (RSRC_CD, PARENT_CD, RSRC_NM, RSRC_LEVEL, SORT_ORD) VALUES ('prediction:analysis', 'prediction', '확산분석', 1, 1), ('prediction:list', 'prediction', '분석 목록', 1, 2), ('prediction:theory', 'prediction', '확산모델 이론', 1, 3), ('prediction:boom-theory', 'prediction', '오일펜스 배치 이론', 1, 4) ON CONFLICT (RSRC_CD) DO NOTHING; -- Level 1: hns 하위 INSERT INTO AUTH_PERM_TREE (RSRC_CD, PARENT_CD, RSRC_NM, RSRC_LEVEL, SORT_ORD) VALUES ('hns:analysis', 'hns', '대기확산 분석', 1, 1), ('hns:list', 'hns', '분석 목록', 1, 2), ('hns:scenario', 'hns', '시나리오 관리', 1, 3), ('hns:manual', 'hns', 'HNS 대응매뉴얼', 1, 4), ('hns:theory', 'hns', '확산모델 이론', 1, 5), ('hns:substance', 'hns', 'HNS 물질정보', 1, 6) ON CONFLICT (RSRC_CD) DO NOTHING; -- Level 1: rescue 하위 INSERT INTO AUTH_PERM_TREE (RSRC_CD, PARENT_CD, RSRC_NM, RSRC_LEVEL, SORT_ORD) VALUES ('rescue:rescue', 'rescue', '긴급구난예측', 1, 1), ('rescue:list', 'rescue', '긴급구난 목록', 1, 2), ('rescue:scenario', 'rescue', '시나리오 관리', 1, 3), ('rescue:theory', 'rescue', '긴급구난모델 이론', 1, 4) ON CONFLICT (RSRC_CD) DO NOTHING; -- Level 1: reports 하위 INSERT INTO AUTH_PERM_TREE (RSRC_CD, PARENT_CD, RSRC_NM, RSRC_LEVEL, SORT_ORD) VALUES ('reports:report-list', 'reports', '보고서 목록', 1, 1), ('reports:template', 'reports', '표준보고서 템플릿', 1, 2), ('reports:generate', 'reports', '보고서 생성', 1, 3) ON CONFLICT (RSRC_CD) DO NOTHING; -- Level 1: aerial 하위 INSERT INTO AUTH_PERM_TREE (RSRC_CD, PARENT_CD, RSRC_NM, RSRC_LEVEL, SORT_ORD) VALUES ('aerial:media', 'aerial', '영상사진관리', 1, 1), ('aerial:analysis', 'aerial', '유출유면적분석', 1, 2), ('aerial:realtime', 'aerial', '실시간드론', 1, 3), ('aerial:sensor', 'aerial', '오염/선박3D분석', 1, 4), ('aerial:satellite', 'aerial', '위성요청', 1, 5), ('aerial:cctv', 'aerial', 'CCTV 조회', 1, 6), ('aerial:theory', 'aerial', '항공탐색 이론', 1, 7) ON CONFLICT (RSRC_CD) DO NOTHING; -- Level 1: assets 하위 INSERT INTO AUTH_PERM_TREE (RSRC_CD, PARENT_CD, RSRC_NM, RSRC_LEVEL, SORT_ORD) VALUES ('assets:management', 'assets', '자산 관리', 1, 1), ('assets:upload', 'assets', '자산 현행화', 1, 2), ('assets:theory', 'assets', '방제자원 이론', 1, 3), ('assets:insurance', 'assets', '선박 보험정보', 1, 4) ON CONFLICT (RSRC_CD) DO NOTHING; -- Level 1: board 하위 INSERT INTO AUTH_PERM_TREE (RSRC_CD, PARENT_CD, RSRC_NM, RSRC_LEVEL, SORT_ORD) VALUES ('board:all', 'board', '전체', 1, 1), ('board:notice', 'board', '공지사항', 1, 2), ('board:data', 'board', '자료실', 1, 3), ('board:qna', 'board', 'Q&A', 1, 4), ('board:manual', 'board', '해경매뉴얼', 1, 5) ON CONFLICT (RSRC_CD) DO NOTHING; -- Level 1: admin 하위 INSERT INTO AUTH_PERM_TREE (RSRC_CD, PARENT_CD, RSRC_NM, RSRC_LEVEL, SORT_ORD) VALUES ('admin:users', 'admin', '사용자 관리', 1, 1), ('admin:permissions', 'admin', '권한 관리', 1, 2), ('admin:menus', 'admin', '메뉴 관리', 1, 3), ('admin:settings', 'admin', '시스템 설정', 1, 4) ON CONFLICT (RSRC_CD) DO NOTHING;