Files
markbase/docs/GUI_MANAGEMENT_REVIEW.md
Warren 86984295bf Fix WebDAV PUT timeout: disable versioning for user WebDAV
Root cause: save_index() serializes entire 31KB db to JSON and writes to disk for every PUT operation (synchronous blocking call).

Fix: Disabled versioning for user WebDAV by changing line 2547 from Some(versioning.clone()) to None.

Performance improvement:
- Before: 2+ minutes timeout
- After: 10-27 milliseconds
- Speedup: 12000x faster

Tested: 31B, 100KB, 1MB files all upload successfully in <30ms
2026-06-30 04:56:37 +08:00

404 lines
11 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.
# MarkBase GUI 管理介面检讨报告
**版本**: 1.0
**日期**: 2026-06-25
**作者**: AI Assistant
---
## 一、GUI 架构概览
### 1.1 技术栈
| 组件 | 技术 | 版本 |
|------|------|------|
| **前端框架** | Vue.js 3 | Composition API |
| **UI 库** | Element Plus | Latest |
| **桌面框架** | Tauri | v2 |
| **后端语言** | Rust | 1.92+ |
| **数据存储** | SQLite | auth.sqlite |
### 1.2 代码统计
| 类型 | 数量 | 行数 |
|------|------|------|
| **Vue Components** | 11 个 | 4860 行 |
| **Tauri Commands** | 12 个 | ~1500 行 |
| **Router Routes** | 11 个 | 77 行 |
| **总计** | | ~6437 行 |
---
## 二、已实现功能
### 2.1 User Management (Users.vue)
**功能完整度**: ⭐⭐⭐⭐⭐ (5/5)
| 功能 | 状态 | 说明 |
|------|------|------|
| 用户列表 | ✅ 完成 | 显示 username, home_dir, status |
| 创建用户 | ✅ 完成 | bcrypt 密码加密 + SqliteProvider |
| 编辑用户 | ✅ 完成 | home_dir/status 更新 + 密码可选 |
| 删除用户 | ✅ 完成 | 确认对话框 + SqliteProvider |
| 重置密码 | ✅ 完成 | 弹窗输入新密码 |
**代码量**: 264 行 Vue + 100 行 Rust
---
### 2.2 Share Management (Shares.vue)
**功能完整度**: ⭐⭐⭐ (3/5)
| 功能 | 状态 | 说明 |
|------|------|------|
| 共享列表 | ✅ 完成 | name, path, protocol, users, permissions |
| 创建共享 | ⚠️ 内存存储 | 重启丢失(需持久化) |
| 编辑共享 | ⚠️ 内存存储 | 重启丢失(需持久化) |
| 删除共享 | ⚠️ 内存存储 | 重启丢失(需持久化) |
| 连接测试 | ✅ 完成 | path 存在验证 |
| 协议支持 | ✅ 完成 | SMB/SFTP/WebDAV/S3 |
**代码量**: 295 行 Vue + 152 行 Rust
---
### 2.3 Dashboard (Dashboard.vue)
**功能完整度**: ⭐⭐⭐ (3/5)
| 功能 | 状态 | 说明 |
|------|------|------|
| CPU 监控 | ✅ 完成 | macOS/Linux 双平台 |
| Memory 监控 | ✅ 完成 | macOS/Linux 双平台 |
| Disk 监控 | ✅ 完成 | macOS/Linux 双平台 |
| Service Status | ❌ 硬编码 | 返回固定 4 个服务(未检查实际进程) |
| Recent Activity | ❌ 硬编码 | 返回固定 4 条记录(未连接日志系统) |
| Quick Actions | ❌ 未实现 | 只有 UI无实际功能 |
| 实时刷新 | ✅ 完成 | 5 秒定时刷新 |
**代码量**: 302 行 Vue + 290 行 Rust
---
### 2.4 Backup Management (Backup.vue)
**功能完整度**: ⭐⭐⭐⭐ (4/5)
**代码量**: 497 行 Vue + 3732 行 Rust
---
## 三、存在的问题
### 3.1 关键问题
| 问题 | 严重程度 | 影响 |
|------|----------|------|
| **Share Management 内存存储** | ⚠️⚠️⚠️⚠️⚠️ 极高 | 重启丢失所有共享配置 |
| **Service Status 硬编码** | ⚠️⚠️⚠️⚠️ 高 | 无法反映真实服务状态 |
| **Recent Activity 硬编码** | ⚠️⚠️⚠️⚠️ 高 | 无法查看真实操作记录 |
| **Quick Actions 未实现** | ⚠️⚠️⚠️ 中 | 用户体验不完整 |
| **无权限管理** | ⚠️⚠️⚠️⚠️ 高 | 无法控制用户访问权限 |
---
### 3.2 详细分析
#### 问题 #1: Share Management 内存存储
**当前实现**
```rust
lazy_static::lazy_static! {
static ref SHARES: Arc<Mutex<Vec<ShareInfo>>> =
Arc::new(Mutex::new(Vec::new()));
}
```
**问题影响**
- 服务器重启后,所有共享配置丢失
- 无法持久化到数据库或配置文件
- 不符合生产环境要求
**推荐方案**
- 使用 SQLite 存储(`data/shares.sqlite`
- 或 TOML 配置文件(`config/shares.toml`
---
#### 问题 #2: Service Status 硬编码
**当前实现**
```rust
pub async fn get_all_services_status() -> Result<Vec<ServiceStatus>, String> {
Ok(vec![
ServiceStatus {
name: "SMB Server".to_string(),
status: "running".to_string(),
port: 4445,
uptime: "2h 30m".to_string(),
},
// ... 固定返回 4 个服务
])
}
```
**问题影响**
- 无法检测服务真实状态running/stopped
- 无法获取真实 uptime
- 无法监控服务异常
**推荐方案**
- 使用 `ps aux | grep` 检查进程状态
- 或使用 PID 文件追踪服务
- 或使用 systemd/launchd 服务管理
---
#### 问题 #3: Recent Activity 硬编码
**当前实现**
```rust
pub async fn get_recent_activity() -> Result<Vec<ActivityLog>, String> {
Ok(vec![
ActivityLog {
timestamp: "2026-06-23 14:30:00".to_string(),
activity_type: "Upload".to_string(),
description: "Uploaded document.pdf to /data/files".to_string(),
user: "alice".to_string(),
},
// ... 固定返回 4 条记录
])
}
```
**问题影响**
- 无法查看真实用户操作
- 无法审计系统行为
- 无法追踪异常事件
**推荐方案**
- 使用日志文件(`data/activity.log`
- 或 SQLite 存储(`data/activity.sqlite`
- 集成现有 SSH/SMB/WebDAV 日志
---
#### 问题 #4: Quick Actions 未实现
**当前实现**
```vue
<el-button type="primary" :icon="Upload" class="action-btn">
Upload File
</el-button>
<el-button type="success" :icon="Document" class="action-btn">
Create Backup
</el-button>
// ... 只有按钮,无 @click handler
```
**问题影响**
- 用户点击按钮无响应
- Dashboard 功能不完整
**推荐方案**
- Upload File: 调用 Tauri dialog + file_ops.rs
- Create Backup: 调用 backup.rs snapshot 功能
- View Backups: 跳转到 Backup.vue
- Download File: 调用 Tauri dialog + file_ops.rs
---
#### 问题 #5: 无权限管理
**当前实现**
- User Management 只有 CRUD 用户
- Share Management 只有 CRUD 共享
- **缺失**:用户-共享权限关联
**问题影响**
- 无法控制用户访问哪些共享
- 无法设置读/写权限
- 无法实现多租户隔离
**推荐方案**
- 添加 Permission Management 页面
- 用户-共享关联表user_id, share_id, permission
- 权限类型read/write/admin
---
## 四、竞争对手对比
### 4.1 功能对比表
| 功能 | Proxmox VE | Unraid | OpenNAS | MarkBase | 覆盖率 |
|------|-----------|--------|---------|----------|--------|
| **Dashboard** | ✅ 完整 | ✅ 完整 | ✅ 完整 | ⚠️ 部分 | 60% |
| **User Management** | ✅ 完整 | ✅ 完整 | ✅ 完整 | ✅ 完整 | 100% |
| **Share Management** | ✅ 完整 | ✅ 完整 | ✅ 完整 | ⚠️ 内存 | 50% |
| **Backup Management** | ✅ 完整 | ✅ 完整 | ✅ 完整 | ✅ 完整 | 100% |
| **Permission Management** | ✅ 完整 | ✅ 完整 | ✅ 完整 | ❌ 缺失 | 0% |
| **Service Monitoring** | ✅ 完整 | ✅ 完整 | ✅ 完整 | ❌ 硬编码 | 30% |
| **Activity Log** | ✅ 完整 | ✅ 完整 | ✅ 完整 | ❌ 硕编码 | 30% |
| **VM Management** | ✅ 完整 | ❌ 无 | ❌ 无 | ❌ 无 | N/A |
| **Container Management** | ✅ 完整 | ✅ 完整 | ❌ 无 | ❌ 无 | N/A |
| **HA Cluster** | ✅ 完整 | ❌ 无 | ❌ 无 | ❌ 无 | N/A |
**总体覆盖率**: **47%** (存储 + 备份)
---
### 4.2 竞争对手优势
**Proxmox VE**
- ✅ 完整的 VM/Container 管理
- ✅ HA Cluster 支持
- ✅ 企业级权限管理
- ✅ 完整的监控告警系统
- ✅ API + CLI + Web UI 三位一体
**Unraid**
- ✅ Docker Container 管理
- ✅ 简单易用的 Web UI
- ✅ Community Apps 生态
- ✅ Flash drive 启动(无需安装)
- ✅ Parity 保护(类似 RAID
**OpenNAS**
- ✅ 专注 NAS 功能
- ✅ ZFS 集成
- ✅ 简单部署
- ✅ 开源免费
---
## 五、改进建议
### 5.1 短期改进(本周)
| 优先级 | 任务 | 工作量 | 收益 |
|--------|------|--------|------|
| **P0 #1** | Share Management 持久化 | 200 行 | ⭐⭐⭐⭐⭐ 极高 |
| **P0 #2** | Service Status 真实检测 | 150 行 | ⭐⭐⭐⭐ 高 |
| **P0 #3** | Quick Actions 实现 | 100 行 | ⭐⭐⭐ 中 |
| **P1 #4** | Permission Management | 300 行 | ⭐⭐⭐⭐⭐ 极高 |
---
### 5.2 中期改进(本月)
| 优先级 | 任务 | 工作量 | 收益 |
|--------|------|--------|------|
| **P1 #5** | Activity Log 系统集成 | 400 行 | ⭐⭐⭐⭐ 高 |
| **P1 #6** | Dashboard 增强图表 | 200 行 | ⭐⭐⭐ 中 |
| **P2 #7** | File Browser UI | 500 行 | ⭐⭐⭐⭐⭐ 极高 |
| **P2 #8** | Snapshot Management UI | 300 行 | ⭐⭐⭐⭐ 高 |
---
### 5.3 长期改进(下季度)
| 优先级 | 任务 | 工作量 | 收益 |
|--------|------|--------|------|
| **P2 #9** | Docker Container UI | 800 行 | ⭐⭐⭐⭐ 高 |
| **P3 #10** | API + CLI + Web UI 统一 | 1000 行 | ⭐⭐⭐⭐⭐ 极高 |
| **P3 #11** | 国际化支持 | 200 行 | ⭐⭐⭐ 中 |
| **P3 #12** | Mobile App | 2000 行 | ⭐⭐⭐⭐ 高 |
---
## 六、实施优先级
### 6.1 立即实施(本周)
**Phase 1**: Share Management 持久化
- 创建 `data/shares.sqlite` 数据库
- 实现 ShareProvider trait
- 集成到 share_management.rs
**Phase 2**: Service Status 真实检测
- 使用 `ps aux` 检查进程状态
- 解析 PID 文件(`/tmp/markbase_*.pid`
- 计算 uptime进程启动时间
**Phase 3**: Quick Actions 实现
- Upload File: Tauri dialog + file_ops.rs
- Create Backup: 跳转到 Backup.vue
- View Backups: 跳转到 Backup.vue
- Download File: Tauri dialog + file_ops.rs
---
### 6.2 下周实施
**Phase 4**: Permission Management
- 创建 Permission.vue 页面
- 实现 permission_management.rs
- 用户-共享关联表
**Phase 5**: Activity Log 系统
- 创建 `data/activity.sqlite`
- 集成 SSH/SMB/WebDAV 日志
- 实现 activity.rs Tauri command
---
## 七、目标定位
### 7.1 当前定位
**MarkBase = Lightweight Enterprise File Server + Backup Server**
| 目标用户 | 规模 | 使用场景 |
|---------|------|---------|
| **个人** | 1-5 用户 | Home NAS + backup |
| **小团队** | 5-20 用户 | SMB/SFTP + WebDAV |
| **中小企业** | 20-100 用户 | 多协议 + snapshots |
| **大型企业** | 100+ 用户 | NFS + LDAP + HAPhase 12 |
---
### 7.2 GUI 目标覆盖率
| 目标 | 当前覆盖率 | Phase 1-5 后 | Phase 6-12 后 |
|------|-----------|-------------|--------------|
| **vs Proxmox VE** | 47% | 65% | 75% |
| **vs Unraid** | 58% | 75% | 85% |
| **vs OpenNAS** | 62% | 80% | 90% |
---
## 八、总结
### 8.1 已完成
- ✅ User Management 完整实现5/5
- ✅ Backup Management 基本实现4/5
- ✅ Dashboard 系统监控3/5
- ⚠️ Share Management 内存存储3/5
### 8.2 待完成
- ❌ Share Management 持久化
- ❌ Service Status 真实检测
- ❌ Activity Log 系统集成
- ❌ Permission Management
- ❌ Quick Actions 实现
### 8.3 建议
**立即开始** Phase 1-3本周
- Share Management 持久化P0
- Service Status 真实检测P0
- Quick Actions 实现P0
**下周开始** Phase 4-5
- Permission ManagementP1
- Activity Log 系统集成P1
---
**最后更新**: 2026-06-25
**版本**: 1.0GUI 管理介面检讨报告)