feat(alarms): native condition Acknowledge routes to NativeAlarmAckRouter with principal [H6c]

This commit is contained in:
Joseph Doherty
2026-06-15 14:33:58 -04:00
parent be6858baa1
commit a6d9de091b
3 changed files with 184 additions and 1 deletions
@@ -0,0 +1,20 @@
namespace ZB.MOM.WW.OtOpcUa.OpcUaServer;
/// <summary>
/// H6c — the payload routed when an OPC UA client Acknowledges a NATIVE (driver-fed, e.g. Galaxy)
/// Part 9 condition. The scripted-alarm engine does not own native conditions, so the node manager
/// branches a native condition's inbound Acknowledge to a separate
/// <see cref="OtOpcUaNodeManager.NativeAlarmAckRouter"/> seam (the host later wires it to the backing
/// driver) instead of the scripted <see cref="OtOpcUaNodeManager.AlarmCommandRouter"/>.
/// <para>
/// This record is intentionally OpcUaServer-local (the smallest scope) and Akka-free: it carries
/// exactly what the driver-bound router needs — the condition node id to resolve back to a driver
/// ref, the operator's acknowledge comment, and the authenticated operator's display name.
/// </para>
/// </summary>
/// <param name="ConditionNodeId">The acknowledged condition's folder-scoped NodeId identifier string
/// (the same value the <c>DriverHostActor</c> inverse map keys native conditions by), used to resolve the
/// command back to its backing driver + alarm ref.</param>
/// <param name="Comment">The operator's acknowledge comment text, or <c>null</c> when none was supplied.</param>
/// <param name="OperatorUser">The authenticated operator's display name (empty when none resolves).</param>
public sealed record NativeAlarmAck(string ConditionNodeId, string? Comment, string OperatorUser);