Backend: - SeismicCollector: USGS FDSN API, 이란 bbox, 5분 주기, M2+ - PressureCollector: Open-Meteo API, 이란 5개 관측점, 10분 주기 - Entity: seismic_events, pressure_readings (DB 마이그레이션 004) - REST: GET /api/sensor/seismic, GET /api/sensor/pressure - Caffeine 캐시: seismic, pressure (TTL 2일) Frontend: - SensorChart 그래프 순서: 지진파 → 기압 → 소음 → 방사선 - 소음/방사선 차트에 (DEMO) 라벨 표시 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
31 lines
1002 B
SQL
31 lines
1002 B
SQL
SET search_path TO kcg, public;
|
|
|
|
-- 지진 이벤트 (USGS)
|
|
CREATE TABLE IF NOT EXISTS seismic_events (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
usgs_id VARCHAR(30) UNIQUE NOT NULL,
|
|
magnitude DOUBLE PRECISION NOT NULL,
|
|
depth DOUBLE PRECISION,
|
|
lat DOUBLE PRECISION NOT NULL,
|
|
lng DOUBLE PRECISION NOT NULL,
|
|
place VARCHAR(255),
|
|
event_time TIMESTAMPTZ NOT NULL,
|
|
collected_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_seismic_events_time ON seismic_events(event_time DESC);
|
|
|
|
-- 기압 데이터 (Open-Meteo)
|
|
CREATE TABLE IF NOT EXISTS pressure_readings (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
station VARCHAR(50) NOT NULL,
|
|
lat DOUBLE PRECISION NOT NULL,
|
|
lng DOUBLE PRECISION NOT NULL,
|
|
pressure_hpa DOUBLE PRECISION NOT NULL,
|
|
reading_time TIMESTAMPTZ NOT NULL,
|
|
collected_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
UNIQUE(station, reading_time)
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_pressure_readings_time ON pressure_readings(reading_time DESC);
|