test: 补充单元测试并修复 urlencoding 解码 bug
- auth.rs 新增 JWT 生成/验证回环、篡改拒绝、refresh token 随机性、临时 token 有效期测试 - payment.rs 新增套餐定义、URL 解码、支付宝表单解析(UTF-8/GBK)、RSA2 签名验签、UA 检测测试 - 修复 urlencoding 两个真实 bug:UTF-8 多字节序列乱码、不完整转义吞字符 - 移除 db.rs 悬空 doc 注释,修复 auth.rs 冗余引用(clippy 0 警告) - cargo test 从 2 个增至 36 个全过 - 同步 IMPROVEMENTS.md(索引/重复查询/测试覆盖/公告系统状态)
This commit is contained in:
@@ -280,18 +280,20 @@ DROP TABLE IF EXISTS invitation_codes;
|
||||
- 完成时间:2026-04-15
|
||||
|
||||
### 1.2 数据库操作优化
|
||||
- [ ] **重复查询问题**
|
||||
- [x] **重复查询问题** ✅
|
||||
- 位置:`insert_weather_data` 中多次查询用户信息
|
||||
- 改进:合并查询或使用缓存
|
||||
- 影响:减少数据库负载
|
||||
- 状态:`get_user_quota` 已合并为单次查询(见 `db.rs` 顶部注释);2026-08-11 复核无遗留 N+1
|
||||
|
||||
- [ ] **缺少数据库索引**
|
||||
- 现状:未见索引定义
|
||||
- 改进:添加常用查询字段索引
|
||||
- [x] **缺少数据库索引** ✅
|
||||
- 状态:`migrations/006_add_performance_indexes.sql` 已添加
|
||||
```sql
|
||||
CREATE INDEX idx_weather_data_user_id ON weather_data(user_id);
|
||||
CREATE INDEX idx_weather_data_date ON weather_data(date);
|
||||
CREATE INDEX idx_weather_data_date ON weather_data(date DESC);
|
||||
CREATE INDEX idx_weather_data_user_favorite ON weather_data(user_id, is_favorite);
|
||||
CREATE INDEX idx_weather_data_user_date ON weather_data(user_id, date DESC);
|
||||
CREATE INDEX idx_users_openid ON users(openid);
|
||||
CREATE INDEX idx_payment_orders_status ON payment_orders(status);
|
||||
```
|
||||
|
||||
### 1.3 错误处理改进
|
||||
@@ -422,13 +424,13 @@ DROP TABLE IF EXISTS invitation_codes;
|
||||
## 五、开发体验改进
|
||||
|
||||
### 5.1 测试覆盖
|
||||
- [ ] **仅有一个基础编译测试**
|
||||
- 现状:`tests/integration_test.rs` 只有 `assert_eq!(2 + 2, 4)`
|
||||
- 改进:添加完整的测试套件
|
||||
- 类型:
|
||||
- 单元测试:工具函数、数据结构
|
||||
- 集成测试:API 端点
|
||||
- 数据库测试:CRUD 操作
|
||||
- [~] **基础测试不足**(2026-08-11 已补充单元测试)
|
||||
- 现状:原仅有 `tests/integration_test.rs` 的编译测试和套餐一致性测试
|
||||
- 已补充(`cargo test` 共 36 用例):
|
||||
- `src/auth.rs`:JWT 生成/验证回环、篡改拒绝、错误密钥拒绝、refresh token 随机性、临时 token 有效期
|
||||
- `src/handlers/payment.rs`:套餐定义、URL 解码(**修复了 UTF-8 乱码与吞字符两个真实 bug**)、支付宝表单解析(UTF-8/GBK)、RSA2 签名/验签回环(PEM + Base64 DER 密钥)、移动端 UA 检测、订单号唯一性
|
||||
- `src/rate_limiter.rs`:限流阈值、按客户端隔离、IP 提取(已有)
|
||||
- 待做:API 集成测试(需要测试数据库)
|
||||
|
||||
- [ ] **缺少 API 测试**
|
||||
- 需求:验证 API 行为
|
||||
@@ -1369,6 +1371,9 @@ async onRedeemCode() {
|
||||
|
||||
## 十四、公告系统
|
||||
|
||||
> **状态**:✅ 已实现(2026-05,`handlers/notifications.rs` + 迁移 `011_add_notifications.sql`,前端 `pkg-extra/notifications` 页面)
|
||||
> 下方为原始设计文档,保留供参考。
|
||||
|
||||
### 功能概述
|
||||
|
||||
公告系统用于向用户发送系统公告,支持管理员发布、编辑、删除公告,用户查看公告列表和详情。
|
||||
|
||||
Reference in New Issue
Block a user