feat: provider api_formats 可空继承、OpenAI 图片 edit/variation 与用量配额多项补强

- 鉴权: provider_api_keys.api_formats 改为可空,OAuth 托管 key 自动继承 provider endpoints 激活格式,相关 handler/测试同步更新
- 图片 planner: OpenAI 图片路由新增 edit/variation 操作并完善参数校验、响应合并与流式处理
- 用量: user me usage 返回区分 client_requested_stream/upstream_is_stream,前端 usage 列表筛选与展示增强
- 统计: stats_daily_model 新增 cache_creation_ephemeral_5m/1h tokens 字段与回填链路
- 配额/observability: quota repository 新增内存与 SQL 扩展,admin observability usage 字段扩充
- 其它: OAuth 导入/轮询收敛、provider 汇总与 pool admin 读写链路小修、新增 system_config 缓存与 provider template handler

Closes #318

Co-authored-by: Entropy.Xu <53283266+Entropy-Xu@users.noreply.github.com>
This commit is contained in:
fawney19
2026-04-23 14:42:51 +08:00
parent f55f22d2e8
commit fa328e18a1
128 changed files with 5583 additions and 690 deletions

View File

@@ -985,9 +985,11 @@ fn admin_provider_write_uses_specific_local_owners() {
for pattern in [
"mod create;",
"mod endpoint;",
"mod template;",
"mod update;",
"pub(crate) use self::create::build_admin_create_provider_record;",
"pub(crate) use self::endpoint::build_admin_fixed_provider_endpoint_record;",
"pub(crate) use self::template::{",
"pub(crate) use self::update::build_admin_update_provider_record;",
] {
assert!(
@@ -1044,7 +1046,7 @@ fn admin_provider_write_uses_specific_local_owners() {
for pattern in [
"pub(crate) fn build_admin_fixed_provider_endpoint_record(",
"admin_endpoint_signature_parts(",
"normalize_admin_base_url(base_url)?",
"normalize_admin_base_url(template.base_url)?",
] {
assert!(
write_provider_endpoint.contains(pattern),
@@ -1052,6 +1054,20 @@ fn admin_provider_write_uses_specific_local_owners() {
);
}
let write_provider_template = read_workspace_file(
"apps/aether-gateway/src/handlers/admin/provider/write/provider/template.rs",
);
for pattern in [
"pub(crate) async fn reconcile_admin_fixed_provider_template_endpoints(",
"pub(crate) fn apply_admin_fixed_provider_endpoint_template_overrides(",
"const FIXED_PROVIDER_TEMPLATE_METADATA_KEY: &str = \"_aether_fixed_provider_template\";",
] {
assert!(
write_provider_template.contains(pattern),
"handlers/admin/provider/write/provider/template.rs should own {pattern}"
);
}
let write_key_create =
read_workspace_file("apps/aether-gateway/src/handlers/admin/provider/write/keys/create.rs");
for pattern in [