< Summary

Information
Class: OzonDomains.Models.SystemMonitoringSignal
Assembly: OzonDomains
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonDomains/Models/SystemAlertIncident.cs
Line coverage
100%
Covered lines: 6
Uncovered lines: 0
Coverable lines: 6
Total lines: 53
Line coverage: 100%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
get_Id()100%11100%
get_SourceKey()100%11100%
get_ScopeKey()100%11100%
get_Outcome()100%11100%
get_Message()100%11100%
get_OccurredAtUtc()100%11100%

File(s)

/home/runner/work/Studio2Prod/Studio2Prod/OzonDomains/Models/SystemAlertIncident.cs

#LineLine coverage
 1using System.ComponentModel.DataAnnotations;
 2using System.ComponentModel.DataAnnotations.Schema;
 3
 4namespace OzonDomains.Models;
 5
 6[Table("SystemAlertIncidents")]
 7public class SystemAlertIncident
 8{
 9    [Key] public long Id { get; set; }
 10    [Required, MaxLength(160)] public string Key { get; set; } = string.Empty;
 11    [Required, MaxLength(64)] public string Domain { get; set; } = string.Empty;
 12    [Required, MaxLength(16)] public string Severity { get; set; } = "warning";
 13    [Required, MaxLength(500)] public string Title { get; set; } = string.Empty;
 14    [MaxLength(1000)] public string? Details { get; set; }
 15    [MaxLength(2000)] public string? Url { get; set; }
 16    public DateTime FirstObservedAtUtc { get; set; }
 17    public DateTime LastObservedAtUtc { get; set; }
 18    public DateTime? ResolvedAtUtc { get; set; }
 19    /// <summary>Число смен состояния инцидента: открытие и изменения severity (не число проверок джоба).</summary>
 20    public int OccurrenceCount { get; set; }
 21
 22    /// <summary>Сколько заказов затронуто (полный счёт, в <see cref="OrdersJson"/> — первые N).</summary>
 23    public int OrderCount { get; set; }
 24
 25    /// <summary>Первые затронутые заказы: <c>[{"id":123,"reason":"..."}]</c>. Для вкладки алертов и восстановления инде
 26    public string? OrdersJson { get; set; }
 27    public bool IsActive { get; set; }
 28
 29    /// <summary>Момент подтверждения инцидента (debounce); null — инцидент ещё «на наблюдении» и пользователю не виден.
 30    public DateTime? ConfirmedAtUtc { get; set; }
 31
 32    /// <summary>Сколько проверок подряд проблема наблюдается.</summary>
 33    public int ConsecutiveObservations { get; set; }
 34
 35    /// <summary>Админ принял к сведению: инцидент не шумит до восстановления или повышения severity.</summary>
 36    public DateTime? AcknowledgedAtUtc { get; set; }
 37    [MaxLength(100)] public string? AcknowledgedBy { get; set; }
 38
 39    /// <summary>Инцидент заглушен до указанного момента, затем уведомление повторяется, если проблема осталась.</summar
 40    public DateTime? MutedUntilUtc { get; set; }
 41    [MaxLength(100)] public string? MutedBy { get; set; }
 42}
 43
 44[Table("SystemMonitoringSignals")]
 45public class SystemMonitoringSignal
 46{
 547    [Key] public long Id { get; set; }
 8848    [Required, MaxLength(100)] public string SourceKey { get; set; } = string.Empty;
 4549    [MaxLength(120)] public string? ScopeKey { get; set; }
 8350    [Required, MaxLength(16)] public string Outcome { get; set; } = string.Empty;
 2351    [MaxLength(500)] public string? Message { get; set; }
 6352    public DateTime OccurredAtUtc { get; set; } = DateTime.UtcNow;
 53}