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;
}