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:
@@ -109,6 +109,8 @@ public class RevisionHashService
|
||||
ConditionFilter = n.ConditionFilter,
|
||||
ConnectionName = n.ConnectionName,
|
||||
IsLocked = n.IsLocked,
|
||||
// true-only (null when false) so existing revision hashes are unchanged.
|
||||
IsMesReportable = n.IsMesReportable ? true : null,
|
||||
SourceReference = n.SourceReference
|
||||
})
|
||||
.ToList()
|
||||
@@ -296,6 +298,11 @@ public class RevisionHashService
|
||||
/// </summary>
|
||||
public bool IsLocked { get; init; }
|
||||
/// <summary>
|
||||
/// MES-reportable binding flag; null when false (the serializer drops nulls), so
|
||||
/// pre-existing configurations hash identically.
|
||||
/// </summary>
|
||||
public bool? IsMesReportable { get; init; }
|
||||
/// <summary>
|
||||
/// The source reference (OPC UA SourceNode/notifier nodeId, or MxAccess object/area).
|
||||
/// </summary>
|
||||
public string SourceReference { get; init; } = string.Empty;
|
||||
|
||||
Reference in New Issue
Block a user