feat():learning后台管理前端页面初始化

This commit is contained in:
yuj
2025-12-04 17:51:24 +08:00
commit 83a614bd75
97 changed files with 23324 additions and 0 deletions

34
src/types/auditLog.ts Normal file
View File

@@ -0,0 +1,34 @@
export interface AuditLog {
id: number;
operation_type: string;
operation_time: string;
operator_id: number;
operator_email: string;
target_type?: string | null;
target_id?: number | null;
target_email?: string | null;
operation_details?: Record<string, any> | null;
ip_address?: string | null;
user_agent?: string | null;
status?: string | null;
error_message?: string | null;
}
export interface AuditLogListRequest {
operation_type?: string;
operator_email?: string;
target_email?: string;
start_time?: string;
end_time?: string;
page?: number;
size?: number;
sort_by?: string;
sort_order?: 'asc' | 'desc';
}
export interface AuditLogListResponse {
list: AuditLog[];
total: number;
page: number;
size: number;
}

56
src/types/inviteCode.ts Normal file
View File

@@ -0,0 +1,56 @@
// 简化版邀请码类型定义
export interface InviteCode {
id: number;
code: string;
is_used: boolean;
client_id?: string;
client_label?: string;
email?: string;
user_level_id?: number;
user_level_name?: string;
expires_at?: string | null;
created_at: string;
invite_url?: string;
}
export interface InviteCodeListRequest {
code?: string;
is_used?: boolean;
start_time?: string;
end_time?: string;
page?: number;
size?: number;
}
export interface InviteCodeCreateRequest {
emails?: string[];
user_level_id?: number;
expires_at?: string;
client_id?: string; // 保留向后兼容
}
export interface InviteCodeUpdateRequest {
client_id?: string;
email?: string;
user_level_id?: number;
expires_at?: string;
}
export interface InviteCodeStatistics {
total: number;
used: number;
unused: number;
today_created: number;
}
export interface InviteCodeListResponse {
list: InviteCode[];
total: number;
}
// 客户端选项
export interface ClientOption {
key: string;
value: string;
label: string;
}

View File

@@ -0,0 +1,64 @@
export interface InviteCodeApplication {
id: number;
email: string;
reason?: string;
status: 'pending' | 'approved' | 'rejected';
invite_code_id?: number;
invite_code?: {
id: number;
code: string;
expires_at?: string;
};
reject_reason?: string;
approved_at?: string;
approved_by?: string;
email_sent_at?: string;
created_at: string;
updated_at: string;
}
export interface InviteCodeApplicationListRequest {
email?: string;
status?: 'pending' | 'approved' | 'rejected';
start_time?: string;
end_time?: string;
page?: number;
size?: number;
}
export interface InviteCodeApplicationListResponse {
list: InviteCodeApplication[];
total: number;
}
export interface InviteCodeApplicationCreateRequest {
email: string;
reason?: string;
}
export interface InviteCodeApplicationApproveRequest {
application_id: number;
valid_days?: number; // 有效期天数默认7天
}
export interface InviteCodeApplicationRejectRequest {
application_id: number;
reject_reason?: string;
}
export interface InviteCodeApplicationBatchApproveRequest {
application_ids: number[];
valid_days?: number;
}
export interface InviteCodeApplicationBatchRejectRequest {
application_ids: number[];
reject_reason?: string;
}
export interface InviteCodeApplicationStatistics {
total_pending: number; // 待处理数量
total_approved: number; // 已通过数量
total_rejected: number; // 已拒绝数量
today_applied: number; // 今日申请数量
}

67
src/types/mcpProvider.ts Normal file
View File

@@ -0,0 +1,67 @@
export interface MCPProvider {
id: string;
provider: string;
base_url: string;
auth?: string;
account?: string;
price_type: string;
price: number;
floating_ratio: number;
is_used: boolean;
status: string;
description?: string;
created_at: string;
updated_at: string;
}
export interface MCPProviderListRequest {
page?: number;
page_size?: number;
provider?: string;
status?: string;
is_used?: boolean;
}
export interface MCPProviderListResponse {
data: MCPProvider[];
total: number;
page: number;
size: number;
}
export interface MCPProviderCreateRequest {
provider: string;
base_url: string;
auth?: string;
account?: string;
price_type: string;
price: number;
floating_ratio?: number;
is_used?: boolean;
status?: string;
description?: string;
}
export interface MCPProviderUpdateRequest {
provider?: string;
base_url?: string;
auth?: string;
account?: string;
price_type?: string;
price?: number;
floating_ratio?: number;
is_used?: boolean;
status?: string;
description?: string;
}
export interface MCPProviderStatusRequest {
status: 'active' | 'inactive';
}
export interface MCPProviderIsUsedRequest {
is_used: boolean;
}

