feat: 引入 CloudSync 核心能力并新增 Avalonia 桌面端与发布脚本
- 后端:新增 CloudSync 认证/权限/端点/服务与 DTO - 数据:新增用户/会话/安全策略实体与 EF Core migrations - 前端:新增云同步设置 UI、客户端与本地存储;Vite 支持 maui 构建输出到 wwwroot - 桌面端:新增 Avalonia 项目、内置 WebServer、托盘与 Windows 全局热键 - 发布/构建:新增 Windows/Linux 发布脚本与统一入口;调整 MAUI 资源与安装包配置 - 文档:同步更新 README/docs 与协作规则
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
namespace Hua.Todo.Core.Entities;
|
||||
|
||||
/// <summary>
|
||||
/// 安全策略配置(服务端下发)。
|
||||
/// </summary>
|
||||
public class SecurityPolicyEntity
|
||||
{
|
||||
/// <summary>
|
||||
/// 策略唯一标识符。
|
||||
/// </summary>
|
||||
public Guid Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 策略所属用户 ID。
|
||||
/// </summary>
|
||||
public Guid UserId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 策略所属用户导航属性。
|
||||
/// </summary>
|
||||
public UserEntity? User { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否允许客户端落盘(为 false 时客户端应进入“内存模式”,不产生本地持久化)。
|
||||
/// </summary>
|
||||
public bool AllowPersist { get; set; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// 是否允许执行同步写入(为 false 时应视为“禁止同步”)。
|
||||
/// </summary>
|
||||
public bool AllowSync { get; set; } = true;
|
||||
}
|
||||
@@ -5,6 +5,17 @@ namespace Hua.Todo.Core.Entities;
|
||||
/// </summary>
|
||||
public class TaskEntity
|
||||
{
|
||||
/// <summary>
|
||||
/// 任务所属用户 ID。
|
||||
/// 本地模式下使用固定的“本地用户”ID,以确保本地任务与云端多用户任务隔离。
|
||||
/// </summary>
|
||||
public Guid UserId { get; set; } = TodoUserIds.LocalUserId;
|
||||
|
||||
/// <summary>
|
||||
/// 任务所属用户导航属性。
|
||||
/// </summary>
|
||||
public UserEntity? User { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 任务唯一标识符
|
||||
/// </summary>
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
namespace Hua.Todo.Core.Entities;
|
||||
|
||||
/// <summary>
|
||||
/// 系统内置用户 ID 常量。
|
||||
/// </summary>
|
||||
public static class TodoUserIds
|
||||
{
|
||||
/// <summary>
|
||||
/// 本地模式专用的内置用户 ID。
|
||||
/// </summary>
|
||||
public static readonly Guid LocalUserId = Guid.Parse("00000000-0000-0000-0000-000000000001");
|
||||
}
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
namespace Hua.Todo.Core.Entities;
|
||||
|
||||
/// <summary>
|
||||
/// 用户实体,用于云同步场景下的用户隔离与权限控制。
|
||||
/// </summary>
|
||||
public class UserEntity
|
||||
{
|
||||
/// <summary>
|
||||
/// 用户唯一标识符。
|
||||
/// </summary>
|
||||
public Guid Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 登录用户名(全局唯一)。
|
||||
/// </summary>
|
||||
public string UserName { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 登录密码哈希(不存储明文)。
|
||||
/// </summary>
|
||||
public string PasswordHash { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 用户角色(用于 RBAC 权限映射)。
|
||||
/// </summary>
|
||||
public string Role { get; set; } = "user";
|
||||
|
||||
/// <summary>
|
||||
/// 用户任务集合。
|
||||
/// </summary>
|
||||
public List<TaskEntity> Tasks { get; set; } = new();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
namespace Hua.Todo.Core.Entities;
|
||||
|
||||
/// <summary>
|
||||
/// 用户会话实体(服务端会话令牌)。
|
||||
/// </summary>
|
||||
public class UserSessionEntity
|
||||
{
|
||||
/// <summary>
|
||||
/// 会话唯一标识符,同时作为 Bearer Token 值使用。
|
||||
/// </summary>
|
||||
public Guid Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 会话所属用户 ID。
|
||||
/// </summary>
|
||||
public Guid UserId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 会话所属用户导航属性。
|
||||
/// </summary>
|
||||
public UserEntity? User { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 会话创建时间(UTC)。
|
||||
/// </summary>
|
||||
public DateTime CreatedAtUtc { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 会话过期时间(UTC)。
|
||||
/// </summary>
|
||||
public DateTime ExpiresAtUtc { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 二次认证(step-up)有效期截止(UTC);为空表示未进行二次认证。
|
||||
/// </summary>
|
||||
public DateTime? StepUpExpiresAtUtc { get; set; }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user