vdi-cloud/docs/cloud-feature-progress-20261110.md

19 KiB
Raw Blame History

云管功能核对与本轮实现(2026-11-10)

依据《VDI云桌面软件开发方案(1)》第 4、5 章、《VDI云桌面完整方案-云管端》第 3、4 章,以及 控制台功能设计。以下区分代码实现、测试环境验证和真实现场验收。

功能核对

模块 当前实现 仍缺少的内容
登录与授权 管理员登录、退出、三角色后端校验;账号新增、改名、角色、启停、他人密码重置、本人改密与会话撤销;用户与终端、多桌面绑定;账号/IP 登录限流 AD/LDAP、自助找回、密码到期、多因素认证;无永久删除账号入口
资源与已有桌面 PVE 节点/VM 同步、纳管、电源任务;最多 50 台批量开机/正常关机/重启、逐台预检与批次结果;网页接入配置、关机规格变更与磁盘扩容任务;现场三台桌面已接通 多集群、备份/迁移与完整生命周期;现场规格写入缺权限,批量电源真实执行未验收
快照与手动还原 真实列表、关机创建/删除/还原、预检/确认、异步任务、幂等与只读核对;还原撤销票据并要求重新确认初始化 公共池自动退出还原;现场缺快照权限,VM100 不支持快照;真实写入和磁盘内容恢复待专用 VM 验收
镜像模板(本轮) 发现、登记、版本、系统标记、配置验证、启停;拒绝普通 VM、锁定和直通模板 制作模板、镜像发布流水线、连接服务自动探测
克隆发放(本轮) 同节点完整/链接克隆、存储与权限预检、异步 UPID、幂等提交、失败与未知结果区分、已知 UPID 重新核对 跨节点调度、创建向导直接指定规格、自动初始化与配对、批量发放;现场真实克隆未验收
桌面连接(本轮) 管理员修改端点和分辨率/FPS;新克隆默认禁止连接,确认初始化后放行;活动会话时禁止更改 VM 内自动初始化、自动探测 Sunshine、自动配对
桌面池(本轮) 专属/公共类型、容量、默认模板、启停、成员、已授权和活动数量、创建预留 自动领取、用户与池的授权规则、退出还原、自动回收、扩容调度、池删除
终端与会话 设备登记、注册、心跳、名称/分组修改、停用/重新激活与旧令牌撤销;授权列表、票据、串流状态、重启/会话重置/诊断日志回执;运维策略模板、按设备/分组下发与应用回执;90 天会话历史与名称快照 Wi-Fi、USB、应用与显示策略;重新激活需管理员更新设备身份配置
桌面使用者 新增、姓名编辑、启停、更换/解除关联终端、多桌面授权、批量追加/撤销、CSV 用户与授权导入、未消费票据作废 用户目录集成、用户自主登录模式
GPU 已部署真实节点 PCI 显卡清单、IOMMU 分组、当前/待应用配置引用与纳管关系;直通配置由现场手工维护 实际驱动/运行占用、独占锁与绑定/解绑、健康指标和 GPU broker;配置引用不表示可分配
监控告警 节点历史曲线、CPU/内存/存储与节点异常/终端离线规则、控制台告警确认及自动恢复;终端 CPU/内存/SoC 温度/运行时长、历史曲线和 30 天留存;缺失值保持空 VictoriaMetrics、外部通知、终端系统指标告警、完整串流 FPS/RTT 采集
OTA 尚无发布闭环 包签名、适配机型、灰度批次、暂停/恢复、Agent 安装、A/B 回滚
批量与交付 本机 Docker/真实 PostgreSQL、用户/终端/授权 CSV 预检及整批导入、操作审计与任务记录 独立服务器、MQTT/Rust Agent、七服务独立部署、备份恢复演练、离线交付

画质/延迟、上网代理、软件白名单和品牌兜底画面继续按原有计划单独处理。

使用路径

控制台地址仍为 http://127.0.0.1:5182,使用原管理员账号。新增「镜像模板」「桌面池」,桌面管理新增「从模板创建」及详情中的「配置连接」。

