diff --git a/src/Infrastructure/Hc900/Hc900LiveKpiService.cs b/src/Infrastructure/Hc900/Hc900LiveKpiService.cs index b0255e4..03dcea6 100644 --- a/src/Infrastructure/Hc900/Hc900LiveKpiService.cs +++ b/src/Infrastructure/Hc900/Hc900LiveKpiService.cs @@ -163,7 +163,10 @@ CREATE TABLE IF NOT EXISTS hc900.kpi_alert ( if (pumpKnown) { await using var pq = conn.CreateCommand(); - pq.CommandText = "SELECT count(*) FROM hc900.realtime_table WHERE tagname = ANY(@p) AND livevalue IN ('1','5','L-RUN','R-RUN')"; + // 디지털 상태점은 realtime_table에 '{N | label | }' 포맷으로 저장됨(FormatValue). + // RUN 라벨(L-RUN/R-RUN)을 부분일치로 판정. TRIP/FAULT/STOP은 RUN 미포함 → 정지로 봄. + // (구버전 bare 값도 함께 허용.) + pq.CommandText = "SELECT count(*) FROM hc900.realtime_table WHERE tagname = ANY(@p) AND (livevalue LIKE '%RUN%' OR livevalue IN ('1','5','L-RUN','R-RUN'))"; var pp = pq.CreateParameter(); pp.ParameterName = "@p"; pp.Value = pumps.ToArray(); pq.Parameters.Add(pp); pumpRunning = Convert.ToInt64(await pq.ExecuteScalarAsync(ct)) > 0; }