-- migration_pms7003.sql -- PMS7003 미세먼지 통합: 기존 배포의 leak_sensor_metric 에 미세먼지 컬럼 3개 추가. -- pm1_0 / pm2_5 / pm10 : PMS7003 이 보고하는 µg/m³(대기환산) 정수. SHT30 온습도 행에선 -- NULL, PMS7003 행에선 온습도(temperature_c/humidity_percent)가 NULL. -- -- PMS7003 은 누수 노드(sensor_id 1·3)에 온습도(SHT30)와 동일 sensor_id 로 통합되며, -- metric_type='pms7003' 로 구분되어 같은 leak_sensor_metric 테이블에 저장된다(온습도의 -- SHT30 co-location 과 동일 방식 — 새 테이블/새 sensor_id 없음). -- -- 신규 설치는 schema_sht30.sql 에 이미 포함되어 있으므로 실행 불필요. 이 파일은 "기존 -- 운영 DB" 업그레이드 전용이다. -- 실행: SOURCE /path/to/sql/migration_pms7003.sql; -- -- 멱등성: MySQL 8 은 ADD COLUMN IF NOT EXISTS 를 지원하지 않으므로, 이미 적용된 DB 에서 -- 재실행하면 "Duplicate column name" 오류가 난다(무해 — 이미 컬럼이 있다는 뜻이니 무시). -- MariaDB 라면 아래 문에 `IF NOT EXISTS` 를 넣어 안전하게 재실행할 수 있다. -- (migration_leak_debounce.sql 과 동일한 비멱등 방침.) -- -- 참고: 이 컬럼이 없어도 서버는 온습도만 저장하며 계속 동작한다. PMS7003 수집을 켜려면 -- 이 마이그레이션을 적용하고, Pi 노드에서 metric_type='pms7003' 보고를 시작하면 된다. SET NAMES utf8mb4; ALTER TABLE `leak_sensor_metric` ADD COLUMN `pm1_0` SMALLINT UNSIGNED NULL COMMENT 'PMS7003 PM1.0 (µg/m³ 대기환산; SHT30 행에선 NULL)' AFTER `humidity_percent`, ADD COLUMN `pm2_5` SMALLINT UNSIGNED NULL COMMENT 'PMS7003 PM2.5 (µg/m³ 대기환산; SHT30 행에선 NULL)' AFTER `pm1_0`, ADD COLUMN `pm10` SMALLINT UNSIGNED NULL COMMENT 'PMS7003 PM10 (µg/m³ 대기환산; SHT30 행에선 NULL)' AFTER `pm2_5`; -- metric_status COMMENT 갱신(선택): 서버 재판정 상태에 high_pm25/high_pm10 이 추가됨을 반영. ALTER TABLE `leak_sensor_metric` MODIFY COLUMN `metric_status` VARCHAR(30) NOT NULL DEFAULT 'normal' COMMENT '서버 임계 판정 결과: normal/high_temp/low_temp/high_humidity/low_humidity/condensation_risk/high_pm25/high_pm10';