feat(streaming): carry IsMesReportable on AlarmStateUpdate (25) and DebugAlarmStateDto (20) (ScadaBridge#60)

Central's Debug View live stream and Alarm Summary cache always saw false
because neither wire message had the field. Additive proto fields, vendored
C# regenerated with docker/regen-proto.sh (sitestream + sitecommand), mapped
both ways in StreamRelayActor/SiteStreamGrpcClient and SiteCommandDtoMapper.
The live stream publishes Alarm Actor events, which never carried the flag,
so InstanceActor.HandleAlarmStateChanged now stamps it before retaining and
publishing. A pre-#60 site sends the proto3 default. No UI badge yet.

Claude-Session: https://claude.ai/code/session_01GT67AEHd2Acv1YPwGfXEoV
This commit is contained in:
Joseph Doherty
2026-11-09 12:31:37 -05:00
parent 6bd1fd3072
commit 5310fd0e26
14 changed files with 489 additions and 294 deletions
@@ -1941,7 +1941,8 @@ public static class SiteCommandDtoMapper
CurrentValue = alarm.CurrentValue,
LimitValue = alarm.LimitValue,
NativeSourceCanonicalName = alarm.NativeSourceCanonicalName,
IsConfiguredPlaceholder = alarm.IsConfiguredPlaceholder
IsConfiguredPlaceholder = alarm.IsConfiguredPlaceholder,
IsMesReportable = alarm.IsMesReportable
};
if (alarm.Condition != AlarmConditionStateFactory.ForComputed(alarm.State, alarm.Priority))
@@ -1983,7 +1984,8 @@ public static class SiteCommandDtoMapper
CurrentValue = dto.CurrentValue,
LimitValue = dto.LimitValue,
NativeSourceCanonicalName = dto.NativeSourceCanonicalName,
IsConfiguredPlaceholder = dto.IsConfiguredPlaceholder
IsConfiguredPlaceholder = dto.IsConfiguredPlaceholder,
IsMesReportable = dto.IsMesReportable
};
return dto.Condition is null ? alarm : alarm with { Condition = FromProto(dto.Condition) };