wing-ops/database/migration/013_hns_analysis.sql
jeonghyo.k 2640d882da feat(incidents): 이미지 분석 연동 강화 및 사고 팝업 리뉴얼
- 사고별 이미지 분석 API 및 항공 미디어 조회 연동
- 사고 마커 팝업 디자인 개선, 필터링된 사고만 지도 표시
- 이미지 분석 시 사고명 파라미터 지원, 기본 예측시간 6시간으로 변경
- 유출량 정밀도 NUMERIC(14,10) 확대 (migration 031)
- OpenDrift 유종 매핑 수정 (원유, 등유)
2026-04-13 16:41:56 +09:00

131 lines
6.1 KiB
SQL

-- ============================================================
-- 013_hns_analysis.sql
-- HNS 대기확산 분석 테이블 + 시드 데이터
-- ============================================================
SET search_path TO wing, public;
CREATE TABLE IF NOT EXISTS HNS_ANALYSIS (
HNS_ANLYS_SN SERIAL PRIMARY KEY,
ACDNT_SN INTEGER REFERENCES ACDNT(ACDNT_SN),
ANLYS_NM VARCHAR(200) NOT NULL,
ACDNT_DTM TIMESTAMPTZ,
LOC_NM VARCHAR(200),
-- 위치 (표준: LON/LAT/GEOM)
LON NUMERIC(10,6),
LAT NUMERIC(9,6),
GEOM GEOMETRY(Point, 4326),
LOC_DC VARCHAR(100),
-- 물질 정보
SBST_SN INTEGER,
SBST_NM VARCHAR(100),
UN_NO VARCHAR(10),
CAS_NO VARCHAR(20),
SPIL_QTY NUMERIC(14,10),
SPIL_UNIT_CD VARCHAR(10) DEFAULT 'KL',
SPIL_TP_CD VARCHAR(20),
FCST_HR INTEGER,
ALGO_CD VARCHAR(20),
CRIT_MDL_CD VARCHAR(10),
-- 기상 조건
WIND_SPD NUMERIC(5,1),
WIND_DIR VARCHAR(10),
TEMP NUMERIC(4,1),
HUMID NUMERIC(4,1),
ATM_STBL_CD VARCHAR(10),
-- 실행 상태
EXEC_STTS_CD VARCHAR(20) DEFAULT 'COMPLETED',
RISK_CD VARCHAR(20),
ANALYST_NM VARCHAR(50),
-- 결과
RSLT_DATA JSONB,
USE_YN CHAR(1) DEFAULT 'Y',
REG_DTM TIMESTAMPTZ DEFAULT NOW(),
MDFCN_DTM TIMESTAMPTZ DEFAULT NOW(),
CONSTRAINT CK_HNS_STTS CHECK (EXEC_STTS_CD IN ('PENDING','RUNNING','COMPLETED','FAILED'))
);
-- ============================================================
-- HNS_ANALYSIS 시드 데이터 (8건 — 기존 mock 데이터 기반)
-- ============================================================
INSERT INTO HNS_ANALYSIS (
ANLYS_NM, ACDNT_DTM, LOC_NM, LON, LAT, GEOM, LOC_DC,
SBST_NM, SPIL_QTY, SPIL_UNIT_CD, FCST_HR, ALGO_CD, CRIT_MDL_CD,
WIND_SPD, WIND_DIR, TEMP, HUMID, ATM_STBL_CD,
EXEC_STTS_CD, RISK_CD, ANALYST_NM,
RSLT_DATA, REG_DTM
) VALUES
(
'울산 온산항 톨루엔 누출', '2025-02-11 14:15'::timestamptz,
'부산항 신항', 129.067, 35.078, ST_SetSRID(ST_MakePoint(129.067, 35.078), 4326), '129.067 + 35.078',
'톨루엔 (Toluene)', 12.0, 'KL', 24, 'ALOHA', 'AEGL',
5.2, 'SW', 18.5, 65, 'D',
'COMPLETED', 'HIGH', '운영팀, 방재팀',
'{"aegl3": true, "aegl2": true, "aegl1": true, "damageRadius": "1.8 km", "zones": [{"level":"AEGL-3","radius":500},{"level":"AEGL-2","radius":1000},{"level":"AEGL-1","radius":1500}]}'::jsonb,
'2025-02-11 14:15'::timestamptz
),
(
'여수 엠프시아 누출', '2025-02-09 08:40'::timestamptz,
'여수항', 127.662, 34.740, ST_SetSRID(ST_MakePoint(127.662, 34.740), 4326), '127.662 + 34.740',
'벤젠 (Benzene)', 5.0, 'TON', 12, 'ALOHA', 'AEGL',
4.1, 'NE', 12.3, 58, 'C',
'COMPLETED', 'HIGH', '남해팀, 방재팀',
'{"aegl3": true, "aegl2": true, "aegl1": true, "damageRadius": "2.4 km", "zones": [{"level":"AEGL-3","radius":600},{"level":"AEGL-2","radius":1200},{"level":"AEGL-1","radius":1800}]}'::jsonb,
'2025-02-09 08:40'::timestamptz
),
(
'부산 수소 추진연 폭발', '2025-02-07 12:15'::timestamptz,
'부산항', 129.043, 35.097, ST_SetSRID(ST_MakePoint(129.043, 35.097), 4326), '129.043 + 35.097',
'수소 (Hydrogen)', 0.8, 'TON', 6, 'CAMEO', 'AEGL',
6.5, 'W', 15.0, 55, 'D',
'COMPLETED', 'CRITICAL', '남해팀, 방재팀',
'{"aegl3": true, "aegl2": true, "aegl1": true, "damageRadius": "0.22 km", "zones": [{"level":"AEGL-3","radius":100},{"level":"AEGL-2","radius":150},{"level":"AEGL-1","radius":220}]}'::jsonb,
'2025-02-07 12:15'::timestamptz
),
(
'인천항 메탄올 유출', '2025-02-03 16:50'::timestamptz,
'인천항', 126.598, 37.449, ST_SetSRID(ST_MakePoint(126.598, 37.449), 4326), '126.598 + 37.449',
'메탄올 (Methanol)', 8.5, 'KL', 24, 'ALOHA', 'AEGL',
3.8, 'SE', 8.2, 72, 'E',
'COMPLETED', 'MEDIUM', '중부팀, 방재팀',
'{"aegl3": true, "aegl2": true, "aegl1": true, "damageRadius": "1.2 km", "zones": [{"level":"AEGL-3","radius":300},{"level":"AEGL-2","radius":700},{"level":"AEGL-1","radius":1200}]}'::jsonb,
'2025-02-03 16:50'::timestamptz
),
(
'평택항 LPG 누출', '2025-01-28 09:20'::timestamptz,
'평택항', 126.822, 36.969, ST_SetSRID(ST_MakePoint(126.822, 36.969), 4326), '126.822 + 36.969',
'LPG', 3.2, 'TON', 12, 'CAMEO', 'AEGL',
4.5, 'N', 5.5, 68, 'D',
'COMPLETED', 'MEDIUM', '중부팀, 방재팀',
'{"aegl3": true, "aegl2": true, "aegl1": true, "damageRadius": "0.95 km", "zones": [{"level":"AEGL-3","radius":250},{"level":"AEGL-2","radius":550},{"level":"AEGL-1","radius":950}]}'::jsonb,
'2025-01-28 09:20'::timestamptz
),
(
'광양항 벤젠 누출', '2025-01-22 11:30'::timestamptz,
'광양항', 127.736, 34.930, ST_SetSRID(ST_MakePoint(127.736, 34.930), 4326), '127.736 + 34.930',
'벤젠 (Benzene)', 6.0, 'KL', 24, 'ALOHA', 'AEGL',
3.2, 'S', 10.1, 60, 'C',
'COMPLETED', 'LOW', '남해팀, 방재팀',
'{"aegl3": true, "aegl2": true, "aegl1": true, "damageRadius": "1.5 km", "zones": [{"level":"AEGL-3","radius":400},{"level":"AEGL-2","radius":800},{"level":"AEGL-1","radius":1500}]}'::jsonb,
'2025-01-22 11:30'::timestamptz
),
(
'목포항 염소스가 유출', '2025-01-15 14:10'::timestamptz,
'서구항', 126.392, 34.793, ST_SetSRID(ST_MakePoint(126.392, 34.793), 4326), '126.392 + 34.793',
'염소 (Chlorine)', 2.0, 'TON', 12, 'CAMEO', 'AEGL',
5.0, 'NW', 7.5, 62, 'D',
'COMPLETED', 'LOW', '서해팀, 방재팀',
'{"aegl3": true, "aegl2": true, "aegl1": true, "damageRadius": "1.0 km", "zones": [{"level":"AEGL-3","radius":300},{"level":"AEGL-2","radius":600},{"level":"AEGL-1","radius":1000}]}'::jsonb,
'2025-01-15 14:10'::timestamptz
),
(
'제주 에탄올링 탱크 파열', '2025-01-08 07:55'::timestamptz,
'제주항', 126.528, 33.519, ST_SetSRID(ST_MakePoint(126.528, 33.519), 4326), '126.528 + 33.519',
'에탄올 (Ethanol)', 1.5, 'TON', 6, 'CAMEO', 'AEGL',
6.8, 'NE', 12.0, 55, 'C',
'COMPLETED', 'LOW', '제주팀, 일대팀',
'{"aegl3": true, "aegl2": true, "aegl1": true, "damageRadius": "0.8 km", "zones": [{"level":"AEGL-3","radius":200},{"level":"AEGL-2","radius":450},{"level":"AEGL-1","radius":800}]}'::jsonb,
'2025-01-08 07:55'::timestamptz
);