Files
opsxshell/PROJECT_EVALUATION.md
T

13 KiB
Raw Blame History

PROJECT_EVALUATION.md - 项目评估和质量指标

本文档定义 OpsXShell 的质量标准、评估指标和改进目标。


版本历史

日期 版本 评分 主要变更
2026-04-04 v0.1.0 56/100 初始骨架
2026-04-06 v0.10.0 78/100 核心功能实现发布
2026-04-18 代码审计 58/100 独立代码质量审计
2026-04-18 UI/UX审计 48/100 UI 视觉 + 功能交互深度审计

评分说明: 代码审计聚焦代码质量/测试/架构/安全;UI/UX 审计聚焦视觉设计、交互体验、功能便捷性。


UI/UX 审计评估 (2026-04-18)

整体评分: 48/100

维度 分数 评级 说明
视觉设计 65/100 🟡 中等 深色主题配色专业,但设计系统执行不严格
交互体验 40/100 🔴 差 大量半成品功能,反馈系统缺失
功能便捷性 45/100 🔴 差 快捷键薄弱,核心操作路径长
状态处理 35/100 🔴 差 多组件缺空状态/加载/错误三态
响应式设计 10/100 🔴 极差 完全缺失
视觉设计   ████████████████░░░░░░░░░ 65%  配色专业但执行不严格
交互体验   ██████████░░░░░░░░░░░░░░░ 40%  alert/prompt泛滥,无Toast
功能便捷性 ███████████░░░░░░░░░░░░░░ 45%  快捷键仅4个,无终端搜索
状态处理   ████████░░░░░░░░░░░░░░░░░ 35%  多组件缺三态
响应式设计 ██░░░░░░░░░░░░░░░░░░░░░░░ 10%  完全缺失

竞品对标

维度 OpsXShell Termius Tabby
整体配色 ⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐
布局结构 ⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐
图标一致性 ⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐
动画/过渡 ⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐⭐
响应式 ⭐ ⭐⭐⭐⭐ ⭐⭐⭐
状态处理 ⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐
设计系统 ⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐

OpsXShell 视觉设计达到 Termius 的 70-75% 水平,但交互体验仅 40-50%。


视觉设计详细评估

✅ 做得好的

组件 亮点
WelcomeView 全项目最佳 — 2×2快捷操作网格,独立配色,图标容器渐变悬停,rounded-xl 统一圆角
Modal backdrop-blur-sm 毛玻璃 + shadow-2xl 立体感 + ESC关闭
Button 4变体 × 3尺寸 = 12组合,disabled 态完整,loading spinner
TabBar 连接状态圆点(黄/绿/红),min-w/max-w 宽度限制,悬停显示关闭按钮
TransferPanel 折叠动画 + 进度条 transition-all duration-300 + 状态标签胶囊
配色系统 dark-900→800→700→600 四级灰度 + accent-blue/green/purple 三色搭配

🔴 高优先级视觉问题

# 文件 问题 修复方案
V-1 StatusBar.tsx:33 bg-accent-blue 状态栏过于刺眼 → bg-dark-800 border-t border-dark-700
V-2 SFTPView.tsx:96-131 右键菜单用 emoji 📂📤📥🗑️ → Lucide 图标组件
V-3 FileRow.tsx:27 选中色 cyan-500 不在设计系统 → accent-blue/20
V-4 TerminalView.tsx:601 恢复按钮 bg-cyan-600 不在设计系统 → accent-blue
V-5 FileRow.tsx:32 目录图标 sky-400 不在设计系统 → accent-blue

🟡 中优先级视觉问题

# 文件 问题
V-6 Breadcrumb.tsx:33 text-slate-600 应统一为 text-dark-600
V-7 TransferItem.tsx:28 bg-slate-700 应统一为 bg-dark-700
V-8 WelcomeView.tsx:26 grid-cols-2 硬编码,应加 grid-cols-1 sm:grid-cols-2
V-9 StatusBar.tsx:36 Wifi 图标语义不当,应用 CheckCircle
V-10 tailwind.config.js 缺少 accent-orange 定义,orange-400 散落

交互体验详细评估

🔴 Critical — 严重影响可用性

# 文件 问题 影响
I-1 App.tsx:46,49,128,159,168 导入导出全用 alert() 体验极差,与暗色主题不协调
I-2 SFTPView.tsx:173 新建文件夹用 prompt() 原生弹窗破坏沉浸感
I-3 PortForwardView.tsx:150 删除用 confirm() 同上
I-4 SFTPView.tsx:103 本地上传右键菜单 action 空函数 功能完全不可用
I-5 SFTPView.tsx:129-131 远程删除右键菜单 action 空函数 功能完全不可用
I-6 useSFTP.ts:399 上传实现是模拟代码 SFTP 上传不可用
I-7 WelcomeView.tsx:12-16 最近连接列表是硬编码假数据 显示虚假信息误导用户
I-8 SessionDialog.tsx:265-270 私钥"浏览"按钮 无事件 点击无反应
I-9 全局 无 Toast 通知系统 用户操作无任何非阻塞反馈
I-10 全局 无终端搜索 (Ctrl+Shift+F) 基础功能缺失
I-11 tabStore.ts 标签页无持久化,重启全部丢失 会话恢复名存实亡
I-12 StatusBar.tsx:33-56 状态栏永远显示"就绪" 未接入实际连接状态

