更新模型配置和订阅页面

- 修改模型模块的字段名称,从 `keyword` 更改为 `modelName`,以提高一致性。
- 添加模型类型和访问类型的选择功能,增强用户交互体验。
- 移除不必要的调试日志,优化代码整洁性。
- 更新订阅页面的错误处理逻辑,确保用户在加载失败时获得清晰反馈。
This commit is contained in:
2026-05-11 13:48:20 +08:00
parent 76420713fa
commit 0a42e700e2
9 changed files with 617 additions and 249 deletions

View File

@@ -3,7 +3,7 @@ import request from '/@/utils/request';
export interface ModelModuleListParams {
pageNum?: number;
pageSize?: number;
keyword?: string;
modelName?: string;
}
export interface ModelFormItem {
@@ -13,6 +13,54 @@ export interface ModelFormItem {
type: 'input' | 'number' | 'textarea' | 'switch' | string;
}
export interface ModelFormEntry {
key: string;
value: string;
}
/** 模型类型listType 接口项,字段名以后端为准,前端做兼容解析) */
export interface ModelTypeListItem {
id?: number | string;
typeId?: number | string;
modelsType?: number | string;
name?: string;
typeName?: string;
label?: string;
}
/** listType 标准返回data.type 为 Record<id, 名称>,如 { "1": "推理模型", "2": "图片模型" } */
export function normalizeModelTypeOptions(res: { data?: unknown }): Array<{ id: number | string; label: string }> {
const data = res?.data as { type?: Record<string, string> } | undefined;
const typeMap = data?.type;
if (typeMap && typeof typeMap === 'object' && !Array.isArray(typeMap)) {
return Object.entries(typeMap)
.map(([key, label]) => {
const n = Number(key);
const id = Number.isNaN(n) ? key : n;
return { id, label: String(label ?? '') };
})
.sort((a, b) => {
const na = Number(a.id);
const nb = Number(b.id);
if (!Number.isNaN(na) && !Number.isNaN(nb)) {
return na - nb;
}
return String(a.id).localeCompare(String(b.id));
});
}
/** 兼容旧结构data 为数组或 data.list */
const raw = res?.data;
const arr: ModelTypeListItem[] = Array.isArray(raw) ? raw : ((raw as { list?: ModelTypeListItem[] })?.list ?? []);
return arr
.map((item) => {
const id = item.id ?? item.typeId ?? item.modelsType;
const label = item.name ?? item.typeName ?? item.label ?? (id != null && id !== '' ? String(id) : '');
return { id: id as number | string, label: label || String(id) };
})
.filter((x) => x.id !== undefined && x.id !== null && x.id !== '');
}
export interface ModelModuleItem {
id: number | string;
tenantId?: number;
@@ -23,18 +71,28 @@ export interface ModelModuleItem {
deletedAt?: string | null;
isDeleted?: boolean;
modelName: string;
/** 模型类型 ID与 listType 返回项对应 */
modelsType?: number | string;
baseUrl: string;
route: string;
route?: string;
httpMethod: string;
apiKey?: string;
isPrivate?: number;
isChatModel?: number;
enabled: number;
maxConcurrency: number;
queueLimit: number;
timeoutMs: number;
timeoutMs?: number;
timeoutSeconds?: number;
expectedSeconds?: number;
retryTimes: number;
retryQueueMaxSeconds: number;
autoCleanSeconds: number;
remark?: string;
headMsg?: string;
form?: ModelFormEntry[] | Record<string, { value: string }>;
requestMapping?: Record<string, unknown>;
responseMapping?: Record<string, unknown>;
}
export interface ModelModuleListResponse {
@@ -48,17 +106,23 @@ export interface ModelModuleListResponse {
export interface CreateModelParams {
modelName: string;
modelsType: number;
/** 与 listType 返回的类型 id 一致,可能为数字或字符串 */
modelsType: number | string;
baseUrl: string;
route: string;
httpMethod: string;
httpMethod?: string;
headMsg?: string;
isPrivate: number;
enabled: number;
maxConcurrency: number;
queueLimit: number;
isChatModel: number;
apiKey?: string;
form: ModelFormEntry[];
requestMapping?: Record<string, unknown>;
responseMapping?: Record<string, unknown>;
maxConcurrency?: number;
queueLimit?: number;
timeoutSeconds: number;
expectedSeconds: number;
retryTimes: number;
retryTimes?: number;
retryQueueMaxSeconds: number;
autoCleanSeconds: number;
remark?: string;
@@ -93,6 +157,16 @@ export function getModelModuleList(params?: ModelModuleListParams) {
});
}
/**
* 获取模型类型列表(用于下拉与列表回显)
*/
export function getModelTypeList() {
return request({
url: '/model-gateway/model/listType',
method: 'get',
});
}
/**
* 新增模型配置
*/
@@ -110,7 +184,7 @@ export function addModelModule(data: CreateModelParams) {
export function updateModelModule(data: Partial<CreateModelParams> & { id: number | string }) {
return request({
url: '/model-gateway/model/updateModel',
method: 'post',
method: 'put',
data,
});
}
@@ -121,17 +195,18 @@ export function updateModelModule(data: Partial<CreateModelParams> & { id: numbe
export function deleteModelModule(id: number | string) {
return request({
url: '/model-gateway/model/deleteModel',
method: 'post',
method: 'delete',
data: { id },
});
}
/**
* 获取模型配置(按类型分组
* 获取单条模型配置详情(编辑用,需传 id
*/
export function getModelConfig() {
export function getModelModuleDetail(id: number | string) {
return request({
url: '/model-gateway/model/getModel',
method: 'get',
params: { id },
});
}