namespace ZB.MOM.WW.OtOpcUa.Commons.Messages.Alerts;
///
/// Live alarm transition published on the cluster alerts DistributedPubSub topic.
/// Emitted by ScriptedAlarmActor (and future native-alarm bridges) when an alarm condition
/// transitions; consumed by AlertSignalRBridge for browser fan-out and by historian
/// adapters for durable storage.
///
/// Stable condition identity (matches ScriptedAlarm.ScriptedAlarmId for scripted alarms).
/// UNS path of the Equipment node the alarm hangs under. Doubles as the SourceNode.
/// Operator-visible alarm name.
/// Activated / Cleared / Acknowledged / Confirmed / Shelved / Unshelved / Disabled / Enabled / CommentAdded.
/// 1–1000 numeric severity (OPC UA convention).
/// Fully-rendered message text — template tokens already resolved.
/// Operator who triggered the transition. "system" for engine-driven events.
/// When the transition occurred.
/// OPC UA Part 9 condition subtype name — one of LimitAlarm / DiscreteAlarm / OffNormalAlarm / AlarmCondition (the base type, used as the default). The historian feed maps this onto the durable alarm-type column.
/// Operator-supplied comment on ack / confirm / comment transitions; null for engine-driven transitions (Activated / Cleared / Shelved / …) that carry no comment.
public sealed record AlarmTransitionEvent(
string AlarmId,
string EquipmentPath,
string AlarmName,
string TransitionKind,
int Severity,
string Message,
string User,
DateTime TimestampUtc,
string AlarmTypeName = "AlarmCondition",
string? Comment = null);