Files
opsxshell/PROJECT_EVALUATION.md
T

337 lines
13 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.
# 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%** |