vdi-cloud/docs/cloud-lifecycle-20261110.md

54 lines
6.4 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)
本轮补齐现有控制台的设备与人员日常维护,沿用 `ui/` 的深浅主题和表格、抽屉、确认弹窗。管理员账号和桌面使用者仍分开管理。
## 使用入口
| 入口 | 功能 |
| --- | --- |
| 终端管理 → 编辑资料 | 修改设备名称、分组;SN 保持固定 |
| 终端管理 → 详情 → 设备管理 | 停用设备、生成新的激活信息;只允许超级管理员 |
| 用户与授权 → 编辑资料 | 修改姓名、启用/停用用户;登录名固定,原终端和桌面授权保留 |
| 用户与授权 → 编辑授权 | 更换/解除关联终端、启停、设置完整桌面列表;已有流程增加确认和旧票据作废 |
| 用户与授权 → 勾选用户 → 批量授权 | 追加分配或撤销指定桌面,保留其他授权;一次最多 100 位用户、100 台桌面 |
运维仍可执行原有重启、重置会话和日志命令;只读人员只能查看。停用设备不再提供远程命令入口,后端也拒绝新命令。批量操作对所选用户和桌面先整体校验,再一次提交;目标不存在则整体回滚。
## 停用与重新激活
- 停用立即撤销设备令牌和旧激活密钥,清理该设备连接票据;设备的 SN、业务 ID、分组和用户关联保留。
- 重新激活会撤销旧身份,切换为待激活,生成只显示一次的新密钥。再次生成会作废上一次尚未使用的密钥;注册成功后密钥不能再次使用。
- 活动会话/连接预约(有桌面关联且最近 90 秒有心跳)或排队/执行中的设备命令会阻止停用和重新激活,返回明确原因。先结束/重置会话,等待命令回执或核对超时状态。旧心跳超过在线窗口时按现有离线判定处理,平台身份撤销不等于网络层强制结束既有 Moonlight 串流。
- 身份变更重置当前会话、FPS/RTT 和注册元信息;完整历史会话与指标查询尚未实现。永久删除设备/用户未增加,使用停用保留业务关系与审计。
重新激活不会通过已撤销的通道自动安装新身份。设备管理员需在终端空闲时备份并更新原 `platform.json`:保留原 `url` 和 `caFile`,移除旧 `deviceToken`,写入新 `activationSecret`,然后重启客户端使其重新注册。Qt 客户端优先尝试已有令牌,所以只添加激活密钥而保留旧令牌不能完成恢复。配置按凭据管理,权限保持 0600,不将密钥写入仓库或审计。
用户停用、授权撤销和更换终端会阻止后续连接;已建立串流仍通过独立的“重置会话”处理。授权修改和用户资料保存作废关联设备未消费票据,避免恢复启用或换绑后继续使用旧票据。桌面批量分配不会自动开启停用用户或自动关联终端。
## 接口与一致性
新增 `PUT /terminals/{id}`、`POST /terminals/{id}/disable`、`POST /terminals/{id}/reactivate`、`PUT /users/{id}`、`POST /users/batch-bindings`,均限超级管理员,已同步 OpenAPI 和前端类型。已有 `PUT /users/{id}/bindings` 保持兼容。
设备认证与该次心跳、命令领取/回执或票据操作共用事务和设备行锁;停用、重新激活、命令提交按同一设备行串行,避免旧请求在撤销后恢复身份或领取新命令。票据创建/消费、授权写入、设备身份重置和桌面连接配置共用授权事务锁,避免校验后权限变更或票据删除与消费的锁顺序冲突。普通设备心跳和命令处理不占用全局授权锁。新管理操作及其审计同事务,凭据不进入公开列表或审计。
数据库新增 `terminals.enabled boolean NOT NULL DEFAULT true`;原有设备默认启用,既有设备令牌、SN 和授权不重建,启动不重新激活已停用设备。新增数据库字段要求配套后端模型,回退不能直接将旧 API 接到新结构。
## 验证
独立临时 PostgreSQL 的 Go 全量测试与 `go vet` 通过;覆盖身份撤销、旧票据失效、重复注册、激活密钥轮换、重启保留停用、会话/任务保护、RBAC、批量幂等与回滚。前端类型检查、ESLint、3 项单元测试、生产构建和 18 项隔离接口浏览器回归通过。测试中的设备、用户和桌面为隔离数据,没有向现场设备或 PVE 发命令。
界面证据:[终端详情](evidence/cloud-lifecycle-20261110/fixture-terminal-detail-light.png)、[窄屏批量授权](evidence/cloud-lifecycle-20261110/fixture-batch-users-mobile.png)、[测试记录](evidence/cloud-lifecycle-20261110/test-verification.json)。`fixture-` 截图不代表现场实际设备和人员。
更新前备份 `.local/live/backups/before-lifecycle-20261110-105516.dump`,旧镜像标签 `before-lifecycle-20261110`。备份、原凭据指纹及数据快照只保存在忽略提交的私有目录。回退需评估快照之后的数据,恢复配套数据库与镜像;本轮不执行破坏性回退,不删除正式数据卷。
终端配置模板/热更新、自动领取与还原、GPU 调度、历史监控告警、OTA 和独立服务器交付仍按[功能核对清单](cloud-feature-progress-20261110.md)继续推进。
## 本机真实验收
11-10 已构建并更新 5182 API/控制台,完成设备启用字段迁移。使用 2 个临时设备身份、2 位临时用户验证资料保存、用户启停、换绑/占用冲突、批量追加/撤销、票据作废、设备停用、重复生成激活密钥、一次性注册和旧令牌拒绝;没有向业务 VM 或真实盒子发送命令,没有实际创建 VM 连接预约。临时设备、用户、绑定与票据已定向清理,审计保留。
更新前后管理员及密码指纹、原设备身份凭据/元信息、桌面连接配置、用户和绑定逐项一致。原盒子心跳在更新后继续推进,查询时 1 台终端在线,VM100/101/102 均运行。见[真实接口核验](evidence/cloud-lifecycle-20261110/live-verification.json)。活动会话和待执行命令保护在隔离环境验证,未为测试打断现场业务连接。
部署后的真实页面已检查深浅主题、390px 窄屏、终端/用户资料弹窗及批量授权弹窗,取消未发送修改请求,无脚本错误或失败响应。证据:[页面核验](evidence/cloud-lifecycle-20261110/browser-verification.json)、[真实终端详情](evidence/cloud-lifecycle-20261110/live-terminal-detail-light.png)、[真实窄屏批量授权](evidence/cloud-lifecycle-20261110/live-batch-users-mobile.png)。