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