//! 模型配置模块 pub mod types; pub mod service; pub mod handlers; use axum::routing::{delete, get, post, put}; use crate::state::AppState; /// 模型配置路由 (需要认证) pub fn routes() -> axum::Router { axum::Router::new() // Providers .route("/api/v1/providers", get(handlers::list_providers).post(handlers::create_provider)) .route("/api/v1/providers/:id", get(handlers::get_provider).patch(handlers::update_provider).delete(handlers::delete_provider)) .route("/api/v1/providers/:id/models", get(handlers::list_provider_models)) // Provider Key Pool (admin only, moved from relay to avoid quota middleware) .route("/api/v1/providers/:provider_id/keys", get(crate::relay::handlers::list_provider_keys).post(crate::relay::handlers::add_provider_key)) .route("/api/v1/providers/:provider_id/keys/:key_id/toggle", put(crate::relay::handlers::toggle_provider_key)) .route("/api/v1/providers/:provider_id/keys/:key_id", delete(crate::relay::handlers::delete_provider_key)) // Models .route("/api/v1/models", get(handlers::list_models).post(handlers::create_model)) .route("/api/v1/models/:id", get(handlers::get_model).patch(handlers::update_model).delete(handlers::delete_model)) // Model Groups .route("/api/v1/model-groups", get(handlers::list_model_groups).post(handlers::create_model_group)) .route("/api/v1/model-groups/:id", get(handlers::get_model_group).patch(handlers::update_model_group).delete(handlers::delete_model_group)) .route("/api/v1/model-groups/:id/members", post(handlers::add_group_member)) .route("/api/v1/model-groups/:id/members/:mid", delete(handlers::remove_group_member)) // Account API Keys .route("/api/v1/keys", get(handlers::list_api_keys).post(handlers::create_api_key)) .route("/api/v1/keys/:id", delete(handlers::revoke_api_key)) .route("/api/v1/keys/:id/rotate", post(handlers::rotate_api_key)) // Usage .route("/api/v1/usage", get(handlers::get_usage)) }