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

160 lines
22 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 云管功能核对与本轮实现(2026-11-10)
依据《VDI云桌面软件开发方案(1)》第 4、5 章、《VDI云桌面完整方案-云管端》第 3、4 章,以及 [控制台功能设计](cloud-console-functional-design-20261109.md)。以下区分代码实现、测试环境验证和真实现场验收。
## 功能核对
| 模块 | 当前实现 | 仍缺少的内容 |
| --- | --- | --- |
| 登录与授权 | 管理员登录、退出、三角色后端校验;账号新增、改名、角色、启停、他人密码重置、本人改密与会话撤销;用户与终端、多桌面绑定;账号/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 天留存,以及终端 CPU/内存/SoC 温度持续告警;缺失值保持空 | VictoriaMetrics、外部通知、完整串流 FPS/RTT 采集 |
| OTA | 尚无发布闭环 | 包签名、适配机型、灰度批次、暂停/恢复、Agent 安装、A/B 回滚 |
| 批量与交付 | 本机 Docker/真实 PostgreSQL、用户/终端/授权 CSV 预检及整批导入、操作审计与任务记录、审计全历史分页/多条件查询与 CSV 导出(单次 10000 条) | 独立服务器、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 核验](evidence/cloud-catalog-20261110/live-verification.json)、[真实页面核验](evidence/cloud-catalog-20261110/browser-verification.json)、[现场模板页](evidence/cloud-catalog-20261110/live-templates-dark.png)、[现场桌面页](evidence/cloud-catalog-20261110/live-desktops-light.png)、[测试数据池页面](evidence/cloud-catalog-20261110/fixture-pools-light.png)。`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 操作。
证据:[真实账号接口核验](evidence/cloud-administrators-20261110/live-verification.json)、[隔离测试深色页面](evidence/cloud-administrators-20261110/fixture-accounts-dark.png)、[隔离测试窄屏页面](evidence/cloud-administrators-20261110/fixture-accounts-mobile.png)。`fixture-` 图片中的运维/财务账号为测试数据。
真实浏览器补充:深浅主题、390px 窄屏及新增/本人改密弹窗均通过;弹窗取消未发送修改请求,无脚本错误或失败响应。见[页面核验](evidence/cloud-administrators-20261110/browser-verification.json)、[真实账号页](evidence/cloud-administrators-20261110/live-accounts-light.png)、[真实窄屏新增弹窗](evidence/cloud-administrators-20261110/live-create-mobile.png)。
## 后续功能:终端与用户维护(11-10)
新增终端资料编辑、停用/重新激活,用户姓名编辑/启停和批量追加/撤销桌面授权;原有换绑和授权流程增加确认及旧票据作废。18 项隔离浏览器回归、独立数据库 Go 全量测试及静态检查通过。使用路径、重新激活设备配置步骤、执行边界与回退见[本轮说明](cloud-lifecycle-20261110.md)。
已更新 5182 并以 2 台临时设备、2 位临时用户完成真实流程验收;临时数据清理后原设备身份、管理员密码、桌面配置、用户与授权均一致,原盒子心跳继续推进、3 台 VM 运行。见[真实核验](evidence/cloud-lifecycle-20261110/live-verification.json)。
## 后续功能:终端运维策略(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 已通过。见[功能说明](cloud-terminal-policies-20261110.md)与[真实验收](evidence/cloud-policies-20261110/live-verification.json)。
策略页面深浅主题、390px 窄屏及弹窗已完成真实只读检查,无脚本错误、失败响应或修改请求。见[页面验收](evidence/cloud-policies-20261110/browser-verification.json)。
## 后续功能:CSV、会话历史与监控告警(11-10)
用户/终端/授权 CSV 预检与整批幂等提交、90 天会话历史、节点历史采样、告警规则/确认/自动恢复已补齐。具体入口、CSV 表头、留存与验收边界见[本轮说明](cloud-operations-20261110.md)。VictoriaMetrics、外部通知和完整串流指标采集仍未接入;终端系统指标已在后续批次接通。
已部署本机 5182,并完成真实 CSV 临时身份、会话事件及告警触发/确认/恢复验收;会话使用临时设备合成事件,未开启真实视频串流。临时数据清理后原业务快照一致,原盒子心跳正常、三台 VM 运行。27 项浏览器回归及真实页面深浅/窄屏检查通过,见[真实接口证据](evidence/cloud-operations-20261110/live-verification.json)。
## 接入配置与规格管理更新
已部署网页 PVE 接入、桌面 CPU/内存与单磁盘扩容任务、账号/IP 登录限流。真实接入保存、热加载、重启保留、临时账号限流、三台 VM 规格读取与运行拦截已验收。现场 Token 缺规格写权限,未修改任何真实 VM;写入流程仅在隔离测试验证。入口、权限、未知结果和密钥备份边界见[本批说明](cloud-configuration-20261110.md)。
## 后续功能:快照与手动还原(11-10)
已部署「桌面管理 → 查看详情 → 快照与还原」,接口与页面、权限、磁盘范围、维护互斥和未知结果保护见[说明](cloud-snapshots-20261110.md)。关机无内存快照可创建、删除叶快照和手动还原;本期不支持直通或宿主自定义配置等复杂布局。还原包括快照内的数据盘和配置,不保证只恢复系统盘。后台任务成功需原 PVE UPID 成功及实际状态确认,超时不重发。
37 项浏览器回归及 Go 全量测试通过;现场仅只读检查,三台 VM 运行、原业务映射一致。当前 Token 缺快照权限,VM100 的 PVE 快照能力检查为不支持,未执行真实 VM 快照写入。公共池自动领取/退出还原仍在计划中。
## 桌面批量电源操作(2026-11-10)
5182 的「桌面管理」新增跨页选择、批量开机/正常关机/重启和批次历史,每批最多 50 台。逐台真实预检、5 分钟签名凭证、确认后幂等提交;执行前复查,未确认结果不重发并阻止后续修改和新连接。Go 全量与静态检查、前端检查和 45 项隔离接口页面回归通过;真实环境只做预检与取消提交,三台桌面继续运行。新增表、任务状态、备份与现场边界见[功能说明](cloud-batch-operations-20261110.md)。专用测试 VM、Windows 副本和存储准备按用户要求暂缓。
## GPU 资源查看(2026-11-10)
5182 侧栏新增「GPU 资源」,三角色均可读取节点显卡清单、PCI 地址、IOMMU 分组与当前/待应用的虚拟机配置引用,支持搜索、筛选与详情。现场确认 Intel 核显、GTX 965M 及 Windows VM100 引用;自定义配置导致不完整时明确提示,不将未发现引用视为可分配。只新增 GET 接口,无数据库迁移或 GPU 写入;Go 全量与静态检查、前端检查和 51 项页面回归通过。接口、权限、备份和现场证据见[功能说明](cloud-gpu-inventory-20261110.md)。
## 终端系统指标与历史(2026-11-10)
5182 的「终端管理 → 详情 → 查看运行指标」已接通真实 CPU、内存、SoC 温度和运行时长,支持 1 小时/24 小时/7 天趋势、30 天留存、缺失断线和过期隐藏。盒子升级为 `qt-platform/0.4.0`,真实连续采样已入库,旧 Agent 兼容通过;没有将目标 FPS 或请求耗时当作串流实测指标。Go 全量及静态检查、前端检查/构建、57 项页面回归和盒子 6 项 CTest 通过,真实深浅主题及 390px 页面检查无异常。原设备配置、账号密码哈希指纹、桌面参数和授权一致,三台 VM 的配置 digest 与运行状态保持。详见[采集范围与验收](cloud-terminal-metrics-20261110.md)。串流 FPS/RTT、GPU 健康指标仍待接入;系统指标告警已在 11-11 接入,见后续记录。
## 终端系统指标告警(2026-11-11)
5182「监控告警」新增终端 CPU、内存、SoC 温度规则,按真实新采样计算持续时长;计时不早于规则启用/修改,重复评估不推进,缺失/过期不冒充恢复。支持原有三角色权限、确认、规则启停和 90 天事件历史;摄氏度与百分比分开显示。Go 全量与静态检查、前端检查/构建及 61 项隔离页面回归通过,旧规则/事件/待触发状态的重复升级验证通过。无需更新终端,未操作 VM、磁盘或 GPU。详见[规则与验收边界](cloud-terminal-alerts-20261111.md)。
11-11 补充:[操作审计历史查询与 CSV 导出](cloud-audit-history-20261111.md)补齐超过最近 1000 条的历史查询,支持时间、操作人、动作、结果和请求标识检索。执行任务历史已在后续批次补齐,见[任务历史查询与 CSV 导出](cloud-task-history-20261111.md)。
## 管理员在线登录管理(2026-11-11)
已部署「系统设置 → 管理员账号 → 在线登录」,支持来源、登录/到期时间、分页与指定登录撤销。Go 全量/vet、前端检查/构建、8 项页面回归与真实临时账号双登录撤销验收通过。旧登录来源显示未知,当前登录保护,审计不暴露凭据。见[使用说明与测试证据](cloud-admin-sessions-20261111.md)。
## 管理员双重验证(2026-11-11)
已部署右上角「双重验证」:本人可选绑定身份验证器、动态码或恢复码登录、恢复码更新与关闭。Go 全量/vet、前端检查/构建、6 项新增页面和 12 项既有回归通过,并完成真实临时只读账号及实际页面完整验收。root 登录方式保持,见[功能、证据与回退限制](cloud-mfa-20261111.md)。
11-11 追加:[通用/高级两版界面](cloud-editions-20261111.md)已在 5182 部署,包含通用员工授权向导、设备登记/诊断、简明记录和高级显卡准备结果核对。两版共用真实 API/RBAC;首批 34 项页面测试、6 项单元测试和 GPU 专项集成通过,真实临时员工授权流程验收后已清理。模型暂不接入,剩余高级事项保持原验收边界。
11-11 追加:[高级版日志与诊断中心](cloud-diagnostics-20261111.md)已在 5182 部署:设备/桌面按唯一 ID 关联五类记录,数据库分页、来源/时间筛选、设备采集回执和完整 ZIP 导出。6 项后端专项、Go 全量/vet、25 项浏览器回归及真实接口/页面验收通过;真实盒子成功完成一次只读日志采集。现有身份、授权、连接配置及告警规则保持,唯一新增任务为该次采集。持续实时日志、全量归档和客体自动采集仍待后续。
12-11 追加:[通用版固定场景助手向导](cloud-assistant-wizard-20261112.md)已完成代码和隔离页面验收并部署到 5182:输入员工与桌面需求生成授权方案,确认后复用现有绑定接口;未知对象、重复授权、同名桌面和未支持句式不发写请求。15 项通用版浏览器测试、TypeScript、ESLint、单元测试和生产构建通过;真实临时员工授权流程已执行并清理。