用户已确认复用现有 Windows 镜像作为母盘。11-10 再次只读核实:VM100 win10-test 正在运行,PVE 标记 template=0;系统盘为 local-lvm:base-100-disk-0,size=60G,配置包含 GTX 965M 的 hostpci0 及相关 args。磁盘名称带 base- 不等于该 VM 已是平台可登记的专用模板。无需重新安装 Windows,后续以该母盘准备独立模板副本,核查副本的系统身份、账号和 Sunshine 配对,移除或重新安排物理显卡绑定;原 VM100 不在本次核查中转换或修改。现有平台 Token 的克隆权限和存储预检限制仍需解决。

  1. 在 PVE 准备专用模板,不要将正在使用的 VM100/101/102 直接转换为模板。
  2. 在「镜像模板」发现并登记名称、版本和系统。登记检查模板标志、锁、磁盘容量、直通设备和宿主脚本;模板变动后重新验证。
  3. 在「桌面池」设置容量及可选默认模板,通过「成员」加入已有桌面。成员变更不自动增删用户授权。
  4. 创建向导填写名称、VMID、完整/链接克隆和存储,可选加入池。先预检,再提交任务。硬件继承模板,目标固定为源节点。
  5. 到「任务与审计」查看最终结果。成功只表示 VM 克隆并纳管,不表示 Sunshine 或串流可用。
  6. 完成操作系统身份、网络、Sunshine 和终端配对,再保存连接地址及显示参数,确认初始化;随后单独授权用户。

公共池目前采用管理员分配/回收,没有自动领取或退出还原。停用池阻止新建,不会中断池内桌面或撤销已有授权。

执行边界

  • 池成员、创建预留、容量编辑使用同一个事务锁,成员加预留不得超额;非空池不能切换类型。
  • 完整克隆按虚拟磁盘容量(含 EFI/TPM)加 1 GiB 余量检查目标存储,较稀疏占用更保守;链接克隆沿用模板存储并检查余量。PVE 最终校验权限和资源。
  • 源 VM 需 VM.Clone,目标需 VM.Allocate,所用存储需 Datastore.AllocateSpace;网络还需现场对应桥/SDN 权限。平台不会自行提权。
  • 网络异常、进程中断或 PVE 任务失败可能留下目标资源,平台不重发克隆、不自动删除 VM;未确认结果继续占预留。
  • 有 UPID 的未确认任务可点「核对克隆结果」,仅查询原任务并确认目标 VM;没有 UPID、明确失败或残留资源须管理员在 PVE 核对,当前无自动清理/释放预留接口。
  • VMID 创建记录保留,失败后也不直接复用。相同请求标识重发不创建第二台 VM,参数变化必须换标识。
  • 只允许一个队列运行者恢复任务。长克隆单独执行,普通管理命令继续处理;当前一次一个克隆,尚无分布式调度。

现场条件与验收

11-10 只读检查:starhe 仅有运行中的 VM100/101/102,未发现模板;平台 Token 具有审计及三台 VM 电源权限,尚无克隆、创建及存储分配权限。10:07 查询 local、local-lvm 可用空间约 10.5 GiB、7.2 GiB,随现场变化。

真实接入可验证模板发现、节点存储查询、迁移和页面;不能声称已现场发放新桌面。克隆成功、失败、网络未知及恢复流程由本地 PVE HTTP 测试服务和独立 PostgreSQL 验证。现有业务 VM 未做克隆、关机、重启或模板转换。

迁移与回退

新增 image_templates、desktop_pools、provisioning_jobs,desktops 增加可空 pool_id 和默认 false 的 setup_required;启动时幂等迁移,原桌面保持连接行为。未删除原字段。

更新前备份:私有 .local/live/backups/before-catalog-20261110-095713.dump;旧 API/控制台镜像标签 before-catalog-20261110。不提交含业务数据的备份。

旧后端严格映射 SELECT *,不能直接读取新增列。回退需停服务、另行备份并评估新增业务数据,再恢复配套数据库快照和旧镜像。恢复会覆盖快照后的数据,当前未做恢复演练,不直接删库或回退列。

验证记录

  • 专用临时 PostgreSQL 的 Go 全量测试、go vet 通过;覆盖 RBAC、克隆最终确认、重复提交、模板变更、权限/空间不足、容量预留、失败/未知结果、已知 UPID 核对及初始化门禁。
  • 队列修改后另验长克隆期间普通电源任务继续完成;测试仅操作演示数据和本地 PVE HTTP 测试服务。
  • ESLint、TypeScript、3 项前端单元测试和生产构建通过;9 项浏览器用例通过,包含新表单和既有会话、主题与窄屏回归。浏览器用例拦截接口,不操作现场资源。
  • API/控制台 Docker 镜像构建并更新到 5182,完成新增表迁移。更新时 Docker Desktop/WSL 引擎发生故障,重启 Docker Desktop 后恢复并继续迁移,没有删卷或恢复数据库快照。
  • 真实 API 验证登录、模板发现、存储查询、空池创建/扩容/成员保存/停用;只创建的临时空池已定向清理,审计保留。当前有 3 台桌面、0 模板、0 池、0 克隆任务。
  • 更新前后桌面连接配置、用户授权和终端身份映射一致,三台桌面运行、终端在线。真实 API 的 8 个深浅主题页面及 2 个窄屏页面无脚本错误或失败响应。

