feat: 新增补丁管理和异常检测插件及相关功能

feat(protocol): 添加补丁管理和行为指标协议类型
feat(client): 实现补丁管理插件采集功能
feat(server): 添加补丁管理和异常检测API
feat(database): 新增补丁状态和异常检测相关表
feat(web): 添加补丁管理和异常检测前端页面
fix(security): 增强输入验证和防注入保护
refactor(auth): 重构认证检查逻辑
perf(service): 优化Windows服务恢复策略
style: 统一健康评分显示样式
docs: 更新知识库文档
This commit is contained in:
iven
2026-04-11 15:59:53 +08:00
parent b5333d8c93
commit 60ee38a3c2
49 changed files with 3988 additions and 461 deletions

71
wiki/database.md Normal file
View File

@@ -0,0 +1,71 @@
# Database数据库层
## 设计思想
SQLite 单文件数据库WAL 模式支持并发读写。设计原则:
1. **只追加迁移** — 永不修改已有 migration 文件
2. **参数绑定** — 所有 SQL 使用 `.bind()`,绝不拼接
3. **upsert 模式**`ON CONFLICT ... DO UPDATE` 处理重复上报,必须更新 `updated_at`
4. **嵌入式迁移** — SQL 文件通过 `include_str!` 编译进二进制,运行时按序执行
5. **外键启用**`foreign_keys(true)` 强制引用完整性
## 代码逻辑
### 初始化
```
main() → init_database() → SQLite WAL + Normal sync + 5s busy timeout + FK on
→ run_migrations() → CREATE _migrations 表 → 按序执行 001-018
→ ensure_default_admin() → 首次启动生成随机 admin 密码
```
### 连接池配置
- 最大 8 连接
- cache_size = -64000 (64MB)
- wal_autocheckpoint = 1000
### 迁移历史
| # | 文件 | 内容 |
|---|------|------|
| 001 | init.sql | users, devices 表 |
| 002 | assets.sql | hardware_assets, software_assets, asset_changes 表 |
| 003 | usb.sql | usb_events, usb_policies, usb_device_patterns 表 |
| 004 | alerts.sql | alert_rules, alert_records 表 |
| 005 | web_filter.sql | web_filter_rules, web_access_logs 表 |
| 006 | usage_timer.sql | usage_daily, app_usage 表 |
| 007 | software_blocker.sql | software_blacklist, software_violations 表 |
| 008 | popup_blocker.sql | popup_blocker_rules, popup_block_stats 表 |
| 009 | usb_file_audit.sql | usb_file_operations 表 |
| 010 | watermark.sql | watermark_configs 表 |
| 011 | token_security.sql | token_families 表JWT token family 轮换) |
| 012 | disk_encryption.sql | disk_encryption_status, disk_encryption_alerts 表 |
| 013 | print_audit.sql | print_events 表 |
| 014 | clipboard_control.sql | clipboard_rules, clipboard_violations 表 |
| 015 | plugin_control.sql | plugin_states 表 |
| 016 | encryption_alerts_unique.sql | 唯一约束修复 |
| 017 | device_health_scores.sql | device_health_scores 表 |
| 018 | patch_management.sql | patch_status 表 |
### 数据操作层 (`db.rs`)
`DeviceRepo` 提供:
- 设备注册/查询/删除/分组
- 资产增删改查
- USB 事件记录和策略管理
- 告警规则和记录操作
- 所有插件数据的 CRUD
## 关联模块
- [[server]] — 通过 db.rs 访问数据库
- [[plugins]] — 每个插件有对应的数据库表
## 关键文件
| 文件 | 职责 |
|------|------|
| `crates/server/src/db.rs` | DeviceRepo 数据库操作方法集合 |
| `crates/server/src/main.rs` | 数据库初始化、迁移执行 |
| `migrations/001_init.sql` ~ `018_*.sql` | 数据库迁移脚本 |