htmlspecialchars((string)$s, ENT_QUOTES, 'UTF-8'); $month_dot = str_replace('-', '.', $month); // 2026-06 → 2026.06 $year_n = (int)substr($month, 0, 4); $month_n = (int)substr($month, 5, 2); $doc_no = 'ENV-' . $month; // 문서번호 try { $dt_last = new DateTime($end_at); $dt_last->modify('-1 day'); $period_end = $dt_last->format('Y-m-d'); } catch (Throwable $e) { $period_end = substr($end_at, 0, 10); } $period_start = substr($start_at, 0, 10); // 관제 대상(설정 기준) $metric_ids = defined('METRIC_SENSOR_IDS') ? METRIC_SENSOR_IDS : []; $leak_ids = defined('LEAK_SENSOR_IDS') ? LEAK_SENSOR_IDS : []; $scope_total = count(array_unique(array_merge($metric_ids, $leak_ids))); $total_alerts = $summary['threshold_alerts'] + $summary['leak_alert']; $incident_count = $has_incident_table ? count($incidents) : $summary['leak_alert']; // verdict 색 클래스(요약 카드/문장) $verdict_cls = 'is-' . ($verdict === 'alert' ? 'alert' : ($verdict === 'warn' ? 'warn' : 'ok')); $verdict_color = rc_verdict_color($verdict); // 자동 총평 한 줄 $auto_summary = sprintf( '당월 온습도 측정 %s건 · 임계 경보 %d건 · 누수 감지 %d건이 집계되었으며, SMS 발송 신뢰성은 %d%%(%d건 중 실패 %d건)입니다.', number_format($summary['metrics']), $summary['threshold_alerts'], $summary['leak_alert'], $summary['sms_reliability_pct'], $summary['total_sms'], $summary['sms_fail'] ); // 센서(지점)별 판정 — 데이터 층 verdict 규칙과 동일(미복구 누수는 월 단위라 여기선 누수감지로 근사) $sensor_verdict = function (array $s): array { if ($s['leak_alert'] > 0 || $s['sms_fail'] > 0) { return ['alert', '경보']; } if ($s['threshold_alerts'] > 0 || $s['device_offline'] > 0) { return ['warn', '주의']; } return ['ok', '안정']; }; // 임계 기준 문자열 $rh_low_txt = (METRIC_RH_LOW >= 0) ? (rc_fmt((float)METRIC_RH_LOW) . '%') : '비활성'; ?> 정보시설 관제 월간 운영 보고서 - <?= $h($month) ?>
← 조회 화면 대시보드
정보시설 관제 월간 운영 보고서 · 대외비 (CONFIDENTIAL)
종합 판정
정보시설 관제 · 온습도 / 누수

정보시설 관제
월간 운영 보고서

서버실 · 문서고 온습도 및 누수 모니터링 / SMS 경보 운영 결과

대상 기간 ~ (년 월)
관제 지점
개소
온습도 · 누수
정보기반
서버실(안)
온습도 계측
조직혁신 · 고객센터
문서고 · 서버실(밖)
누수 감시
문서번호
생성 일시
문서 분류
대외비
보고 범위
데이터 출처
leak_sms_log · leak_sensor_metric
시스템
관제
01 경영 요약 EXECUTIVE SUMMARY
총 경보
임계 · 누수
누수 감지
측정 건수
평균 /
종합 판정:

02 월간 지표 상세 MONTHLY METRICS

경보 · 이벤트

고온 경보건
저온 경보건
고습 경보건
저습 경보건
임계 경보 합계건
누수 감지 / 복구 / 건
정상 복귀건
장비 오프라인 / 복구 / 건
SMS 실패 / 총 발송 / 건

온습도 측정

측정 건수건
평균 온도
온도 최저 / 최고 /
평균 습도
습도 최저 / 최고 /
SMS 신뢰성%
고온 / 저온 임계℃ / ℃
고습 / 저습 임계% /
03 월중 추이 DAILY TRENDS

일별 평균 온·습도

임계 밴드(고온 적 · 안전 녹 · 저온 청)를 배경에 인쇄. 온도 실선(좌축) · 습도 파선(우축). 결측일은 선이 끊깁니다.

일별 경보 발생

온습도 임계 경보(네이비)와 누수 감지(적 · 사선)를 당월 1일~말일 축에 스택으로 표시합니다.

04 관제 지점별 상세 BY LOCATION
해당 월 측정·경보 내역이 없습니다.
임계 경보
건
고온/저온
/
고습/저습
/
누수 감지/복구
/
오프라인/복구
/
SMS 실패
측정
건
평균 온/습
/
온도 최저/최고
/
습도 최저/최고
/
최근 측정
05 누수 사고 로그 LEAK INCIDENTS
누수 사고 이력(leak_incident) 테이블이 도입되지 않은 배포입니다. SMS 태그 집계로 대체합니다 — 당월 누수 감지 건 / 복구 건.
✓ 당월 누수 사고 없음 (0건) — 감시 구간 내 누수 미발생.
발생 일시지점위치지속상태
= 60 ? intdiv($mm, 60) . '시간 ' . ($mm % 60) . '분' : $mm . '분'; } else { echo '-'; } ?>
06 기준 · 주석 및 서명 BASIS & SIGN-OFF

판정 · 임계 기준

  • 임계 고온 ℃ · 저온 ℃ · 고습 % · 저습
  • 판정 규칙 미복구 누수 또는 SMS 실패 > 0 → 경보 · 임계 경보 또는 오프라인 발생 → 주의 · 그 외 → 안정
  • 오프라인 판정 분 무수신 · 경보 쿨다운 온습도 분 / 누수 분

데이터 · 주석

  • 출처 leak_sms_log(태그 접두 집계) · leak_sensor_metric(측정) · leak_sensor_log/leak_incident(누수)
  • 집계 범위 00:00 ~ 24:00 (센서는 sensor_id 기준, 표시명은 관리주체 라벨)
  • 개인정보 수신번호는 표시 단계에서 마스킹(mask_phone) · 본 문서 분류: 대외비
작성
직/성명 · 일자
검토
직/성명 · 일자
승인
직/성명 · 일자