You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

config.tsx 7.7 kB

11 months ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. import KFIcon from '@/components/KFIcon';
  2. import { CommonTabKeys } from '@/enums';
  3. import {
  4. addDatasetVersion,
  5. addModelVersion,
  6. compareDatasetVersion,
  7. compareModelVersion,
  8. deleteDataset,
  9. deleteDatasetVersion,
  10. deleteModel,
  11. deleteModelVersion,
  12. editDatasetVersion,
  13. editModelVersion,
  14. getDatasetInfo,
  15. getDatasetList,
  16. getDatasetNextVersionReq,
  17. getDatasetVersionList,
  18. getModelInfo,
  19. getModelList,
  20. getModelNextVersionReq,
  21. getModelVersionList,
  22. publishDatasetReq,
  23. publishModelReq,
  24. } from '@/services/dataset/index.js';
  25. import { limitUploadFileType } from '@/utils/ui';
  26. import type { TabsProps, UploadFile } from 'antd';
  27. export enum ResourceType {
  28. Model = 'Model', // 模型
  29. Dataset = 'Dataset', // 数据集
  30. }
  31. export enum DataSource {
  32. AutoExport = 'auto_export', // 自动导出
  33. HandExport = 'hand_export', // 手动导出
  34. Create = 'add', // 新增
  35. LabelStudioExport = 'label_studio_export', // LabelStudio 导出
  36. }
  37. type ResourceTypeInfo = {
  38. getList: (params: any) => Promise<any>; // 获取资源列表
  39. getVersions: (params: any) => Promise<any>; // 获取版本列表
  40. deleteRecord: (params: any) => Promise<any>; // 删除
  41. addVersion: (params: any) => Promise<any>; // 新增版本
  42. editVersion: (params: any) => Promise<any>; // 编辑版本
  43. deleteVersion: (params: any) => Promise<any>; // 删除版本
  44. getInfo: (params: any) => Promise<any>; // 获取详情
  45. compareVersion: (params: any) => Promise<any>; // 版本对比
  46. getNextVersion: (params: any) => Promise<any>; // 获取下一个版本
  47. publish: (params: any) => Promise<any>; // 发布
  48. name: string; // 名称
  49. typeParamKey: 'data_type' | 'model_type'; // 类型参数名称,获取资源列表接口使用
  50. tagParamKey: 'data_tag' | 'model_tag'; // 标签参数名称,获取资源列表接口使用
  51. filePropKey: 'dataset_version_vos' | 'model_version_vos'; // 文件列表属性
  52. sourceParamKey: 'dataset_source' | 'model_source'; // 来源参数名称
  53. tabItems: TabsProps['items']; // tab 列表
  54. typeTitle: string; // 类型标题
  55. tagTitle: string; // 标签标题
  56. typeValue: number; // 从 getAssetIcon 接口获取特定值的数据为 type 分类 (category_id === typeValue)
  57. tagValue: number; // 从 getAssetIcon 接口获取特定值的数据为 tag 分类(category_id === tagValue)
  58. prefix: string; // 图片资源、详情 url 的前缀
  59. deleteModalTitle: string; // 删除弹框的title
  60. addBtnTitle: string; // 新增按钮的title
  61. uploadAction: string; // 上传接口 url
  62. uploadAccept?: string; // 上传文件类型
  63. beforeUpload?: (file: UploadFile) => boolean | string;
  64. downloadAllAction: string; // 批量下载接口 url
  65. downloadSingleAction: string; // 单个下载接口 url
  66. };
  67. export const resourceConfig: Record<ResourceType, ResourceTypeInfo> = {
  68. [ResourceType.Dataset]: {
  69. getList: getDatasetList,
  70. getVersions: getDatasetVersionList,
  71. deleteRecord: deleteDataset,
  72. addVersion: addDatasetVersion,
  73. editVersion: editDatasetVersion,
  74. deleteVersion: deleteDatasetVersion,
  75. getInfo: getDatasetInfo,
  76. compareVersion: compareDatasetVersion,
  77. getNextVersion: getDatasetNextVersionReq,
  78. publish: publishDatasetReq,
  79. name: '数据集',
  80. typeParamKey: 'data_type',
  81. tagParamKey: 'data_tag',
  82. filePropKey: 'dataset_version_vos',
  83. sourceParamKey: 'dataset_source',
  84. tabItems: [
  85. {
  86. key: CommonTabKeys.Public,
  87. label: '数据广场',
  88. icon: <KFIcon type="icon-shujuguangchang" />,
  89. },
  90. {
  91. key: CommonTabKeys.Private,
  92. label: '个人数据',
  93. icon: <KFIcon type="icon-gerenshuju" />,
  94. },
  95. ],
  96. typeTitle: '分类',
  97. tagTitle: '研究方向/应用领域',
  98. typeValue: 1,
  99. tagValue: 2,
  100. prefix: 'dataset',
  101. deleteModalTitle: '确定删除该条数据集实例吗?',
  102. addBtnTitle: '新建数据集',
  103. uploadAction: '/api/mmp/newdataset/upload',
  104. uploadAccept: '.zip,.tgz',
  105. beforeUpload: limitUploadFileType('zip,tgz'),
  106. downloadAllAction: '/api/mmp/newdataset/downloadAllFiles',
  107. downloadSingleAction: '/api/mmp/newdataset/downloadSingleFile',
  108. },
  109. [ResourceType.Model]: {
  110. getList: getModelList,
  111. getVersions: getModelVersionList,
  112. deleteRecord: deleteModel,
  113. addVersion: addModelVersion,
  114. editVersion: editModelVersion,
  115. deleteVersion: deleteModelVersion,
  116. getInfo: getModelInfo,
  117. compareVersion: compareModelVersion,
  118. getNextVersion: getModelNextVersionReq,
  119. publish: publishModelReq,
  120. name: '模型',
  121. typeParamKey: 'model_type',
  122. tagParamKey: 'model_tag',
  123. filePropKey: 'model_version_vos',
  124. sourceParamKey: 'model_source',
  125. tabItems: [
  126. {
  127. key: CommonTabKeys.Public,
  128. label: '模型广场',
  129. icon: <KFIcon type="icon-moxingguangchang" />,
  130. },
  131. {
  132. key: CommonTabKeys.Private,
  133. label: '个人模型',
  134. icon: <KFIcon type="icon-gerenmoxing" />,
  135. },
  136. ],
  137. typeTitle: '模型框架',
  138. tagTitle: '模型能力',
  139. typeValue: 3,
  140. tagValue: 4,
  141. prefix: 'model',
  142. deleteModalTitle: '确定删除该条模型实例吗?',
  143. addBtnTitle: '新建模型',
  144. uploadAction: '/api/mmp/newmodel/upload',
  145. uploadAccept: undefined,
  146. downloadAllAction: '/api/mmp/newmodel/downloadAllFiles',
  147. downloadSingleAction: '/api/mmp/newmodel/downloadSingleFile',
  148. },
  149. };
  150. // 分类数据
  151. export type CategoryData = {
  152. id: number;
  153. category_id: number;
  154. name: string;
  155. path: string;
  156. };
  157. // 数据集、模型列表数据
  158. export interface ResourceData {
  159. resourceType: ResourceType.Dataset | ResourceType.Model; // 用于 ts 类型判断
  160. id: number;
  161. name: string;
  162. identifier: string;
  163. owner: string;
  164. version: string;
  165. is_public: boolean;
  166. description?: string;
  167. create_by?: string;
  168. update_time?: string;
  169. time_ago?: string;
  170. version_desc?: string;
  171. usage?: string;
  172. relative_paths?: string;
  173. train_task?: TrainTask; // 训练任务
  174. praises_count: number; // 点赞数
  175. praised: boolean; // 是否点赞
  176. full_last_update_time: string; // 完整的更新时间
  177. }
  178. // 数据集数据
  179. export interface DatasetData extends ResourceData {
  180. resourceType: ResourceType.Dataset; // 用于区别类型
  181. data_type?: string; // 数据集分类
  182. data_tag?: string; // 研究方向
  183. processing_code?: ProjectDependency; // 处理代码
  184. dataset_source?: string; // 数据来源
  185. dataset_version_vos?: ResourceFileData[];
  186. }
  187. // 模型数据
  188. export interface ModelData extends ResourceData {
  189. resourceType: ResourceType.Model; // 用于区别类型
  190. model_type?: string; // 模型框架
  191. model_tag?: string; // 模型能力
  192. image?: string; // 训练镜像
  193. code?: string; // 训练镜像
  194. train_datasets?: DatasetData[]; // 训练数据集
  195. test_datasets?: DatasetData[]; // 测试数据集
  196. params?: Record<string, string>; // 参数
  197. metrics?: Record<string, string>; // 指标
  198. project_depency?: ProjectDependency; // 项目依赖
  199. model_source?: string; // 模型来源
  200. model_version_vos?: ResourceFileData[];
  201. }
  202. // 版本数据
  203. export type ResourceVersionData = {
  204. name: string;
  205. http_url: string;
  206. tar_url: string;
  207. zip_url: string;
  208. };
  209. // 版本文件数据
  210. export type ResourceFileData = {
  211. file_name: string;
  212. file_size: string;
  213. url: string;
  214. update_time?: string;
  215. };
  216. // 训练任务
  217. export type TrainTask = {
  218. ins_id: number; // 实例id
  219. name: string; // 实验名称
  220. experiment_id: number; //实验 id
  221. workflow_id: number; // 流水线 id
  222. };
  223. // 项目依赖
  224. export type ProjectDependency = {
  225. url: string; // 项目地址
  226. name: string; // 项目名称
  227. branch: string; // 分支
  228. };