Files
ele-HeiXiu/src/services/modules/index.ts
YoungestSongMo 59059caae7 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
2026-06-08 19:02:32 +08:00

64 lines
1.5 KiB
TypeScript

// ============================================================
// API 模块统一导出
// ============================================================
export {
fetchAnnouncements,
type Announcement,
type AnnouncementType,
type AnnouncementListResponse,
} from './announcement';
export {
AuthAPI,
type SendSMSRequestBody,
type RegisterRequestBody,
type RegisterResponseBody,
type LoginRequestBody,
type LoginResponseBody,
type RefreshTokenRequestBody,
type RefreshTokenResponseBody,
type UserInfoBody,
type ChangePasswordRequestBody,
type UsePhoneResetPasswordRequestBody,
} from './auth';
export {
fetchBanners,
type Banner,
type BannerListResponse,
} from './banner';
export {
ModelAPI,
MODEL_CATEGORIES,
MODEL_CATEGORY_LABELS,
CATEGORY_SLUG_MAP,
resolveCategoryLabel,
toCategorySlug,
type ModelsListReqeustParams,
type ModelsListResponseBody,
type ModelInfoRequestParams,
type ModelInfoResponseBody,
type ModelCategoryStringEnum,
type ParamSchemaItem,
} from './models';
export {
TaskAPI,
OutputTypeMap,
TaskStatusMap,
type OutputTypeString,
type TaskStatusString,
type TaskListRequestParams,
type CreatTaskRequestBody,
type ExportTaskCSVParams,
type ContentItem,
type ImageUiParams,
type VideoUiParams,
type AudioUiParams,
type TaskInfoItemResponseBody,
type TaskInfoDataResponseBody,
type TaskStatusResponseBody,
} from './task';