🟡 Warning — 显著影响效率

# 文件 问题
I-13 快捷键仅 4 个 缺 Ctrl+Tab 切标签、Ctrl+1~9、F11 全屏、Ctrl+Shift+F 搜索
I-14 WelcomeView.tsx:120 提示 Ctrl+T 但 未注册
I-15 TabBar.tsx 无标签拖拽排序
I-16 QuickConnectDialog.tsx:12-17 不支持密钥认证,仅密码
I-17 SettingsView.tsx:79 light 主题选项无效(仅 dark)
I-18 SettingsView.tsx:96-101 语言切换无效(无 i18n)
I-19 SFTPView.tsx:208 左右面板共享 contextMenu 状态可能冲突
I-20 Sidebar.tsx 会话分组不可折叠/展开

功能便捷性评分

SSH 连接

场景 步骤 评分 竞品对比
已保存会话 1步(双击) 8/10 ✅ 与 Termius 持平
快速连接 Ctrl+K 2-4步 7/10 ⚠️ 不支持 user@host:port 单行输入
密钥认证 — 3/10 ❌ 浏览按钮无效,需手动输入路径

SFTP 文件操作

操作 步骤 评分 问题
导航目录 1步 8/10 ✅
上传文件 3步 3/10 ❌ 不可用(模拟实现)
下载文件 2步 7/10 ✅
新建文件夹 2步 5/10 ⚠️ 用 prompt()
拖拽上传 — 0/10 ❌ 缺失
文件预览 — 0/10 ❌ 缺失

标签页管理

操作 方式 评分 竞品差距
创建 +按钮/Ctrl+N 8/10 —
切换 点击标签 6/10 ❌ 无 Ctrl+Tab
关闭 ×/Ctrl+W 7/10 —
拖拽排序 — 0/10 ❌ 缺失
会话恢复 — 0/10 ❌ 重启丢失

快捷键覆盖

类别 已有 缺失 覆盖率
应用级 4个 (N/K/Q/R) F11全屏, Ctrl+Shift+N新标签 30%
标签级 1个 (Ctrl+W) Ctrl+Tab, Ctrl+1~9, Ctrl+Shift+T恢复 10%
终端级 0 Ctrl+Shift+F搜索, Ctrl+Shift+C/V, Ctrl+/-缩放 0%
自定义 ❌ 全部 0%

功能完成度矩阵

|| 功能 | 状态 | 完成度 | 备注 | |------|------|--------|------| | SSH 密码连接 | ✅ | 90% | | | SSH 密钥连接 | ✅ | 80% | | | SSH Agent 认证 | ✅ | 80% | | | XTerm.js 终端 | ✅ | 85% | | | 终端多主题 | ✅ | 90% | | | IP 高亮 | ✅ | 95% | | | SFTP 双栏浏览 | ✅ | 80% | | | SFTP 上传 | ✅ | 75% | | | SFTP 下载 | ✅ | 75% | | | SFTP 右键菜单 | 🟡 | 60% | | | SFTP 拖拽上传 | ✅ | 80% | | | SFTP 文件预览 | ❌ | 0% | | | 端口转发 | ✅ | 85% | | | 标签页管理 | ✅ | 85% | | | 会话管理 | ✅ | 75% | | | 会话恢复 | ✅ | 85% | | | 快捷键系统 | ✅ | 90% | v1.4.0: 自定义快捷键+冲突检测 | | Toast 通知 | ✅ | 90% | | | 终端搜索 | ✅ | 85% | | | 设置系统 | ✅ | 70% | light/i18n 待实现 | | 状态栏 | ✅ | 80% | | | 欢迎页 | ✅ | 80% | | | 命令片段库 | ✅ | 85% | | | 命令面板 | ✅ | 80% | | | 连接面板 | ✅ | 80% | | | 主题系统 | ✅ | 90% | Dark/Light/System | | 终端分屏 | 🚧 | 0% | v1.4.0 计划 | | i18n 国际化 | 🚧 | 5% | v1.4.0 计划 | | 代理设置 | 🚧 | 0% | v1.4.0 计划 | | 多窗口支持 | 🚧 | 0% | v1.4.0 计划 |


SWOT 分析

Strengths (优势)

  • 深色主题四级灰度配色系统专业(基于 Tailwind Slate)
  • WelcomeView 快捷操作卡片设计出色
  • 基础组件质量高(Button/Modal/Loading/ErrorBoundary)
  • 连接池管理 + 终端快照恢复(独有亮点)
  • AES-256-GCM 加密实现专业

