feat(native-alarms): per-binding IsMesReportable on native alarm source bindings (ScadaBridge#59)

TemplateNativeAlarmSource.IsMesReportable + tri-state InstanceNativeAlarmSourceOverride
.IsMesReportableOverride flatten onto ResolvedNativeAlarmSource; NativeAlarmActor stamps every
mirrored condition and InstanceActor the quiet-binding placeholder, so ScriptAlarm,
Alarms.MesReportableAsync() and the #60 wire fields carry it. Additive to the 900-999 severity band.
Migration AddNativeAlarmSourceMesReportable. Management commands, CLI --mes-reportable, Central UI
(template dialog checkbox, instance override select), Transport DTOs/importer/diff and the revision
hash (true-only, so existing hashes are unchanged) carry it.

Claude-Session: https://claude.ai/code/session_01GT67AEHd2Acv1YPwGfXEoV
This commit is contained in:
Joseph Doherty
2026-11-09 15:09:54 -05:00
parent 69a2017000
commit f98369a786
38 changed files with 2579 additions and 43 deletions
@@ -87,6 +87,17 @@ Consequences, stated plainly:
binding is reportable"), or (b) a new per-condition config entity — the first of its kind. Neither
is designed here.
**Update (Gitea #59, 2026-11-09): option (a) is built.** `TemplateNativeAlarmSource.IsMesReportable`
(bool, default false) plus a tri-state `InstanceNativeAlarmSourceOverride.IsMesReportableOverride`
(null inherits) mean "every condition mirrored under this binding is MES-reportable". It flattens onto
`ResolvedNativeAlarmSource.IsMesReportable`, `NativeAlarmActor` stamps it on every condition it emits
and `InstanceActor` stamps it on the quiet-binding placeholder rows, so `ScriptAlarm.IsMesReportable`
/ `Alarms.MesReportableAsync()` and the wire fields from #60 carry it. It is **additive** to the
900-999 severity band, which still flags a condition on its own (an inbound-API method ORs the two).
Migration `AddNativeAlarmSourceMesReportable`; CLI `--mes-reportable` on
`template native-alarm-source add|update` and `instance native-alarm-source set`; Transport carries
both fields. Per-condition flags (option b) remain unbuilt.
### 2.4 Central visibility is a follow-up
The Alarm Summary / Debug View rows are `AlarmStateChanged` values that arrive over gRPC. Showing a