66
src/types/quota.ts Normal file
View File

@@ -0,0 +1,66 @@
// 配额历史查询请求
export interface QuotaHistoryRequest {
start_date: string; // 开始日期 (YYYY-MM-DD)
end_date: string; // 结束日期 (YYYY-MM-DD)
user_id?: string; // 用户ID (可选)
api_group?: string; // API组 (可选)
project_id?: string; // 项目ID (可选)
period?: string; // 周期: daily, monthly
group_by?: string[]; // 分组维度
}
// 配额历史数据项
export interface QuotaHistoryItem {
id: number;
user_id: string;
api_group: string;
project_id: string;
day: string;
account: string;
model: string;
quota_used: number;
created_at: string;
}
// 配额历史查询响应
export interface QuotaHistoryResponse {
success: boolean;
data: QuotaHistoryItem[];
message?: string;
}
// 统计概览数据
export interface QuotaStats {
totalQuota: number;
totalUsers: number;
totalProjects: number;
totalModels: number;
dailyUsage: Array<{
date: string;
quota: number;
}>;
topUsers: Array<{
user_id: string;
quota_used: number;
}>;
topModels: Array<{
model: string;
quota_used: number;
}>;
}
// 图表数据
export interface ChartData {
name: string;
value: number;
color?: string;
}
// 时间范围选项
export interface TimeRange {
label: string;
value: string;
days: number;
}

50
src/types/systemConfig.ts Normal file
View File

@@ -0,0 +1,50 @@
// 系统配置类型定义
export interface SystemConfig {
id: number;
key: string;
name: string;
value: string;
type: string;
desc: string;
status: number; // 1-启用 0-禁用
createdAt: string;
updatedAt: string;
deletedAt?: string | null;
}
export interface SystemConfigListRequest {
key?: string;
name?: string;
status?: number;
page?: number;
size?: number;
}
export interface SystemConfigListResponse {
code: number;
message: string;
data: SystemConfig[];
total: number;
page: number;
size: number;
}
export interface SystemConfigCreateRequest {
key: string;
name: string;
value: string;
type?: string;
desc?: string;
}
export interface SystemConfigUpdateRequest {
name: string;
value: string;
type?: string;
desc?: string;
}
export interface SystemConfigStatusRequest {
status: number;
}

View File

@@ -0,0 +1,55 @@
// 用户等级配置类型定义
export interface UserLevelConfig {
id: number;
level_name: string;
level_code: string;
project_limit: number;
coder_vm_limit: number; // Coder VM上限
browser_vm_limit: number; // Browser VM上限
process_limit: number; // 进程上限
description: string;
sort_order: number;
status: number; // 1-启用 0-禁用
created_at: string;
updated_at: string;
}
export interface UserLevelConfigListRequest {
level_name?: string;
status?: number;
page?: number;
size?: number;
}
export interface UserLevelConfigListResponse {
data: UserLevelConfig[];
total: number;
page: number;
size: number;
}
export interface UserLevelConfigCreateRequest {
level_name: string;
level_code: string;
project_limit: number;
coder_vm_limit: number;
browser_vm_limit: number;
process_limit: number;
description?: string;
sort_order?: number;
}
export interface UserLevelConfigUpdateRequest {
level_name: string;
project_limit: number;
coder_vm_limit: number;
browser_vm_limit: number;
process_limit: number;
description?: string;
sort_order?: number;
}
export interface UserLevelConfigStatusRequest {
status: number;
}

View File

@@ -0,0 +1,25 @@
export interface UserProjectQuotaItem {
id: number
user_id: string
project_limit: number
coder_vm_limit: number
browser_vm_limit: number
process_limit: number
enabled: boolean
description?: string
created_at?: string
updated_at?: string
}
export interface PageResponse<T> {
code: number
message: string
data: {
data?: T[]
items?: T[]
total: number
page: number
size: number
}
}