Files
LinkPort/docs/workspace-ui.md
T
曾志威 408f346ab1 feat: add WebDAV sync backups and unauthenticated targets
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.
2026-09-22 14:00:42 +08:00

6.6 KiB
Raw Blame History

工作区导航与交互

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 嵌入资源。