Replace active S3 sync with encrypted WebDAV synchronization and independent backups. Support explicit empty passwords and unauthenticated MongoDB, Redis, HTTP and HTTPS targets. Include migration, design and validation documentation. Validation: build and go vet passed; Playwright 113 passed with 4 existing failures. Full Go run reproduced the existing cluster discovery test failure. Preserve unrelated SSH fingerprint changes outside this commit.
6.6 KiB
工作区导航与交互
2026-09-20 实现 UI-001 至 UI-006。代码与待验收状态见 实现清单,连接参数、连接标识及测试反馈见 连接编辑器。本文件描述实现行为,不代表浏览器运行态验收已经完成。
资源搜索与资源树
- 工具栏“搜索资源”或
Ctrl+K/⌘K打开统一搜索;上下方向键选择,Enter 打开,Esc 关闭。手机保留可点击搜索图标。 - 搜索目标、网关、代理和资产的名称、地址、协议及项目/环境,最多显示 100 条。索引从现有资源摘要构造,不纳入账号密码、私钥、资产正文、原始错误或隐藏备注。
- 结果限定当前项目/环境,显示资源类型、范围和网关状态;空结果、刷新中、刷新失败及重试均有提示。搜索不创建新的后端查询或权限体系。
- 侧栏按“项目 → 环境 → 类型”组织资源,未分配项目/环境有明确名称。选择资源时展开祖先;资源重命名、状态变化、移动或删除随现有刷新更新。
- 桌面侧栏默认 224px,可拖动右边界,在 192–420px 内调整;边界支持左右键调整和 Home 恢复默认。1050px 及以下使用 192px,720px 及以下使用 52px 图标侧栏和“展开资源树”弹窗。
- 跨范围的引用跳转先提示切换项目/环境,并经过未保存确认,避免编辑其他范围的资源却仍显示原筛选。
工作区标签
稳定键是页面 ID,或 资源类型:资源 ID;同一资源重复打开只激活已有标签,不重复建立编辑器。范围变化清空旧标签,固定状态也不跨范围保留。
- 标签支持固定/取消固定、关闭及关闭其他未固定标签;手机可横向滚动。编辑弹窗/抽屉内另有“切换工作区标签”和“关闭当前标签”,无需操作遮罩后的页面。
- 标签元数据、页面筛选快照、页面/表格滚动位置、连接配置子页签及编辑器滚动位置只放内存。列表筛选沿用原来的非敏感偏好存储。
- 只挂载当前页面,不缓存含凭据的组件实例。切换有修改的编辑器会询问是否放弃,选择继续编辑则不切换;选择放弃后清空草稿,再从当前资源数据打开下一项。不是多个后台草稿编辑器。
- 未活动标签没有额外轮询器。现有共享资源刷新保留;命令/连接审计返回标签时保留已加载分页,手动刷新才重新查询。概览活动使用独立数据,避免覆盖审计筛选和分页。
- 已关闭视图不会停止实际网关。未活动标签没有草稿,因此“关闭其他标签”不会丢弃隐藏编辑内容;活动编辑器的切换/关闭/退出登录仍走统一未保存保护。
- 刷新时清理不存在或移出当前范围的资源标签;有未保存内容时不静默丢弃。再次导航会重新查找当前资源,已删除项不再打开;实际保存和删除仍由后端校验。
- 登录失效或退出登录清理资源数据、标签、最近记录及凭据视图,并使之前的刷新响应失效,避免跨会话串用资源。
表格列设置
网关、连接审计、命令审计和资产表格提供统一“列设置”:显示/隐藏、拖动排序、上移/下移等效按钮、80–800px 列宽和恢复默认。也可拖动表头边界调整宽度。
关键标识列、选择列及操作入口不可隐藏;选择列固定在最前,操作列固定在最后。保存的是稳定列 ID、显隐、顺序和宽度,不包含单元格内容。读取旧布局时丢弃删除字段、去重、补齐新字段并限制宽度;损坏存储退回默认。小屏继续使用原有网关/命令卡片或表格内横向滚动。
操作菜单与概览
- 目标、网关、代理和资产提供统一“更多”控件及桌面右键菜单。菜单按能力复用现有编辑、测试、复制创建、密码查看、连接示例、审计、启停、指纹及删除处理函数;不支持的动作不展示。
- 右键菜单限制在窗口内,方向键及 Home/End 选择,Enter 执行,Esc 关闭,点击外部或调整窗口关闭。手机使用点击式菜单,不依赖右键。
- 禁用状态跟随最新资源/运行状态和忙碌状态,执行前重新查找资源;删除和停止沿用现有确认与后端保护。复制创建不复制已保存密码、私钥明文或口令,资产引用保留,密码查看仍走原有验证接口。
- 运行概览增加最近访问、异常网关和新建目标/网关、导入配置及监控入口;不再造一套统计或监控。异常状态直接取现有
runtime.error。 - 最近访问最多保留 30 条索引、展示当前范围内最近 8 条;仅存类型、ID、访问时间,从最新资源摘要补名称。删除资源后清理索引,也可手动清空;不保存目标地址、备注或凭据。
存储与兼容
| 键 | 内容 |
|---|---|
serviceport.recent.v1 |
最近资源的类型、ID、时间 |
serviceport.tree.v1 |
项目/环境/类型分支的展开键 |
serviceport.sidebar-width |
桌面侧栏像素宽度 |
serviceport.columns.v1.<表格 ID> |
列 ID、显隐、顺序、宽度 |
浏览器禁用存储时功能仍可在当前会话使用;这些偏好不进入服务器备份或 WebDAV 同步。所有标签、原始 URL、未保存表单、解密内容和诊断结果不写入浏览器持久存储。不引入新运行依赖、不更换管理 API、不改变网关账号权限或协议安全策略。
验证
2026-09-20:锁定依赖下 vue-tsc --noEmit 通过;7 项纯逻辑测试函数已在单进程执行,覆盖参数校验/回读、草稿选项、列合并、资源索引脱敏和标签唯一性。新增 workspace-features.spec.ts 覆盖未应用 URL 测试/保存、参数回读、结果过期、搜索/树、草稿关闭保护、最近索引、列布局及右键键盘操作;全套 Playwright 能发现 88 项测试。
npm.cmd --prefix web run build 在 Vite 启动 esbuild 时遭遇 spawn EPERM;Playwright 的 worker 同样无法启动。测试发现与单进程逻辑断言不等于浏览器用例通过。本轮未生成新前端产物/新嵌入二进制,未运行浏览器端到端回归或生成新截图;不能沿用旧二进制或历史截图作为本轮验收。
解除环境限制后,先构建前端,再用 GOTOOLCHAIN=go1.25.0 编译新程序;将 SERVICEPORT_E2E_BINARY 指向新程序,使用隔离目录、空闲端口运行 npm.cmd --prefix web test。纯逻辑用例也可在 web 中运行 npx.cmd playwright test --config playwright.domain.config.ts。不得并行替换 web/dist 与编译 Go 嵌入资源。