namespace ZB.MOM.WW.MxGateway.Server.Galaxy; /// /// One alarm-bearing attribute discovered by /// : an attribute whose owning /// object configures an AlarmExtension primitive (the same /// is_alarm detection used by ). /// Used to build the subtag-fallback watch-list. /// public sealed class GalaxyAlarmAttributeRow { /// /// Gets the alarm-bearing attribute reference (e.g. Tank01.Level.HiHi), /// matching the full_tag_reference projection of /// . /// public string FullTagReference { get; init; } = string.Empty; /// /// Gets the owning object reference (e.g. Tank01). This is the Galaxy /// tag_name — the segment that precedes the first attribute dot in /// . /// public string SourceObjectReference { get; init; } = string.Empty; /// /// Gets the owning object's Galaxy area (e.g. TestArea) — the alarm group. /// /// Resolved via gobject.area_gobject_id in AlarmAttributesSql. The /// watch-list resolver composes the canonical Galaxy!{area}.{reference} from /// this so the synthesized reference's group matches the native alarmmgr (wnwrap) /// for reference parity. May be when the object has no /// area; the resolver then falls back to the configured area. /// /// public string Area { get; init; } = string.Empty; /// /// Gets the writable ack-comment attribute address. /// /// The Galaxy Repository schema does not expose an ack-comment subtag address /// directly, so this is always here. The watch-list /// resolver (a later task) composes the concrete address from configuration plus /// / . /// /// public string AckCommentSubtag { get; init; } = string.Empty; }