This commit is contained in:
2026-05-05 00:16:23 +08:00
parent fca1ea21d2
commit b0854509fe
9 changed files with 936 additions and 649 deletions
+8 -8
View File
@@ -19,9 +19,9 @@ Qt 管理端用于连接考勤服务端,完成以下工作:
6. 导出统计 CSV。
7. 配置服务端地址和 API Token。
8. 新增、编辑、删除、清空签到时间段。
9. 配置学号到姓名、学号到班级编号、班级编号到班级名称的显示映射。
9. 维护班级信息。
10. 查看 K210 上传的人脸照片。
11. 为 K210 face_id 绑定真实学号。
11. 为 K210 face_id 编辑真实学号、姓名和班级。
12. 删除人脸信息,并可选择删除关联考勤记录。
## 2. 当前重要行为
@@ -60,11 +60,9 @@ API Token 不写入源码。可以通过“配置中心”保存,也可以通
$env:ATTENDANCE_API_TOKEN="你的Token"
```
### 2.4 响应加密
### 2.4 加密传输
服务端支持通过请求头 `X-Encrypted-Response: true` 返回 AES 加密响应,Qt 代码中保留了解密能力。
当前普通记录和统计请求没有默认开启这个请求头,实际按 JSON 明文解析。
除照片 JPEG 下载外,Qt 的业务 JSON 请求和响应统一使用 AES-128-CBC + PKCS#7 + Base64。GET/DELETE 请求会要求服务端返回加密响应,POST JSON 会先加密请求体并携带 `X-Encrypted: AES128-CBC`。
## 3. 技术栈
@@ -88,7 +86,7 @@ QT/
│ ├── ApiClient.* # HTTP API 客户端
│ ├── AppController.* # 业务逻辑中枢
│ ├── AttendanceTypes.h # 数据结构
│ ├── CryptoUtils.* # AES 解密工具
│ ├── CryptoUtils.* # AES 加解密工具
│ └── *ListModel.* # QML 列表模型
├── CMakeLists.txt
├── clear_qt_cache.ps1 # 清理 Qt Creator/CMake 本地缓存
@@ -156,6 +154,8 @@ powershell -ExecutionPolicy Bypass -File .\clear_qt_cache.ps1
| 保存 | 同时保存服务器地址和 API Token 到 `QSettings`,并切换 `ApiClient` 配置 |
| 测试连接 | 使用当前配置请求 `/api/v1/system/health` |
配置中心还包含签到时间段配置和班级管理。班级区域只负责从服务器加载班级、保存班级、新增班级和删除班级;学生学号、姓名和班级归属在人脸管理页点击“编辑”后维护。
## 10. 本地数据
Qt 会保存这些本地数据:
@@ -165,7 +165,7 @@ Qt 会保存这些本地数据:
| 服务端地址 | `QSettings`,键名 `server/url` |
| API Token | `QSettings`,键名 `server/apiToken` |
| 时间段配置 | `QStandardPaths::AppDataLocation/timeslot_config.json` |
| 学生/班级映射 | `QStandardPaths::AppDataLocation/mapping_config.json` |
| 学生、班级与人脸档案缓存 | `QStandardPaths::AppDataLocation/profiles_cache.json` |
| 人脸照片缓存 | `QStandardPaths::AppDataLocation/face_photos/*.jpg` |
## 11. 常见问题