feat: 重构模型列表UI + 修复后端数据格式适配

模型列表 UI 重构:
- ModelSelector 从 Menu 折叠分组改为 Tabs 标签页 + 平铺列表
- 新增「全部模型」Tab + 各分类由 MODEL_CATEGORIES 数组控制顺序
- ModelItem 新增 hover 高亮效果 + 维护中模型禁用 + toast 提示
- 新增错误态(Result + 重试按钮)

后端数据格式适配:
- param_schema 类型从 string[] 改为 ParamSchemaItem[]({id, map_to, spec, ui})
- 修复 Form.Item 重复 key 报错(item.id 作 React key,item.map_to 作表单字段名)
- ModelsListResponseBody 字段类型收紧(model_type / category_name / quota_config)

数据层重构:
- useModelList 从 4 次并行请求改为 1 次全量拉取(后端 category 参数不可用)
- 分组键从 category_name 改为 model_type
- page_size 提升至 200

类型体系增强:
- type 别名改为 as const 数组推导(MODEL_CATEGORIES 单一数据源)
- 新增 CATEGORY_SLUG_MAP + resolveCategoryLabel + toCategorySlug 映射层
- 类型重命名 ModelCategory → ModelCategoryStringEnum
This commit is contained in:
2026-06-08 19:02:32 +08:00
parent a2741edf01
commit 59059caae7
6 changed files with 343 additions and 163 deletions

View File

@@ -204,7 +204,7 @@ export function TaskHistory() {
// 同步 context 分页 ↔ tableParams
useEffect(() => {
setTableParams((prev) => ({
setTableParams((prev:TableParams) => ({
...prev,
pagination: { current: taskPage, pageSize: taskPageSize },
}));
@@ -212,9 +212,9 @@ export function TaskHistory() {
// -------- 模型列表(用于模型列筛选选项 + 模型名→ID 映射)--------
// TODO: 与 ModelSelector 中的 useModelList 重复请求,后续统一缓存层
const { data: allModels } = useModelList();
const modelFilters = useMemo(() => {
const modelFilters:{text:string, value:string}[] = useMemo(() => {
if (!allModels) return [];
return allModels.map((m) => ({ text: m.name, value: m.id }));
}, [allModels]);