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

11 KiB
Raw Permalink Blame History

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 内存存储

当前实现

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 硬编码

当前实现

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 硬编码

当前实现

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 未实现

当前实现

<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 管理介面检讨报告)