// 桌面与会话领域模型 // // 产品流程:登录 -> 桌面列表 -> 选择桌面 -> 获取连接票据 -> 启动 Moonlight 会话 // // 协议统一 Moonlight(RDP 渲染路径已移除,内嵌 RDP 代码保留在 git 历史作网关备用)。 // 当前阶段由本地 DesktopService 提供演示数据;后续接入管理平台后, // 由 API 适配器返回同样的模型,页面与状态机不感知数据来源。 #ifndef KIOSK_SHELL_DESKTOP_SESSION_H #define KIOSK_SHELL_DESKTOP_SESSION_H #include #include namespace vdi { // 桌面卡片的运行状态 enum class DesktopState { kAvailable, // 可连接 kPending, // 任务进行中(开机/重置等) kUnassigned, // 尚未配置连接地址,暂不可连接 }; struct DesktopInfo { QString id; QString name; // 显示名,如 "Windows 10" QString os; // 操作系统描述 DesktopState state = DesktopState::kUnassigned; // 连接参数(kUnassigned 时为空) QString endpoint; // 主机地址(IP / 域名 / VPN 隧道地址) QString app; // Sunshine 应用名 int width = 1920; int height = 1080; int fps = 60; }; // 一次会话的连接凭据;当前为本地构造,后续由平台 connect-ticket 接口下发 struct ConnectionTicket { QString desktopId; QString endpoint; QString app; int width = 1920; int height = 1080; int fps = 60; }; struct AuthResult { bool ok = false; QString message; QString displayName; // 登录用户显示名 }; } // namespace vdi #endif // KIOSK_SHELL_DESKTOP_SESSION_H