refactor: 拆分 admin handler 大文件为模块目录,消除 shared.rs 反模式

- endpoint_keys/pool/architecture 等大文件拆分为独立模块目录
- 删除 crud/query/strategy/system 中的 shared.rs,内容归位到各自模块
- endpoints_admin/models/oauth/write 等模块拆出 payloads/responses/support 子文件
- system/core 下多个 *_routes.rs 合并到 system_routes.rs
- 更新 refactor-execution-plan 文档进度
This commit is contained in:
fawney19
2026-04-07 12:15:19 +08:00
parent 29055c575f
commit 4fb9882b54
109 changed files with 8151 additions and 7047 deletions
@@ -4,8 +4,9 @@ use axum::body::{Body, Bytes};
use axum::http::Response;
mod models;
mod payload;
mod response;
mod routes;
mod shared;
pub(crate) async fn maybe_build_local_admin_provider_query_response(
state: &AppState,
@@ -1,6 +1,6 @@
use super::shared::{
use super::payload::{provider_query_extract_api_key_id, provider_query_extract_provider_id};
use super::response::{
build_admin_provider_query_bad_request_response, build_admin_provider_query_not_found_response,
provider_query_extract_api_key_id, provider_query_extract_provider_id,
ADMIN_PROVIDER_QUERY_API_KEY_NOT_FOUND_DETAIL, ADMIN_PROVIDER_QUERY_NO_ACTIVE_API_KEY_DETAIL,
ADMIN_PROVIDER_QUERY_NO_LOCAL_MODELS_DETAIL, ADMIN_PROVIDER_QUERY_PROVIDER_ID_REQUIRED_DETAIL,
ADMIN_PROVIDER_QUERY_PROVIDER_NOT_FOUND_DETAIL,
@@ -1,46 +1,10 @@
use axum::{
body::{Body, Bytes},
http,
response::{IntoResponse, Response},
Json,
};
use axum::body::Bytes;
use axum::response::{IntoResponse, Response};
use serde_json::json;
pub(super) const ADMIN_PROVIDER_QUERY_INVALID_JSON_DETAIL: &str = "Invalid JSON request body";
pub(super) const ADMIN_PROVIDER_QUERY_PROVIDER_ID_REQUIRED_DETAIL: &str = "provider_id is required";
pub(super) const ADMIN_PROVIDER_QUERY_MODEL_REQUIRED_DETAIL: &str = "model is required";
pub(super) const ADMIN_PROVIDER_QUERY_FAILOVER_MODELS_REQUIRED_DETAIL: &str =
"failover_models should not be empty";
pub(super) const ADMIN_PROVIDER_QUERY_PROVIDER_NOT_FOUND_DETAIL: &str = "Provider not found";
pub(super) const ADMIN_PROVIDER_QUERY_API_KEY_NOT_FOUND_DETAIL: &str = "API Key not found";
pub(super) const ADMIN_PROVIDER_QUERY_NO_ACTIVE_API_KEY_DETAIL: &str =
"No active API Key found for this provider";
pub(super) const ADMIN_PROVIDER_QUERY_NO_LOCAL_MODELS_DETAIL: &str =
"No models available from local provider catalog";
pub(super) fn build_admin_provider_query_bad_request_response(
detail: &'static str,
) -> Response<Body> {
(
http::StatusCode::BAD_REQUEST,
Json(json!({ "detail": detail })),
)
.into_response()
}
pub(super) fn build_admin_provider_query_not_found_response(
detail: &'static str,
) -> Response<Body> {
(
http::StatusCode::NOT_FOUND,
Json(json!({ "detail": detail })),
)
.into_response()
}
pub(super) fn parse_admin_provider_query_body(
request_body: Option<&Bytes>,
) -> Result<serde_json::Value, Response<Body>> {
) -> Result<serde_json::Value, Response<axum::body::Body>> {
let Some(raw_body) = request_body else {
return Ok(json!({}));
};
@@ -48,7 +12,9 @@ pub(super) fn parse_admin_provider_query_body(
return Ok(json!({}));
}
serde_json::from_slice::<serde_json::Value>(raw_body).map_err(|_| {
build_admin_provider_query_bad_request_response(ADMIN_PROVIDER_QUERY_INVALID_JSON_DETAIL)
super::response::build_admin_provider_query_bad_request_response(
super::response::ADMIN_PROVIDER_QUERY_INVALID_JSON_DETAIL,
)
})
}
@@ -0,0 +1,39 @@
use axum::{
body::Body,
http,
response::{IntoResponse, Response},
Json,
};
use serde_json::json;
pub(super) const ADMIN_PROVIDER_QUERY_INVALID_JSON_DETAIL: &str = "Invalid JSON request body";
pub(super) const ADMIN_PROVIDER_QUERY_PROVIDER_ID_REQUIRED_DETAIL: &str = "provider_id is required";
pub(super) const ADMIN_PROVIDER_QUERY_MODEL_REQUIRED_DETAIL: &str = "model is required";
pub(super) const ADMIN_PROVIDER_QUERY_FAILOVER_MODELS_REQUIRED_DETAIL: &str =
"failover_models should not be empty";
pub(super) const ADMIN_PROVIDER_QUERY_PROVIDER_NOT_FOUND_DETAIL: &str = "Provider not found";
pub(super) const ADMIN_PROVIDER_QUERY_API_KEY_NOT_FOUND_DETAIL: &str = "API Key not found";
pub(super) const ADMIN_PROVIDER_QUERY_NO_ACTIVE_API_KEY_DETAIL: &str =
"No active API Key found for this provider";
pub(super) const ADMIN_PROVIDER_QUERY_NO_LOCAL_MODELS_DETAIL: &str =
"No models available from local provider catalog";
pub(super) fn build_admin_provider_query_bad_request_response(
detail: &'static str,
) -> Response<Body> {
(
http::StatusCode::BAD_REQUEST,
Json(json!({ "detail": detail })),
)
.into_response()
}
pub(super) fn build_admin_provider_query_not_found_response(
detail: &'static str,
) -> Response<Body> {
(
http::StatusCode::NOT_FOUND,
Json(json!({ "detail": detail })),
)
.into_response()
}
@@ -3,11 +3,14 @@ use super::models::{
build_admin_provider_query_test_model_failover_response,
build_admin_provider_query_test_model_response,
};
use super::shared::{
build_admin_provider_query_bad_request_response, parse_admin_provider_query_body,
provider_query_extract_failover_models, provider_query_extract_model,
provider_query_extract_provider_id, provider_query_extract_request_id,
provider_query_payload_keys, ADMIN_PROVIDER_QUERY_FAILOVER_MODELS_REQUIRED_DETAIL,
use super::payload::{
parse_admin_provider_query_body, provider_query_extract_failover_models,
provider_query_extract_model, provider_query_extract_provider_id,
provider_query_extract_request_id, provider_query_payload_keys,
};
use super::response::{
build_admin_provider_query_bad_request_response,
ADMIN_PROVIDER_QUERY_FAILOVER_MODELS_REQUIRED_DETAIL,
ADMIN_PROVIDER_QUERY_MODEL_REQUIRED_DETAIL, ADMIN_PROVIDER_QUERY_PROVIDER_ID_REQUIRED_DETAIL,
};
use crate::control::GatewayPublicRequestContext;