< Summary

Information
Class: OzonDomains.Models.SystemAlertIncident
Assembly: OzonDomains
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonDomains/Models/SystemAlertIncident.cs
Line coverage
100%
Covered lines: 20
Uncovered lines: 0
Coverable lines: 20
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_Key()100%11100%
get_Domain()100%11100%
get_Severity()100%11100%
get_Title()100%11100%
get_Details()100%11100%
get_Url()100%11100%
get_FirstObservedAtUtc()100%11100%
get_LastObservedAtUtc()100%11100%
get_ResolvedAtUtc()100%11100%
get_OccurrenceCount()100%11100%
get_OrderCount()100%11100%
get_OrdersJson()100%11100%
get_IsActive()100%11100%
get_ConfirmedAtUtc()100%11100%
get_ConsecutiveObservations()100%11100%
get_AcknowledgedAtUtc()100%11100%
get_AcknowledgedBy()100%11100%
get_MutedUntilUtc()100%11100%
get_MutedBy()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{
 79    [Key] public long Id { get; set; }
 10010    [Required, MaxLength(160)] public string Key { get; set; } = string.Empty;
 7711    [Required, MaxLength(64)] public string Domain { get; set; } = string.Empty;
 8812    [Required, MaxLength(16)] public string Severity { get; set; } = "warning";
 7613    [Required, MaxLength(500)] public string Title { get; set; } = string.Empty;
 3714    [MaxLength(1000)] public string? Details { get; set; }
 4015    [MaxLength(2000)] public string? Url { get; set; }
 2716    public DateTime FirstObservedAtUtc { get; set; }
 4117    public DateTime LastObservedAtUtc { get; set; }
 418    public DateTime? ResolvedAtUtc { get; set; }
 19    /// <summary>Число смен состояния инцидента: открытие и изменения severity (не число проверок джоба).</summary>
 3420    public int OccurrenceCount { get; set; }
 21
 22    /// <summary>Сколько заказов затронуто (полный счёт, в <see cref="OrdersJson"/> — первые N).</summary>
 3823    public int OrderCount { get; set; }
 24
 25    /// <summary>Первые затронутые заказы: <c>[{"id":123,"reason":"..."}]</c>. Для вкладки алертов и восстановления инде
 3626    public string? OrdersJson { get; set; }
 3727    public bool IsActive { get; set; }
 28
 29    /// <summary>Момент подтверждения инцидента (debounce); null — инцидент ещё «на наблюдении» и пользователю не виден.
 6230    public DateTime? ConfirmedAtUtc { get; set; }
 31
 32    /// <summary>Сколько проверок подряд проблема наблюдается.</summary>
 5833    public int ConsecutiveObservations { get; set; }
 34
 35    /// <summary>Админ принял к сведению: инцидент не шумит до восстановления или повышения severity.</summary>
 2436    public DateTime? AcknowledgedAtUtc { get; set; }
 1237    [MaxLength(100)] public string? AcknowledgedBy { get; set; }
 38
 39    /// <summary>Инцидент заглушен до указанного момента, затем уведомление повторяется, если проблема осталась.</summar
 3640    public DateTime? MutedUntilUtc { get; set; }
 1041    [MaxLength(100)] public string? MutedBy { get; set; }
 42}
 43
 44[Table("SystemMonitoringSignals")]
 45public class SystemMonitoringSignal
 46{
 47    [Key] public long Id { get; set; }
 48    [Required, MaxLength(100)] public string SourceKey { get; set; } = string.Empty;
 49    [MaxLength(120)] public string? ScopeKey { get; set; }
 50    [Required, MaxLength(16)] public string Outcome { get; set; } = string.Empty;
 51    [MaxLength(500)] public string? Message { get; set; }
 52    public DateTime OccurredAtUtc { get; set; } = DateTime.UtcNow;
 53}