Merge branch 'main' into test

This commit is contained in:
yangjianbo
2026-02-03 22:48:04 +08:00
235 changed files with 25155 additions and 7955 deletions

View File

@@ -55,6 +55,7 @@ export interface RegisterRequest {
verify_code?: string
turnstile_token?: string
promo_code?: string
invitation_code?: string
}
export interface SendVerifyCodeRequest {
@@ -71,6 +72,8 @@ export interface PublicSettings {
registration_enabled: boolean
email_verify_enabled: boolean
promo_code_enabled: boolean
password_reset_enabled: boolean
invitation_code_enabled: boolean
turnstile_enabled: boolean
turnstile_site_key: string
site_name: string
@@ -81,6 +84,8 @@ export interface PublicSettings {
doc_url: string
home_content: string
hide_ccs_import_button: boolean
purchase_subscription_enabled: boolean
purchase_subscription_url: string
linuxdo_oauth_enabled: boolean
version: string
}
@@ -126,6 +131,81 @@ export interface UpdateSubscriptionRequest {
is_active?: boolean
}
// ==================== Announcement Types ====================
export type AnnouncementStatus = 'draft' | 'active' | 'archived'
export type AnnouncementConditionType = 'subscription' | 'balance'
export type AnnouncementOperator = 'in' | 'gt' | 'gte' | 'lt' | 'lte' | 'eq'
export interface AnnouncementCondition {
type: AnnouncementConditionType
operator: AnnouncementOperator
group_ids?: number[]
value?: number
}
export interface AnnouncementConditionGroup {
all_of?: AnnouncementCondition[]
}
export interface AnnouncementTargeting {
any_of?: AnnouncementConditionGroup[]
}
export interface Announcement {
id: number
title: string
content: string
status: AnnouncementStatus
targeting: AnnouncementTargeting
starts_at?: string
ends_at?: string
created_by?: number
updated_by?: number
created_at: string
updated_at: string
}
export interface UserAnnouncement {
id: number
title: string
content: string
starts_at?: string
ends_at?: string
read_at?: string
created_at: string
updated_at: string
}
export interface CreateAnnouncementRequest {
title: string
content: string
status?: AnnouncementStatus
targeting: AnnouncementTargeting
starts_at?: number
ends_at?: number
}
export interface UpdateAnnouncementRequest {
title?: string
content?: string
status?: AnnouncementStatus
targeting?: AnnouncementTargeting
starts_at?: number
ends_at?: number
}
export interface AnnouncementUserReadStatus {
user_id: number
email: string
username: string
balance: number
eligible: boolean
read_at?: string
}
// ==================== Proxy Node Types ====================
export interface ProxyNode {
@@ -342,6 +422,8 @@ export interface CreateGroupRequest {
sora_video_price_per_request_hd?: number | null
claude_code_only?: boolean
fallback_group_id?: number | null
// 从指定分组复制账号
copy_accounts_from_group_ids?: number[]
}
export interface UpdateGroupRequest {
@@ -364,6 +446,7 @@ export interface UpdateGroupRequest {
sora_video_price_per_request_hd?: number | null
claude_code_only?: boolean
fallback_group_id?: number | null
copy_accounts_from_group_ids?: number[]
}
// ==================== Account & Proxy Types ====================
@@ -491,6 +574,9 @@ export interface Account {
temp_unschedulable_until: string | null
temp_unschedulable_reason: string | null
// Antigravity scope 级限流状态
scope_rate_limits?: Record<string, { reset_at: string; remaining_sec: number }>
// Session window fields (5-hour window)
session_window_start: string | null
session_window_end: string | null
@@ -633,7 +719,7 @@ export interface UpdateProxyRequest {
// ==================== Usage & Redeem Types ====================
export type RedeemCodeType = 'balance' | 'concurrency' | 'subscription'
export type RedeemCodeType = 'balance' | 'concurrency' | 'subscription' | 'invitation'
export interface UsageLog {
id: number
@@ -642,6 +728,7 @@ export interface UsageLog {
account_id: number | null
request_id: string
model: string
reasoning_effort?: string | null
group_id: number | null
subscription_id: number | null
@@ -1120,3 +1207,52 @@ export interface UpdatePromoCodeRequest {
expires_at?: number | null
notes?: string
}
// ==================== TOTP (2FA) Types ====================
export interface TotpStatus {
enabled: boolean
enabled_at: number | null // Unix timestamp in seconds
feature_enabled: boolean
}
export interface TotpSetupRequest {
email_code?: string
password?: string
}
export interface TotpSetupResponse {
secret: string
qr_code_url: string
setup_token: string
countdown: number
}
export interface TotpEnableRequest {
totp_code: string
setup_token: string
}
export interface TotpEnableResponse {
success: boolean
}
export interface TotpDisableRequest {
email_code?: string
password?: string
}
export interface TotpVerificationMethod {
method: 'email' | 'password'
}
export interface TotpLoginResponse {
requires_2fa: boolean
temp_token?: string
user_email_masked?: string
}
export interface TotpLogin2FARequest {
temp_token: string
totp_code: string
}