证据:真实 API 核验、真实页面核验、现场模板页、现场桌面页、测试数据池页面。fixture- 图片使用隔离测试数据,不代表现场已有对应模板或桌面池。

后续功能:管理员账号维护(11-10)

已实现真实 API、PostgreSQL 持久化及控制台页面,入口为「系统设置 → 管理员账号」。超级管理员可新增账号、修改显示名称/角色、启停账号和重置其他管理员密码;登录名创建后固定。运维和只读角色不能维护管理员。所有角色通过右上角钥匙按钮修改本人密码,必须验证原密码。

  • 新建默认只读角色;新设密码至少 12 个字符且 UTF-8 不超过 72 字节。既有 root 账号密码保留,启动时不覆盖已有账号密码或启用状态。
  • 角色或启用状态变更、重置密码、本人改密立即撤销该账号全部会话;仅修改显示名称保留登录。原密码输错提示错误且不退出当前登录。
  • 禁止停用自己或修改自己的角色;事务锁与最新权限复核防止并发停用导致没有启用的超级管理员。登录插入会话与重置/停用串行,避免旧凭据在撤销后新建会话。
  • 停用代替永久删除,保留审计;重新启用后可使用当前密码登录。账号修改与审计同事务,响应和审计不包含明文密码或密码哈希。
  • 新增 administrators.enabled boolean NOT NULL DEFAULT true,既有账号默认启用。更新前备份 .local/live/backups/before-admin-20261110-102640.dump,旧镜像标签 before-admin-20261110。旧 API 的严格 SELECT * 映射不能直接读取新增列,回退仍需评估数据并配套数据库快照;本轮未执行回退或删除业务卷。

Go 全量测试与 go vet 通过,使用独立临时 PostgreSQL,覆盖账号生命周期、权限/密码校验、会话撤销及并发超级管理员保护。前端 ESLint、类型检查、3 项单元测试、生产构建和 13 项隔离接口浏览器回归通过。全目录浏览器命令曾包含只适用于 demo 的旧用例,被 production 模式守卫阻止;没有执行其电源操作。随后显式选择管理员、模板池及 UI 三组用例,13/13 通过。

已更新本机 5182 API/控制台,用临时账号完成真实新增、角色修改、密码重置、停用/恢复、本人改密、旧密码拒绝、全部旧会话失效与权限拒绝验证。临时账号及其会话已定向清理,审计保留;原 root 账号字段和密码哈希指纹、桌面配置及用户绑定与更新前完全一致。查询时 VM100/101/102 均运行,1 台终端在线,没有发送 VM 电源、克隆或 GPU 操作。

证据:真实账号接口核验、隔离测试深色页面、隔离测试窄屏页面。fixture- 图片中的运维/财务账号为测试数据。

真实浏览器补充:深浅主题、390px 窄屏及新增/本人改密弹窗均通过;弹窗取消未发送修改请求,无脚本错误或失败响应。见页面核验、真实账号页、真实窄屏新增弹窗。

后续功能:终端与用户维护(11-10)

新增终端资料编辑、停用/重新激活,用户姓名编辑/启停和批量追加/撤销桌面授权;原有换绑和授权流程增加确认及旧票据作废。18 项隔离浏览器回归、独立数据库 Go 全量测试及静态检查通过。使用路径、重新激活设备配置步骤、执行边界与回退见本轮说明。

已更新 5182 并以 2 台临时设备、2 位临时用户完成真实流程验收;临时数据清理后原设备身份、管理员密码、桌面配置、用户与授权均一致,原盒子心跳继续推进、3 台 VM 运行。见真实核验。

后续功能:终端运维策略(11-10)

「终端策略」已部署 5182:模板版本固定、复制新版本、按设备/分组下发、离线等待、失败原因、重新下发与旧版本恢复。第一批支持心跳、命令轮询、桌面列表刷新三项管理间隔;网络、USB、白名单、显示策略仍待对应客户端能力。旧客户端明确提示更新,不会伪装应用成功。

