cap 与系统信息

This commit is contained in:
ryan
2026-06-08 09:28:12 +08:00
parent 9d0f9f0576
commit 72d72810b2
33 changed files with 3324 additions and 98 deletions
@@ -11,6 +11,7 @@ import type {
ListUsersRequest,
ListUsersResponse,
SystemConfig,
SystemStatus,
TaskExecution,
TaskMeta,
TaskTypeResponse,
@@ -318,4 +319,14 @@ export class AdminService extends BaseService {
static async createUser(request: CreateUserRequest): Promise<AdminUser> {
return this.post<AdminUser>('/users', request);
}
/**
* 获取系统状态
* @returns 系统状态指标数据
* @throws {UnauthorizedError} 当未登录时
* @throws {ForbiddenError} 当无管理员权限时
*/
static async getSystemStatus(): Promise<SystemStatus> {
return this.get<SystemStatus>('/status');
}
}
+1
View File
@@ -38,4 +38,5 @@ export type {
ListUsersRequest,
ListUsersResponse,
UpdateUserStatusRequest,
SystemStatus,
} from './types';
+34
View File
@@ -254,3 +254,37 @@ export interface AuthSourceRequest {
export interface ToggleAuthSourceRequest {
is_active: boolean;
}
/**
* 系统状态信息
*/
export interface SystemStatus {
uptime: string;
num_goroutine: number;
alloc: string;
total_alloc: string;
sys: string;
lookups: number;
mallocs: number;
frees: number;
heap_alloc: string;
heap_sys: string;
heap_idle: string;
heap_inuse: string;
heap_released: string;
heap_objects: number;
stack_inuse: string;
stack_sys: string;
mspan_inuse: string;
mspan_sys: string;
mcache_inuse: string;
mcache_sys: string;
buck_hash_sys: string;
gc_sys: string;
other_sys: string;
next_gc: string;
last_gc_time: string;
pause_total_ns: string;
last_pause: string;
num_gc: number;
}
+2 -2
View File
@@ -103,8 +103,8 @@ export class AuthService extends BaseService {
await this.get<void>('/oauth/logout');
}
static async login(request: LoginRequest): Promise<User> {
return this.post<User>('/user/login', request);
static async login(request: LoginRequest, headers?: Record<string, string>): Promise<User> {
return this.post<User>('/user/login', request, headers ? { headers } as any : undefined);
}
static async register(request: RegisterRequest): Promise<User> {
+4
View File
@@ -16,4 +16,8 @@ export interface PublicConfigResponse {
oidc_login_enabled: boolean;
/** 每个用户最大 API Key 数量 */
max_api_keys_per_user: number;
/** 是否启用 Cap 人机验证 */
cap_login_enabled: boolean;
/** 是否自动解题 */
cap_auto_solve: boolean;
}
+11 -6
View File
@@ -1,16 +1,16 @@
import axios, { AxiosError, AxiosResponse, CancelTokenSource, InternalAxiosRequestConfig } from 'axios';
import { toast } from 'sonner';
import { apiConfig } from './config';
import axios, {AxiosError, AxiosResponse, CancelTokenSource, InternalAxiosRequestConfig} from 'axios';
import {toast} from 'sonner';
import {apiConfig} from './config';
import {
ApiErrorBase,
NetworkError,
TimeoutError,
ForbiddenError,
NetworkError,
NotFoundError,
ServerError,
TimeoutError,
ValidationError,
} from './errors';
import { ApiError, ApiResponse } from './types';
import {ApiError, ApiResponse} from './types';
/**
* API 客户端实例
@@ -102,6 +102,11 @@ apiClient.interceptors.response.use(
cancelTokens.delete(requestKey);
pendingRequests.delete(requestKey);
const resData = response.data as any;
if (resData && resData.error_msg) {
return Promise.reject(new ApiErrorBase(resData.error_msg));
}
return response;
},
(error: AxiosError<ApiError>) => {
+1
View File
@@ -105,6 +105,7 @@ export type {
ListUsersRequest,
ListUsersResponse,
UpdateUserStatusRequest,
SystemStatus,
} from './admin';
// 用户服务