namespace LanMountainDesktop.Shared.Contracts.Launcher;
///
/// 加载项类型
///
public enum LoadingItemType
{
///
/// 系统初始化
///
System,
///
/// 设置加载
///
Settings,
///
/// 插件
///
Plugin,
///
/// 组件
///
Component,
///
/// 资源
///
Resource,
///
/// 数据
///
Data,
///
/// 网络请求
///
Network,
///
/// 其他
///
Other
}
///
/// 加载状态
///
public enum LoadingState
{
///
/// 等待中
///
Pending,
///
/// 进行中
///
InProgress,
///
/// 已完成
///
Completed,
///
/// 失败
///
Failed,
///
/// 已取消
///
Cancelled,
///
/// 超时
///
Timeout
}
///
/// 加载项信息
///
public record LoadingItem
{
///
/// 加载项唯一标识
///
public required string Id { get; init; }
///
/// 加载项类型
///
public LoadingItemType Type { get; init; }
///
/// 加载项名称
///
public required string Name { get; init; }
///
/// 加载项描述
///
public string? Description { get; init; }
///
/// 当前状态
///
public LoadingState State { get; init; }
///
/// 进度百分比 (0-100)
///
public int ProgressPercent { get; init; }
///
/// 状态消息
///
public string? Message { get; init; }
///
/// 错误信息(当 State 为 Failed 时)
///
public string? ErrorMessage { get; init; }
///
/// 开始时间
///
public DateTimeOffset? StartTime { get; init; }
///
/// 结束时间
///
public DateTimeOffset? EndTime { get; init; }
///
/// 预计剩余时间(秒)
///
public int? EstimatedRemainingSeconds { get; init; }
///
/// 子加载项
///
public List? Children { get; init; }
///
/// 额外数据
///
public Dictionary? Metadata { get; init; }
///
/// 时间戳
///
public DateTimeOffset Timestamp { get; init; } = DateTimeOffset.UtcNow;
}
///
/// 加载状态更新消息
///
public record LoadingStateMessage
{
///
/// 当前启动阶段
///
public StartupStage Stage { get; init; }
///
/// 整体进度百分比 (0-100)
///
public int OverallProgressPercent { get; init; }
///
/// 当前活动的加载项
///
public List ActiveItems { get; init; } = new();
///
/// 已完成的加载项数量
///
public int CompletedCount { get; init; }
///
/// 总加载项数量
///
public int TotalCount { get; init; }
///
/// 状态消息
///
public string? Message { get; init; }
///
/// 是否有错误
///
public bool HasErrors { get; init; }
///
/// 错误消息列表
///
public List? ErrorMessages { get; init; }
///
/// 时间戳
///
public DateTimeOffset Timestamp { get; init; } = DateTimeOffset.UtcNow;
}
///
/// 详细的加载进度消息(用于实时更新)
///
public record DetailedProgressMessage : StartupProgressMessage
{
///
/// 当前加载项
///
public LoadingItem? CurrentItem { get; init; }
///
/// 所有加载项
///
public List? AllItems { get; init; }
///
/// 是否为主要更新
///
public bool IsMajorUpdate { get; init; }
}