Initial project scaffold

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-05-09 14:36:35 +08:00
co-authored by Cursor
commit 6323e70e49
39 changed files with 8664 additions and 0 deletions
+163
View File
@@ -0,0 +1,163 @@
export type Permission = 'public' | 'basic' | 'creat' | 'power' | 'manager';
export interface AuthUser {
sub: string;
username: string;
role?: string[];
tenantId?: string | null;
sso_id?: string;
apiKeyId?: string;
apiKeySecret?: string;
apiKeyName?: string;
}
export interface IntegrationPlatform {
id: string;
provider: string;
platformKey: string;
name: string;
baseUrl?: string;
authType: string;
status: 'enabled' | 'disabled' | string;
priority: number;
defaultPricingMode: PricingMode;
defaultDiscountFactor: number;
config?: Record<string, unknown>;
createdAt: string;
updatedAt: string;
}
export type PricingMode = 'inherit' | 'inherit_discount' | 'custom';
export type RateLimitMetric =
| 'tpm_total'
| 'tpm_input'
| 'tpm_output'
| 'rpm'
| 'concurrent'
| 'queue_size';
export interface CatalogProvider {
id: string;
providerKey: string;
displayName: string;
providerType: string;
capabilitySchema?: Record<string, unknown>;
defaultRateLimitPolicy?: RateLimitPolicy;
status: 'active' | 'deprecated' | 'hidden' | string;
createdAt: string;
updatedAt: string;
}
export interface BaseModelCatalogItem {
id: string;
providerKey: string;
canonicalModelKey: string;
providerModelName: string;
modelType: 'chat' | 'image' | 'video' | 'audio' | 'embedding' | 'music' | 'digital_human' | 'model_3d' | string;
displayName: string;
capabilities?: Record<string, unknown>;
baseBillingConfig?: BillingConfig;
defaultRateLimitPolicy?: RateLimitPolicy;
pricingVersion: number;
status: 'active' | 'deprecated' | 'hidden' | string;
createdAt: string;
updatedAt: string;
}
export interface PricingRule {
id: string;
scopeType: 'base_model' | 'platform' | 'platform_model' | string;
scopeId?: string;
resourceType:
| 'text_input'
| 'text_output'
| 'text_total'
| 'image'
| 'video'
| 'audio'
| 'music'
| 'digital_human'
| 'model'
| string;
unit: '1k_tokens' | 'image' | '5s' | 'second' | 'character_1k' | 'item' | string;
basePrice: number;
currency: 'resource' | 'credit' | 'cny' | 'usd' | string;
baseWeight?: Record<string, unknown>;
dynamicWeight?: Record<string, unknown>;
createdAt: string;
updatedAt: string;
}
export interface RateLimitRule {
metric: RateLimitMetric;
limit: number;
windowSeconds?: number;
leaseTtlSeconds?: number;
consume?: 'fixed_window' | 'reserve_then_reconcile' | string;
}
export interface RateLimitPolicy {
rules?: RateLimitRule[];
[key: string]: unknown;
}
export interface BillingConfig {
resourceType?: string;
basePrice?: number;
baseWeight?: Record<string, unknown>;
dynamicWeight?: Record<string, unknown>;
[key: string]: unknown;
}
export interface PlatformModel {
id: string;
platformId: string;
baseModelId?: string;
provider?: string;
platformName?: string;
modelName: string;
modelAlias?: string;
modelType: 'chat' | 'image' | 'video' | 'audio' | 'embedding' | string;
displayName: string;
capabilityOverride?: Record<string, unknown>;
capabilities?: Record<string, unknown>;
pricingMode: PricingMode;
discountFactor?: number;
billingConfigOverride?: BillingConfig;
billingConfig?: BillingConfig;
enabled: boolean;
createdAt: string;
updatedAt: string;
}
export interface RateLimitWindow {
scopeType: string;
scopeKey: string;
metric: RateLimitMetric | string;
windowStart: string;
limitValue: number;
usedValue: number;
reservedValue: number;
resetAt: string;
updatedAt: string;
}
export interface GatewayTask {
id: string;
kind: string;
userId: string;
tenantId?: string;
model: string;
request?: Record<string, unknown>;
status: 'queued' | 'running' | 'succeeded' | 'failed' | 'cancelled' | string;
result?: Record<string, unknown>;
billings?: unknown[];
error?: string;
createdAt: string;
updatedAt: string;
}
export interface ListResponse<T> {
items: T[];
}