真实盒子已更新为 qt-platform/0.3.0,在配置版本 2 应用命令 5 秒/列表 20 秒,再在版本 3 恢复默认 30/3/15 秒,均收到设备成功回执并核对设备 0600 策略文件。原身份、root 密码、桌面参数、用户和授权快照保持一致,三台 VM 运行,无活动串流。独立 PostgreSQL Go 全量测试/vet、前端检查/构建、22 项浏览器流程及盒子 5 项 CTest 已通过。见功能说明与真实验收。

策略页面深浅主题、390px 窄屏及弹窗已完成真实只读检查,无脚本错误、失败响应或修改请求。见页面验收。

后续功能:CSV、会话历史与监控告警(11-10)

用户/终端/授权 CSV 预检与整批幂等提交、90 天会话历史、节点历史采样、告警规则/确认/自动恢复已补齐。具体入口、CSV 表头、留存与验收边界见本轮说明。VictoriaMetrics、外部通知和完整串流指标采集仍未接入;终端系统指标已在后续批次接通。

已部署本机 5182,并完成真实 CSV 临时身份、会话事件及告警触发/确认/恢复验收;会话使用临时设备合成事件,未开启真实视频串流。临时数据清理后原业务快照一致,原盒子心跳正常、三台 VM 运行。27 项浏览器回归及真实页面深浅/窄屏检查通过,见真实接口证据。

接入配置与规格管理更新

已部署网页 PVE 接入、桌面 CPU/内存与单磁盘扩容任务、账号/IP 登录限流。真实接入保存、热加载、重启保留、临时账号限流、三台 VM 规格读取与运行拦截已验收。现场 Token 缺规格写权限,未修改任何真实 VM;写入流程仅在隔离测试验证。入口、权限、未知结果和密钥备份边界见本批说明。

后续功能:快照与手动还原(11-10)

已部署「桌面管理 → 查看详情 → 快照与还原」,接口与页面、权限、磁盘范围、维护互斥和未知结果保护见说明。关机无内存快照可创建、删除叶快照和手动还原;本期不支持直通或宿主自定义配置等复杂布局。还原包括快照内的数据盘和配置,不保证只恢复系统盘。后台任务成功需原 PVE UPID 成功及实际状态确认,超时不重发。

37 项浏览器回归及 Go 全量测试通过;现场仅只读检查,三台 VM 运行、原业务映射一致。当前 Token 缺快照权限,VM100 的 PVE 快照能力检查为不支持,未执行真实 VM 快照写入。公共池自动领取/退出还原仍在计划中。

桌面批量电源操作(2026-11-10)

5182 的「桌面管理」新增跨页选择、批量开机/正常关机/重启和批次历史,每批最多 50 台。逐台真实预检、5 分钟签名凭证、确认后幂等提交;执行前复查,未确认结果不重发并阻止后续修改和新连接。Go 全量与静态检查、前端检查和 45 项隔离接口页面回归通过;真实环境只做预检与取消提交,三台桌面继续运行。新增表、任务状态、备份与现场边界见功能说明。专用测试 VM、Windows 副本和存储准备按用户要求暂缓。

GPU 资源查看(2026-11-10)

5182 侧栏新增「GPU 资源」,三角色均可读取节点显卡清单、PCI 地址、IOMMU 分组与当前/待应用的虚拟机配置引用,支持搜索、筛选与详情。现场确认 Intel 核显、GTX 965M 及 Windows VM100 引用;自定义配置导致不完整时明确提示,不将未发现引用视为可分配。只新增 GET 接口,无数据库迁移或 GPU 写入;Go 全量与静态检查、前端检查和 51 项页面回归通过。接口、权限、备份和现场证据见功能说明。

终端系统指标与历史(2026-11-10)

5182 的「终端管理 → 详情 → 查看运行指标」已接通真实 CPU、内存、SoC 温度和运行时长,支持 1 小时/24 小时/7 天趋势、30 天留存、缺失断线和过期隐藏。盒子升级为 qt-platform/0.4.0,真实连续采样已入库,旧 Agent 兼容通过;没有将目标 FPS 或请求耗时当作串流实测指标。Go 全量及静态检查、前端检查/构建、57 项页面回归和盒子 6 项 CTest 通过,真实深浅主题及 390px 页面检查无异常。原设备配置、账号密码哈希指纹、桌面参数和授权一致,三台 VM 的配置 digest 与运行状态保持。详见采集范围与验收。串流 FPS/RTT、GPU 健康指标及系统指标告警仍待接入。