gitdataai/libs/api/route.rs
ZhenYi fb91f5a6c5 feat(admin): add admin panel with billing alerts and model sync
- Add libs/api/admin with admin API endpoints:
  sync models, workspace credit, billing alert check
- Add workspace_alert_config model and alert service
- Add Session::no_op() for background tasks without user context
- Add admin/ Next.js admin panel (AI models, billing, workspaces, audit)
- Start billing alert background task every 30 minutes
2026-04-19 20:48:59 +08:00

34 lines
1.3 KiB
Rust

use actix_web::web;
pub fn init_routes(cfg: &mut web::ServiceConfig) {
cfg.service(
web::scope("/ws")
.route("", web::get().to(crate::room::ws_universal::ws_universal))
.route("/rooms/{room_id}", web::get().to(crate::room::ws::ws_room))
.route(
"/projects/{project_id}",
web::get().to(crate::room::ws::ws_project),
),
);
cfg.service(
web::scope("/api")
// .configure(crate::admin::init_admin_routes)
.configure(crate::auth::init_auth_routes)
.configure(crate::git::init_git_routes)
.configure(crate::git::init_git_toplevel_routes)
.configure(crate::issue::init_issue_routes)
.configure(crate::project::init_project_routes)
.configure(crate::user::init_user_routes)
.configure(crate::pull_request::init_pull_request_routes)
.configure(crate::agent::init_agent_routes)
.configure(crate::workspace::init_workspace_routes)
.configure(crate::search::init_search_routes)
.configure(crate::room::init_room_routes)
.configure(crate::skill::init_skill_routes),
);
// SPA fallback — must be registered last so /api/* takes precedence
cfg.route("/{path:.*}", web::get().to(crate::dist::serve_frontend));
}