feat: add fnOS packaging, storage workflows and release pipeline

This commit is contained in:
2026-08-11 18:05:49 +08:00
parent c5922f9b08
commit 95932f0199
181 changed files with 24024 additions and 1164 deletions
+54 -1
View File
@@ -1,4 +1,5 @@
using SqlSugar;
using dy.net.model.dto;
using SqlSugar;
namespace dy.net.model.entity
{
@@ -72,5 +73,57 @@ namespace dy.net.model.entity
[SugarColumn(IsNullable = true, Length = 100)]
public string DouyinNo { get; set; }
/// <summary>
/// 直播状态监测独立开关,不影响作品同步开关。
/// </summary>
public bool LiveMonitorEnabled { get; set; }
public DouyinLiveStatusState LiveStatus { get; set; }
[SugarColumn(IsNullable = true, Length = 100)]
public string LiveRoomId { get; set; }
[SugarColumn(IsNullable = true, Length = 100)]
public string LiveWebRid { get; set; }
[SugarColumn(IsNullable = true, Length = 500)]
public string LiveTitle { get; set; }
[SugarColumn(IsNullable = true)]
public DateTime? LiveCheckedAt { get; set; }
[SugarColumn(IsNullable = true)]
public DateTime? LiveStatusUpdatedAt { get; set; }
[SugarColumn(IsNullable = true)]
public DateTime? LiveStartedAt { get; set; }
[SugarColumn(IsNullable = true, Length = 1000)]
public string LiveCheckError { get; set; }
public bool LiveEmailNotificationEnabled { get; set; }
[SugarColumn(IsNullable = true, Length = 200)]
public string LastLiveNotificationKey { get; set; }
[SugarColumn(IsNullable = true)]
public DateTime? LastLiveNotificationAttemptAt { get; set; }
[SugarColumn(IsNullable = true)]
public DateTime? LastLiveNotifiedAt { get; set; }
[SugarColumn(IsNullable = true, Length = 1000)]
public string LastLiveNotificationError { get; set; }
[SugarColumn(IsIgnore = true)]
public bool LiveStatusStale => LiveMonitorEnabled &&
(!LiveStatusUpdatedAt.HasValue || DateTime.Now - LiveStatusUpdatedAt.Value > TimeSpan.FromMinutes(10) ||
!string.IsNullOrWhiteSpace(LiveCheckError));
[SugarColumn(IsIgnore = true)]
public string LiveRoomUrl => LiveStatus == DouyinLiveStatusState.Live && !string.IsNullOrWhiteSpace(LiveWebRid)
? "https://live.douyin.com/" + Uri.EscapeDataString(LiveWebRid)
: null;
}
}