fix(report): 운전모드 펌프 가동 판정 — '{N | label | }' 포맷 매칭
DetectMode가 펌프 livevalue를 IN ('1','5','L-RUN','R-RUN')로 정확일치 비교했으나,
realtime_table은 디지털 상태점을 '{5 | R-RUN | }' 포맷으로 저장(FormatValue) →
절대 매칭 안 됨 → pumpRunning 항상 false → 펌프 설정된 컬럼은 가동 중에도 무조건
'미가동(idle)'으로 오판정(카드 state·알람 진실원 오류).
LIKE '%RUN%'로 RUN 라벨 부분일치(TRIP/FAULT/STOP은 RUN 미포함→정지). 구 bare 값도 허용.
라이브 검증: C-6111 펌프 가동수 0→2 → 정상(normal) 판정 복구.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user