http://127.0.0.1:8000PENDING、TRUSTED、SUSPICIOUS、IGNORED、NEED_MORE_INFOLOW、MEDIUM、HIGHGET /api/dashboard
返回最近扫描记录、服务总数、进程总数、待确认数量、本次未出现数量。
系统内置两个默认标签:
| 标签 | 默认是否可以被控制 | 说明 |
|---|---|---|
| windows系统 | 否 | 用于标记 Windows 系统原生服务或进程 |
| 本系统相关 | 否 | 用于标记本项目自身相关服务或进程 |
如果服务或进程存在任一 is_controllable = false 的标签,前端不会显示启动、停止、重启等控制操作,后端控制接口也会拒绝执行。
GET /api/tags
POST /api/tags
{
"name": "业务软件",
"description": "业务系统相关组件",
"is_controllable": true
}
PATCH /api/tags/{tag_id}
{
"name": "windows系统",
"description": "Windows 系统原生服务或进程",
"is_controllable": false
}
DELETE /api/tags/{tag_id}
内置标签不可删除。
POST /api/scans/run
执行 Windows 服务和进程采集,写入扫描记录,并按业务规则更新 is_present_now、last_seen_at、运行状态等字段。
GET /api/scans?page=1&page_size=20
GET /api/scans/{scan_id}
GET /api/sensors
说明:
psutil。nvidia-smi;如果不可用,尝试 Windows GPU 性能计数器。psutil 和 ACPI 热区。返回主要字段:
| 字段 | 说明 |
|---|---|
| collected_at | 采集时间 |
| cpu | CPU 总负载、每核心负载、核心数、频率 |
| memory | 物理内存和交换区使用情况 |
| gpu | 显卡负载、温度、显存、功耗等 |
| temperatures | psutil/ACPI 温度 |
| hardware_sensors | LibreHardwareMonitor/OpenHardwareMonitor 传感器 |
GET /api/smart/scan
等价于执行:
smartctl --scan
GET /api/smart/devices?include_jmb39x=true&jmb39x_slots=8
查询参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| include_jmb39x | boolean | 是否对 SAT/ATA 类设备额外探测 JMB39x 阵列槽位 |
| jmb39x_slots | integer | 探测槽位数量,范围 0-16,默认 8 |
普通设备会按 smartctl --scan 返回的设备和类型执行:
smartctl -a -d sat /dev/sdb
JMB39x 阵列会按槽位执行:
smartctl -a -d jmb39x,0 /dev/sdb
smartctl -a -d jmb39x,1 /dev/sdb
返回每块盘的解析摘要、ATA SMART 属性表、警告信息和原始 smartctl 输出。
GET /api/smart/device?device=/dev/sda&device_type=nvme
查询参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| device | string | 设备路径,例如 /dev/sda |
| device_type | string | 可选,smartctl 的 -d 类型,例如 nvme、sat、jmb39x,0 |
GET /api/services
查询参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| keyword | string | 按名称、显示名称、路径、描述搜索 |
| confirm_status | string | 确认状态 |
| present | boolean | true 本次出现,false 本次未出现 |
| page | integer | 页码,默认 1 |
| page_size | integer | 每页数量,默认 20,最大 200 |
GET /api/services/{service_id}
PATCH /api/services/{service_id}
请求体:
{
"confirm_status": "TRUSTED",
"user_note": "人工确认说明"
}
PATCH /api/services/batch
请求体:
{
"ids": [1, 2, 3],
"confirm_status": "SUSPICIOUS",
"user_note": "批量标记说明,可为空"
}
POST /api/services/import-ai
请求体:
{
"items": [
{
"type": "service",
"name": "WinDefend",
"description": "Microsoft Defender 防病毒核心服务。",
"judgement": "TRUSTED",
"risk_level": "LOW",
"reason": "Microsoft 官方安全组件。",
"suggestion": "保持运行。"
}
]
}
POST /api/services/ai-prompt
请求体:
{
"scope": "selected",
"ids": [1, 2]
}
说明:
scope = selected 时使用 ids 指定的服务。scope = pending 时忽略 ids,生成全部待确认服务的提示词。prompt_text、markdown_table 和 items。PUT /api/services/{service_id}/tags
{
"tag_ids": [1, 2]
}
POST /api/services/{service_id}/start
POST /api/services/{service_id}/stop
POST /api/services/{service_id}/restart
控制规则:
confirm_status 必须是 TRUSTED、SUSPICIOUS 或 IGNORED。PENDING 和 NEED_MORE_INFO 不允许控制。is_controllable = false 时不允许控制。GET /api/processes
查询参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| keyword | string | 按名称、路径、命令行、用户搜索 |
| confirm_status | string | 确认状态 |
| present | boolean | true 本次出现,false 本次未出现 |
| page | integer | 页码,默认 1 |
| page_size | integer | 每页数量,默认 20,最大 200 |
GET /api/processes/{process_id}
PATCH /api/processes/{process_id}
请求体:
{
"confirm_status": "SUSPICIOUS",
"user_note": "人工确认说明"
}
PATCH /api/processes/batch
请求体:
{
"ids": [10, 11],
"confirm_status": "IGNORED",
"user_note": "批量忽略说明,可为空"
}
POST /api/processes/import-ai
请求体:
{
"items": [
{
"type": "process",
"name": "unknown.exe",
"description": "未知用途执行文件。",
"judgement": "SUSPICIOUS",
"risk_level": "HIGH",
"reason": "路径和命令行异常。",
"suggestion": "建议隔离并检查哈希和网络连接。"
}
]
}
POST /api/processes/ai-prompt
请求体:
{
"scope": "pending"
}
返回 prompt_text、markdown_table 和 items。
PUT /api/processes/{process_id}/tags
{
"tag_ids": [2]
}
POST /api/processes/{process_id}/start
使用数据库中记录的 cmdline 或 exe_path 重新启动进程。
POST /api/processes/{process_id}/stop
使用数据库中记录的 last_pid 停止进程,并校验当前 PID 的进程名与记录一致,避免误杀 PID 复用后的其他进程。
控制规则:
confirm_status 必须是 TRUSTED、SUSPICIOUS 或 IGNORED。PENDING 和 NEED_MORE_INFO 不允许控制。is_controllable = false 时不允许控制。服务和进程的 AI 提示词会包含:
tags 字段。name、description、is_controllable。suggestion 中建议使用对应标签名称,但不能创造不存在的新标签。