feat(web): add reusable admin form dialog

This commit is contained in:
2026-05-09 20:15:35 +08:00
parent c0335bd5d0
commit a5e66e79cd
49 changed files with 6013 additions and 1108 deletions
+85
View File
@@ -62,6 +62,7 @@ export interface IntegrationPlatform {
priority: number;
defaultPricingMode: PricingMode;
defaultDiscountFactor: number;
pricingRuleSetId?: string;
config?: Record<string, unknown>;
createdAt: string;
updatedAt: string;
@@ -80,15 +81,32 @@ export type RateLimitMetric =
export interface CatalogProvider {
id: string;
providerKey: string;
code: string;
displayName: string;
providerType: string;
iconPath?: string;
source?: 'gateway' | 'server-main' | 'sync' | 'server-main.integration-platform' | string;
capabilitySchema?: Record<string, unknown>;
defaultRateLimitPolicy?: RateLimitPolicy;
metadata?: Record<string, unknown>;
status: 'active' | 'deprecated' | 'hidden' | string;
createdAt: string;
updatedAt: string;
}
export interface CatalogProviderUpsertRequest {
providerKey: string;
code?: string;
displayName: string;
providerType?: string;
iconPath?: string;
source?: 'gateway' | 'server-main' | 'sync' | 'server-main.integration-platform' | string;
capabilitySchema?: Record<string, unknown>;
defaultRateLimitPolicy?: RateLimitPolicy;
metadata?: Record<string, unknown>;
status?: 'active' | 'deprecated' | 'hidden' | string;
}
export interface BaseModelCatalogItem {
id: string;
providerKey: string;
@@ -99,14 +117,32 @@ export interface BaseModelCatalogItem {
capabilities?: Record<string, unknown>;
baseBillingConfig?: BillingConfig;
defaultRateLimitPolicy?: RateLimitPolicy;
metadata?: Record<string, unknown>;
pricingVersion: number;
status: 'active' | 'deprecated' | 'hidden' | string;
createdAt: string;
updatedAt: string;
}
export interface BaseModelUpsertRequest {
providerKey: string;
canonicalModelKey?: string;
providerModelName: string;
modelType: string;
displayName?: string;
capabilities?: Record<string, unknown>;
baseBillingConfig?: BillingConfig;
defaultRateLimitPolicy?: RateLimitPolicy;
metadata?: Record<string, unknown>;
pricingVersion?: number;
status?: 'active' | 'deprecated' | 'hidden' | string;
}
export interface PricingRule {
id: string;
ruleSetId?: string;
ruleKey: string;
displayName: string;
scopeType: 'base_model' | 'platform' | 'platform_model' | string;
scopeId?: string;
resourceType:
@@ -125,10 +161,58 @@ export interface PricingRule {
currency: 'resource' | 'credit' | 'cny' | 'usd' | string;
baseWeight?: Record<string, unknown>;
dynamicWeight?: Record<string, unknown>;
calculatorType: 'token_usage' | 'unit_weight' | 'duration_weight' | string;
dimensionSchema?: Record<string, unknown>;
formulaConfig?: Record<string, unknown>;
priority: number;
status: 'active' | 'deprecated' | 'hidden' | string;
metadata?: Record<string, unknown>;
createdAt: string;
updatedAt: string;
}
export interface PricingRuleInput {
ruleKey?: string;
displayName?: string;
resourceType: string;
unit: string;
basePrice: number;
currency?: string;
baseWeight?: Record<string, unknown>;
dynamicWeight?: Record<string, unknown>;
calculatorType?: 'token_usage' | 'unit_weight' | 'duration_weight' | string;
dimensionSchema?: Record<string, unknown>;
formulaConfig?: Record<string, unknown>;
priority?: number;
status?: 'active' | 'deprecated' | 'hidden' | string;
metadata?: Record<string, unknown>;
}
export interface PricingRuleSet {
id: string;
ruleSetKey: string;
name: string;
description?: string;
category: 'default' | 'custom' | 'provider' | 'model' | string;
currency: 'resource' | 'credit' | 'cny' | 'usd' | string;
status: 'active' | 'deprecated' | 'hidden' | string;
metadata?: Record<string, unknown>;
rules?: PricingRule[];
createdAt: string;
updatedAt: string;
}
export interface PricingRuleSetUpsertRequest {
ruleSetKey: string;
name: string;
description?: string;
category?: string;
currency?: string;
status?: 'active' | 'deprecated' | 'hidden' | string;
metadata?: Record<string, unknown>;
rules: PricingRuleInput[];
}
export interface GatewayUser {
id: string;
userKey: string;
@@ -319,6 +403,7 @@ export interface PlatformModel {
capabilities?: Record<string, unknown>;
pricingMode: PricingMode;
discountFactor?: number;
pricingRuleSetId?: string;
billingConfigOverride?: BillingConfig;
billingConfig?: BillingConfig;
enabled: boolean;