docs(phase6): AdminUI editors, pickers, deletes, new-script

This commit is contained in:
Joseph Doherty
2026-06-16 17:08:08 -04:00
parent 68f9eef62d
commit cbaf1c39ce
4 changed files with 193 additions and 18 deletions
+19 -7
View File
@@ -136,12 +136,31 @@ blob and is parsed byte-parity in both the compose (`Phase7Composer`) and deploy
|---|---|---|
| `alarmType` | `"AlarmCondition"`, `"OffNormalAlarm"`, `"DiscreteAlarm"`, `"LimitAlarm"` | `"AlarmCondition"` |
| `severity` | OPC UA 11000 scale | `500` |
| `historizeToAveva` | `true` / `false` / absent | absent (historize) |
An unknown `alarmType` string falls back to the base `AlarmCondition` OPC UA
ObjectType. `severity` seeds the condition's initial severity at materialisation;
the driver's live alarm events may carry a different severity that overrides it at
runtime.
**`historizeToAveva`** is a `bool?` opt-out for the AVEVA Historian durable write.
Set it to `false` to suppress writing this alarm's transitions to AVEVA Historian;
absent or `true` historizes as usual. The live `/alerts` feed and OPC UA condition
events are always unaffected regardless of this flag. The field is gated in
`HistorianAdapterActor` with `is not false` semantics — a missing field (e.g. from
an older config) defaults to historizing rather than silently dropping an audit row
during a rolling restart.
On the Tag modal, the **"Historize to AVEVA"** checkbox (in the alarm section)
controls this field. The **Galaxy address picker** pre-fills a default `alarm`
object (`{"alarmType":"OffNormalAlarm","severity":700}`) when it detects that the
selected attribute is itself an alarm (`IsAlarm == true`); the pre-fill never
overwrites an already-authored alarm section.
> **Distinct from tag-value historization.** `alarm.historizeToAveva` controls
> alarm-transition AVEVA writes only. Tag-value history is controlled by the
> top-level `isHistorized` field (see [Historian.md](Historian.md)).
#### Severity mapping
The authored `severity` (11000) seeds the OPC UA condition node at materialisation
@@ -211,13 +230,6 @@ for the full routing diagram.
backing a native alarm has no enable/disable surface distinct from OPC UA; the
Part 9 enable/disable concept maps to the scripted-alarm engine only.
One item remains explicitly out of scope:
1. **AdminUI Galaxy address-picker pre-fill**: the `alarm` object must be authored
by editing the tag's raw `TagConfig` JSON today; a future picker enhancement
could pre-fill `alarmType` / `severity` from driver discovery
(`DriverAttributeInfo.IsAlarm`).
## Inbound operator ack/shelve
Operators interact with active scripted alarms through two surfaces — both converge on the same `alarm-commands` DPS topic consumed by `ScriptedAlarmHostActor`.