feat: 初始化项目基础架构和核心功能

- 添加项目基础结构:Cargo.toml、.gitignore、设备UID和密钥文件
- 实现前端Vue3项目结构:路由、登录页面、设备管理页面
- 添加核心协议定义(crates/protocol):设备状态、资产、USB事件等
- 实现客户端监控模块:系统状态收集、资产收集
- 实现服务端基础API和插件系统
- 添加数据库迁移脚本:设备管理、资产跟踪、告警系统等
- 实现前端设备状态展示和基本交互
- 添加使用时长统计和水印功能插件
This commit is contained in:
iven
2026-04-05 00:57:51 +08:00
commit fd6fb5cca0
87 changed files with 19576 additions and 0 deletions

70
migrations/001_init.sql Normal file
View File

@@ -0,0 +1,70 @@
-- 001_init.sql: Core tables (users, devices, device_status)
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT NOT NULL UNIQUE,
password TEXT NOT NULL,
role TEXT NOT NULL DEFAULT 'admin' CHECK(role IN ('admin', 'viewer')),
created_at TEXT NOT NULL DEFAULT (datetime('now'))
);
CREATE TABLE IF NOT EXISTS devices (
id INTEGER PRIMARY KEY AUTOINCREMENT,
device_uid TEXT NOT NULL UNIQUE,
hostname TEXT NOT NULL,
ip_address TEXT NOT NULL,
mac_address TEXT,
os_version TEXT,
client_version TEXT,
device_secret TEXT, -- HMAC key for message authentication
status TEXT NOT NULL DEFAULT 'offline' CHECK(status IN ('online', 'offline')),
last_heartbeat TEXT,
registered_at TEXT NOT NULL DEFAULT (datetime('now')),
group_name TEXT DEFAULT 'default'
);
CREATE TABLE IF NOT EXISTS device_status (
id INTEGER PRIMARY KEY AUTOINCREMENT,
device_uid TEXT NOT NULL REFERENCES devices(device_uid) ON DELETE CASCADE,
cpu_usage REAL,
memory_usage REAL,
memory_total_mb INTEGER,
disk_usage REAL,
disk_total_mb INTEGER,
network_rx_rate INTEGER,
network_tx_rate INTEGER,
running_procs INTEGER,
top_processes TEXT,
reported_at TEXT NOT NULL DEFAULT (datetime('now')),
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
UNIQUE(device_uid)
);
CREATE TABLE IF NOT EXISTS device_status_history (
id INTEGER PRIMARY KEY AUTOINCREMENT,
device_uid TEXT NOT NULL REFERENCES devices(device_uid) ON DELETE CASCADE,
cpu_usage REAL,
memory_usage REAL,
disk_usage REAL,
network_rx_rate INTEGER,
network_tx_rate INTEGER,
running_procs INTEGER,
reported_at TEXT NOT NULL DEFAULT (datetime('now'))
);
CREATE TABLE IF NOT EXISTS device_groups (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL UNIQUE,
description TEXT,
parent_id INTEGER REFERENCES device_groups(id),
created_at TEXT NOT NULL DEFAULT (datetime('now'))
);
-- Insert default group
INSERT OR IGNORE INTO device_groups (name, description) VALUES ('default', 'Default device group');
-- Indexes
CREATE INDEX IF NOT EXISTS idx_devices_status ON devices(status);
CREATE INDEX IF NOT EXISTS idx_device_status_uid ON device_status(device_uid);
CREATE INDEX IF NOT EXISTS idx_status_history_device_time ON device_status_history(device_uid, reported_at);
CREATE INDEX IF NOT EXISTS idx_status_history_time ON device_status_history(reported_at);