- 添加项目基础结构:Cargo.toml、.gitignore、设备UID和密钥文件 - 实现前端Vue3项目结构:路由、登录页面、设备管理页面 - 添加核心协议定义(crates/protocol):设备状态、资产、USB事件等 - 实现客户端监控模块:系统状态收集、资产收集 - 实现服务端基础API和插件系统 - 添加数据库迁移脚本:设备管理、资产跟踪、告警系统等 - 实现前端设备状态展示和基本交互 - 添加使用时长统计和水印功能插件
71 lines
2.6 KiB
SQL
71 lines
2.6 KiB
SQL
-- 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);
|