fix: 修复账号批量操作快捷多选不生效和今日 Token 不准确 (#328)

* fix(pool): 修复账号批量操作快捷多选不生效

- 解析号池账号列表接口的 quick_selectors 查询参数
- 列表查询复用现有快捷筛选匹配逻辑
- 支持冷却列表与普通列表的快捷筛选后分页
- 更新架构测试中的 pool admin helper 边界断言

* fix(dashboard): 今日 Token 改为按分项汇总口径展示

- /api/dashboard/stats 的 today.tokens 改为 输入+输出+写缓存+读缓存
- “今日 Token”卡片 value 与 subValue 口径保持一致
- 同步更新 dashboard 相关测试断言
This commit is contained in:
AAEE86
2026-04-24 18:36:38 +08:00
committed by GitHub
parent 3cc54deb9c
commit 4618184516
6 changed files with 91 additions and 11 deletions

View File

@@ -858,6 +858,7 @@ fn admin_provider_pool_admin_mod_stays_thin() {
"struct AdminPoolResolveSelectionRequest",
"fn parse_admin_pool_page(",
"fn parse_admin_pool_page_size(",
"fn parse_admin_pool_quick_selectors(",
"fn parse_admin_pool_search(",
"fn parse_admin_pool_status_filter(",
"fn admin_pool_provider_id_from_path(",
@@ -880,6 +881,7 @@ fn admin_provider_pool_admin_mod_stays_thin() {
"pub(crate) use aether_admin::provider::pool::AdminPoolResolveSelectionRequest;",
"pub(crate) fn parse_admin_pool_page(",
"pub(crate) fn parse_admin_pool_page_size(",
"pub(crate) fn parse_admin_pool_quick_selectors(",
"pub(crate) fn parse_admin_pool_search(",
"pub(crate) fn parse_admin_pool_status_filter(",
"pub(crate) fn admin_pool_provider_id_from_path(",

View File

@@ -157,7 +157,7 @@ async fn gateway_handles_dashboard_stats_locally_without_proxying_upstream() {
assert_eq!(response.status(), StatusCode::OK);
let payload: serde_json::Value = response.json().await.expect("json body should parse");
assert_eq!(payload["today"]["requests"], 1);
assert_eq!(payload["today"]["tokens"], 150);
assert_eq!(payload["today"]["tokens"], 160);
assert_eq!(payload["api_keys"]["total"], 2);
assert_eq!(payload["api_keys"]["active"], 1);
assert_eq!(payload["stats"][3]["subValue"], json!("输入 240 / 输出 60"));
@@ -405,10 +405,10 @@ async fn gateway_handles_admin_dashboard_stats_locally_without_proxying_upstream
assert_eq!(response.status(), StatusCode::OK);
let payload: serde_json::Value = response.json().await.expect("json body should parse");
assert_eq!(payload["today"]["requests"], 2);
assert_eq!(payload["today"]["tokens"], 16_000);
assert_eq!(payload["today"]["tokens"], 17_450);
assert_eq!(payload["today"]["cost"], json!(2.5));
assert_eq!(payload["stats"][0]["value"], json!("2"));
assert_eq!(payload["stats"][1]["value"], json!("16K"));
assert_eq!(payload["stats"][1]["value"], json!("17.4K"));
assert_eq!(
payload["stats"][1]["subValue"],
json!("输入 12.1K / 输出 3.1K · 写缓存 1.25K / 读缓存 1K")