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
+6 -4
View File
@@ -333,7 +333,7 @@ Bind a native alarm source to a template — a read-only mirror of an OPC UA Ala
Conditions server's or the MxAccess Gateway's alarms (no ack-back).
```sh
scadabridge --url <url> template native-alarm-source add --template-id <int> --name <string> --connection <string> --source-ref <string> [--filter <string>] [--description <string>] [--locked]
scadabridge --url <url> template native-alarm-source add --template-id <int> --name <string> --connection <string> --source-ref <string> [--filter <string>] [--description <string>] [--locked] [--mes-reportable]
```
| Option | Required | Description |
@@ -345,6 +345,7 @@ scadabridge --url <url> template native-alarm-source add --template-id <int> --n
| `--filter` | no | Condition filter (omit to mirror all conditions under the source) |
| `--description` | no | Description |
| `--locked` | no | Lock the binding in derived templates |
| `--mes-reportable` | no | Every condition under this binding is MES-reportable (additive to the 900-999 severity band) |
#### `template native-alarm-source list`
@@ -359,10 +360,10 @@ scadabridge --url <url> template native-alarm-source list --template-id <int>
Replace the fields of an existing native alarm source binding.
```sh
scadabridge template native-alarm-source update --id <source-id> --name <name> --connection <name> --source-ref <reference> [--filter <expression>] [--description <text>] [--locked]
scadabridge template native-alarm-source update --id <source-id> --name <name> --connection <name> --source-ref <reference> [--filter <expression>] [--description <text>] [--locked] [--mes-reportable]
```
The ID, name, connection, and source reference are required. Omitted filter and description clear those values; omitted `--locked` means unlocked. Requires Designer access; the server enforces locking rules.
The ID, name, connection, and source reference are required. Omitted filter and description clear those values; omitted `--locked` means unlocked and omitted `--mes-reportable` means not MES-reportable. Requires Designer access; the server enforces locking rules.
#### `template native-alarm-source remove`
@@ -621,7 +622,7 @@ Override an inherited native alarm source binding for a single instance (upsert)
options keep the inherited value.
```sh
scadabridge --url <url> instance native-alarm-source set --instance-id <int> --source <string> [--connection <string>] [--source-ref <string>] [--filter <string>]
scadabridge --url <url> instance native-alarm-source set --instance-id <int> --source <string> [--connection <string>] [--source-ref <string>] [--filter <string>] [--mes-reportable <true|false>]
```
| Option | Required | Description |
@@ -631,6 +632,7 @@ scadabridge --url <url> instance native-alarm-source set --instance-id <int> --s
| `--connection` | no | Connection name override (blank = inherited) |
| `--source-ref` | no | Source reference override (blank = inherited) |
| `--filter` | no | Condition filter override (blank = inherited) |
| `--mes-reportable` | no | MES-reportable override for the binding: `true` or `false` (omit = inherited) |
#### `instance native-alarm-source clear`