improve:用户体验分级

This commit is contained in:
2025-07-26 16:08:22 +08:00
parent f33e617f44
commit 58c399dcbe
2 changed files with 38 additions and 97 deletions
+6 -79
View File
@@ -1744,11 +1744,11 @@ namespace Ink_Canvas.Helpers
}
/// <summary>
/// 根据优先级决定是否应该推送更新(仅适用于自动更新,不影响版本修复功能)
/// 根据优先级决定是否应该推送更新(仅适用于自动更新,版本修复功能不受影响
/// </summary>
/// <param name="updateVersion">更新版本号</param>
/// <param name="releaseTime">发布时间</param>
/// <param name="isAutoUpdate">是否为自动更新检查(默认true</param>
/// <param name="isAutoUpdate">是否为自动更新检查(默认truefalse表示版本修复</param>
/// <returns>是否应该推送更新</returns>
public static bool ShouldPushUpdate(string updateVersion, DateTime releaseTime, bool isAutoUpdate = true)
{
@@ -1757,11 +1757,11 @@ namespace Ink_Canvas.Helpers
// 判断更新类型(基于版本号)
var updateType = DetermineUpdateType(updateVersion);
// 如果不是自动更新(即手动检查或版本修复),则应用不同的策略
// 如果不是自动更新(即版本修复),则应用不同的策略
if (!isAutoUpdate)
{
// 手动更新检查或版本修复:立即允许,不受分级策略影响
LogHelper.WriteLogToFile($"DeviceIdentifier | 手动更新检查 - 版本: {updateVersion}, 类型: {updateType}, 结果: 允许");
// 版本修复:立即允许,不受分级策略影响
LogHelper.WriteLogToFile($"DeviceIdentifier | 版本修复 - 版本: {updateVersion}, 类型: {updateType}, 结果: 允许");
return true;
}
@@ -1842,7 +1842,7 @@ namespace Ink_Canvas.Helpers
}
/// <summary>
/// 综合时间和使用频率的自动更新推送判断逻辑(不影响手动更新和版本修复)
/// 综合时间和使用频率的自动更新推送判断逻辑(不影响版本修复)
/// </summary>
private static bool ShouldPushUpdateComprehensive(UpdatePriority priority, UsageFrequency frequency,
double daysSinceRelease, double daysSinceLastUse, UsageStats stats, UpdateType updateType)
@@ -1987,26 +1987,6 @@ namespace Ink_Canvas.Helpers
}
}
/// <summary>
/// 检查是否应该进行手动更新检查(不受分级策略影响)
/// </summary>
/// <param name="updateVersion">更新版本号</param>
/// <returns>是否应该允许手动更新</returns>
public static bool ShouldAllowManualUpdate(string updateVersion)
{
try
{
// 手动更新检查不受使用频率分级策略影响,始终允许
var updateType = DetermineUpdateType(updateVersion);
LogHelper.WriteLogToFile($"DeviceIdentifier | 手动更新检查 - 版本: {updateVersion}, 类型: {updateType}, 结果: 允许");
return true;
}
catch (Exception ex)
{
LogHelper.WriteLogToFile($"DeviceIdentifier | 手动更新检查失败: {ex.Message}", LogHelper.LogType.Error);
return true; // 出错时默认允许
}
}
/// <summary>
/// 获取设备信息摘要(用于调试)
@@ -2058,59 +2038,6 @@ namespace Ink_Canvas.Helpers
return descriptions.Count > 0 ? string.Join(", ", descriptions) : "普通用户";
}
/// <summary>
/// 模拟更新推送判断(用于测试)
/// </summary>
/// <param name="updateVersion">更新版本号</param>
/// <param name="releaseTime">发布时间</param>
/// <param name="isAutoUpdate">是否为自动更新(默认true</param>
/// <returns>推送判断详情</returns>
public static string SimulateUpdatePushDecision(string updateVersion, DateTime releaseTime, bool isAutoUpdate = true)
{
try
{
var updateType = DetermineUpdateType(updateVersion);
var shouldPush = ShouldPushUpdate(updateVersion, releaseTime, isAutoUpdate);
var result = $"更新推送判断详情:\n" +
$"版本号: {updateVersion}\n" +
$"更新类型: {updateType}\n" +
$"发布时间: {releaseTime:yyyy-MM-dd HH:mm}\n" +
$"更新方式: {(isAutoUpdate ? "" : "/")}\n";
if (isAutoUpdate)
{
// 只有自动更新才显示分级策略相关信息
var priority = GetUpdatePriority();
var frequency = GetUsageFrequency();
var stats = LoadUsageStats();
var daysSinceRelease = (DateTime.Now - releaseTime).TotalDays;
var daysSinceLastUse = (DateTime.Now - stats.LastLaunchTime).TotalDays;
var urgencyMultiplier = GetUpdateUrgencyMultiplier(updateType);
result += $"发布天数: {daysSinceRelease:F1}天\n" +
$"最后使用: {daysSinceLastUse:F1}天前\n" +
$"使用频率: {frequency}\n" +
$"更新优先级: {priority}\n" +
$"紧急程度倍数: {urgencyMultiplier:F1}x\n" +
$"用户类型: {GetUserTypeDescription(stats)}\n";
}
else
{
result += "分级策略: 不适用(手动更新/版本修复始终允许)\n";
}
result += $"推送决定: {(shouldPush ? "" : "")}";
return result;
}
catch (Exception ex)
{
LogHelper.WriteLogToFile($"DeviceIdentifier | 模拟更新推送判断失败: {ex.Message}", LogHelper.LogType.Error);
return "模拟判断失败";
}
}
/// <summary>
/// 数据自检和修复
/// </summary>