refactor: 拆分 system.rs 大文件,将 email_templates/proxy_errors/system_config 下沉到 shared 层

- 删除 1666 行的 admin/system/shared/system.rs,按职责拆分到独立模块
- 新增 handlers/shared/email_templates.rs 和 system_config_values.rs 存放跨层共用的模板/配置工具函数
- 新增 admin/system/shared/email_templates.rs 存放 admin 专用的模板操作逻辑
- 新增 admin/shared/proxy_errors.rs 存放 build_proxy_error_response
- 清理 public/system_modules_helpers 中不属于 public 层的导出
- 新增架构测试守护模块归属边界
This commit is contained in:
fawney19
2026-04-07 08:19:26 +08:00
parent 5d96d6673b
commit 29055c575f
27 changed files with 814 additions and 1994 deletions

View File

@@ -1,8 +1,10 @@
mod paths;
mod payloads;
mod proxy_errors;
pub(crate) use self::paths::*;
pub(crate) use self::payloads::*;
pub(crate) use self::proxy_errors::build_proxy_error_response;
pub(crate) use crate::handlers::shared::{
attach_admin_audit_response, build_admin_provider_key_response,
decrypt_catalog_secret_with_fallbacks, default_provider_key_status_snapshot,

View File

@@ -0,0 +1,27 @@
use axum::{
body::Body,
http,
response::{IntoResponse, Response},
Json,
};
use serde_json::json;
pub(crate) fn build_proxy_error_response(
status: http::StatusCode,
error_type: &str,
message: impl Into<String>,
details: Option<serde_json::Value>,
) -> Response<Body> {
let message = message.into();
let mut error = serde_json::Map::new();
error.insert("type".to_string(), json!(error_type));
error.insert("message".to_string(), json!(message));
if let Some(details) = details {
error.insert("details".to_string(), details);
}
(
status,
Json(json!({ "error": serde_json::Value::Object(error) })),
)
.into_response()
}