Weaknesses (劣势)

  • 大量半成品功能: SFTP 上传/删除/右键菜单为空函数
  • 反馈系统缺失: 无 Toast,大量 alert/prompt/confirm
  • 快捷键极弱: 仅 4 个,无终端搜索、无标签切换
  • 调试代码未清理: DEBUG=true + 50+ console.log
  • 设计系统执行不严格: cyan/sky/slate 颜色散落

Opportunities (机会)

  • Toast 通知系统建立后,全局交互体验可跃升
  • xterm SearchAddon 可快速集成终端搜索
  • 快捷键自定义框架一次建设,长期受益
  • 响应式设计补全后可在小屏/平板使用

Threats (威胁)

  • 竞品 Termius/Tabby 功能成熟度远超
  • 半成品功能影响用户第一印象
  • 无会话恢复 = 重启丢工作,企业用户不可接受

优化方向与目标

Phase 1: 基础可用 (v1.1.0) — 2 周

目标: 解决所有 Critical 问题,产品具备基础可用性 评分目标: UI/UX 48→65

# 任务 类型 预计 影响
1 Toast 通知系统 (组件 + 全局 hook) 新增 2天 全局交互提升
2 替换所有 alert/prompt/confirm 为自定义 UI 修复 2天 消除原生弹窗
3 SFTP 上传/删除真实实现 修复 3天 核心功能可用
4 终端搜索 (xterm SearchAddon) 新增 1天 基础功能补全
5 会话恢复 (标签持久化到 SQLite) 新增 3天 重启不丢工作
6 修复私钥浏览按钮 修复 0.5天 密钥认证可用
7 清理生产调试日志 修复 1天 代码质量
8 设计系统统一 (cyan→accent-blue 等) 修复 1天 视觉一致性
9 StatusBar 接入实际状态 修复 0.5天 信息准确
10 WelcomeView 真实最近连接 修复 1天 去除假数据

Phase 2: 体验升级 (v1.2.0) — 2 周

目标: 快捷键、视觉打磨、交互优化 评分目标: UI/UX 65→78

# 任务 类型 预计
1 Ctrl+Tab / Ctrl+1~9 标签切换 新增 1天
2 标签拖拽排序 新增 2天
3 SFTP 拖拽上传 新增 2天
4 SFTP 右键菜单完善(权限编辑/属性) 完善 1天
5 侧边栏会话分组折叠/展开 完善 1天
6 Sidebar 宽度可拖拽调整 新增 1天
7 响应式布局基础(窄窗口折叠侧边栏) 新增 2天
8 Loading/Skeleton 加载态补全 新增 1天
9 空状态插画/提示补全 新增 1天
10 终端组件拆分重构 重构 3天

Phase 3: 专业功能 (v1.3.0) — 3 周

目标: 快捷键自定义、终端分屏、i18n 评分目标: UI/UX 78→88

# 任务 类型 预计
1 快捷键自定义系统 新增 3天
2 终端分屏(水平/垂直) 新增 5天
3 i18n 国际化 新增 5天
4 Light 主题实现 新增 3天
5 Snippets 命令片段库 新增 3天
6 代理设置 新增 2天
7 多窗口支持 新增 5天

里程碑总览

v1.1.0 基础可用  (2 周)   → UI/UX 48→65  解决所有Critical问题
v1.2.0 体验升级  (2 周)   → UI/UX 65→78  快捷键+视觉打磨
v1.3.0 专业功能  (3 周)   → UI/UX 78→88  分屏+i18n+自定义快捷键

总计: ~7 周 → UI/UX 综合评分 48→88

成功指标

指标 v1.0 当前 v1.3 目标
UI/UX 综合评分 48/100 88/100
有效快捷键数 4 30+
alert/prompt/confirm 8 处 0 处
半成品功能 8 个 0 个
Toast 通知覆盖 0% 100%
终端搜索 ❌ ✅
会话恢复 ❌ ✅
响应式 ❌ ✅
快捷键可自定义 ❌ ✅

代码质量评估(代码审计结论,保留参考)

综合评分: 58/100

维度 分数 说明
功能完成度 82/100 SSH/SFTP/端口转发主体完成
代码质量 45/100 50+ console.log, DEBUG=true 残留
测试覆盖 15/100 核心模块零测试
架构设计 72/100 IPC 分层好,Store 有耦合
安全合规 55/100 加密优秀,传输链路有风险
依赖管理 50/100 Electron v28 过旧
构建配置 75/100 基本合理

代码统计

目录 文件数 代码行数 占比
electron/ 17 2,862 25.3%
src/ 55 7,480 66.0%
shared/ 5 441 3.9%
test/ 4 475 4.2%
总计 81 11,258 100%