import { formatDate } from 'element-ui/lib/utils/date-util'; import { SOURCE_TYPE, CONSUME_STATUS, POINT_ACTIONS, JOB_TYPE, ACC_CARD_TYPE } from '~/const'; import { i18n } from '~/langs'; import { getListValueWithKey } from '~/utils'; const getSourceType = (key) => { const find = SOURCE_TYPE.filter(item => item.k === key); return find.length ? find[0].v : key; }; const getConsumeStatus = (key) => { const find = CONSUME_STATUS.filter(item => item.k === key); return find.length ? find[0].v : key; }; const getPointAction = (key) => { const find = POINT_ACTIONS.filter(item => item.k === key); return find.length ? find[0].v : key; }; const getJobType = (key) => { const find = JOB_TYPE.filter(item => item.k === key); return find.length ? find[0].v : key; }; const getJobTypeLink = (record, type) => { let link = type === 'INCREASE' ? record.Action?.RepoLink : '/' + record.Cloudbrain?.RepoFullName; const cloudbrain = type === 'INCREASE' ? record.Action?.Cloudbrain : record.Cloudbrain; switch (cloudbrain?.JobType) { case 'DEBUG': console.log("cloudbrain") if (cloudbrain.Type === 2) { link += `/grampus/notebook/${cloudbrain.ID}`; } else if (cloudbrain.ComputeResource === 'CPU/GPU') { link += `/cloudbrain/${cloudbrain.ID}`; } else { link += `/modelarts/notebook/${cloudbrain.ID}`; } break; case 'TRAIN': if (cloudbrain.Type === 1) { link += `/modelarts/train-job/${cloudbrain.JobID}`; } else if (cloudbrain.Type === 0) { link += `/cloudbrain/train-job/${cloudbrain.JobID}`; } else if (cloudbrain.Type === 2) { link += `/grampus/train-job/${cloudbrain.JobID}`; } break; case 'INFERENCE': link += `/modelarts/inference-job/${cloudbrain.JobID}`; break; case 'BENCHMARK': link += `/cloudbrain/benchmark/${cloudbrain.ID}`; break; default: break; }; return link; }; const renderSpecStr = (spec, showPoint) => { var ngpu = `${spec.ComputeResource}: ${spec.AccCardsNum + '*' + getListValueWithKey(ACC_CARD_TYPE, spec.AccCardType)}`; var gpuMemStr = spec.GPUMemGiB != 0 ? `${i18n.t('resourcesManagement.gpuMem')}: ${spec.GPUMemGiB}GB, ` : ''; var sharedMemStr = spec.ShareMemGiB != 0 ? `, ${i18n.t('resourcesManagement.shareMem')}: ${spec.ShareMemGiB}GB` : ''; var workServerNum = spec.workServerNumber; var workServerNumStr = showPoint && workServerNum != 1 && spec.UnitPrice != 0 ? '*' + workServerNum + i18n.t('resourcesManagement.node') : ''; var pointStr = showPoint ? `, ${spec.UnitPrice == 0 ? i18n.t('resourcesManagement.free') : spec.UnitPrice + i18n.t('resourcesManagement.point_hr') + workServerNumStr}` : ''; var specStr = `${ngpu}, CPU: ${spec.CpuCores}, ${gpuMemStr}${i18n.t('resourcesManagement.mem')}: ${spec.MemGiB}GB${sharedMemStr}${pointStr}`; return specStr; }; export const getRewardPointRecordInfo = (record) => { const out = { sn: record.SerialNo, date: formatDate(new Date(record.LastOperateDate * 1000), 'yyyy-MM-dd HH:mm:ss'), _status: record.Status, status: getConsumeStatus(record.Status) || '--', statusColor: record.Status === 'OPERATING' ? 'rgb(33, 186, 69)' : '', _sourceType: record.SourceType, sourceType: getSourceType(record.SourceType), duration: record?.Cloudbrain?.Duration || '--', taskName: record?.Cloudbrain?.DisplayJobName || '--', taskId: record?.Cloudbrain?.ID, action: record?.SourceTemplateId ? getPointAction(record.SourceTemplateId) : '--', remark: record.Remark, amount: record.Amount, }; if (record.OperateType === 'INCREASE') { if (record.SourceType === 'ADMIN_OPERATE') { out.remark = record.Remark; } else if (record.SourceType === 'ACCOMPLISH_TASK') { if (record.Action?.Cloudbrain?.JobType === 'MODELSAFETY') { record.Action.Cloudbrain.oJobType = 'MODELSAFETY'; record.Action.Cloudbrain.JobType = 'BENCHMARK'; } switch (record?.SourceTemplateId) { case 'CreatePublicRepo': // 创建公开项目 - 创建了项目OpenI/aiforge out.remark = record.Action ? `${i18n.t('createdRepository')}${record.Action.ShortRepoFullDisplayName}` : `${getPointAction(record.SourceTemplateId)}(${i18n.t('repositoryWasDel')})`; break; case 'CreateIssue': // 每日提出任务 - 创建了任务PCL-Platform.Intelligence/AISynergy#19 out.remark = record.Action ? `${i18n.t('openedIssue')}${record.Action.ShortRepoFullDisplayName}#${record.Action.IssueInfos[0]}` : `${getPointAction(record.SourceTemplateId)}(${i18n.t('repositoryWasDel')})`; break; case 'CreatePullRequest': // 每日提出PR - 创建了合并请求OpenI/aiforge#1 out.remark = record.Action ? `${i18n.t('createdPullRequest')}${record.Action.ShortRepoFullDisplayName}#${record.Action.IssueInfos[0]}` : `${getPointAction(record.SourceTemplateId)}(${i18n.t('repositoryWasDel')})`; break; case 'CommentIssue': // 发表评论 - 评论了任务PCL-Platform.Intelligence/AISynergy#19 out.remark = record.Action ? `${i18n.t('commentedOnIssue')}${record.Action.ShortRepoFullDisplayName}#${record.Action.IssueInfos[0]}` : `${getPointAction(record.SourceTemplateId)}(${i18n.t('repositoryWasDel')})`; break; case 'UploadAttachment': // 上传数据集文件 - 上传了数据集文件MMISTData.zip out.remark = record.Action ? `${i18n.t('uploadDataset')}${record.Action?.RefName}` : `${getPointAction(record.SourceTemplateId)}(${i18n.t('repositoryWasDel')})`; break; case 'CreateNewModelTask': // 导入新模型 - 导入了新模型resnet50_qx7l out.remark = record.Action ? `${i18n.t('createdNewModel')}${record.Action?.RefName}` : `${getPointAction(record.SourceTemplateId)}(${i18n.t('repositoryWasDel')})`; break; case 'BindWechat': // 完成微信扫码验证 - 首次绑定微信奖励 out.remark = `${i18n.t('firstBindingWechatRewards')}`; break; case 'CreateCloudbrainTask': // 每日运行云脑任务 - 创建了(CPU/GPU/NPU)类型(调试/训练/推理/评测)任务tangl202204131431995 out.remark = record.Action ? `${i18n.t('created')}${record.Action?.Cloudbrain?.ComputeResource}${i18n.t('type')}${getJobType(record.Action?.Cloudbrain?.JobType)} ${record.Action.RefName}` : `${getPointAction(record.SourceTemplateId)}(${i18n.t('repositoryWasDel')})`; break; case 'DatasetRecommended': // 数据集被平台推荐 - 数据集XXX被设置为推荐数据集 out.remark = record.Action ? `${i18n.t('dataset')}${record.Action.Content && record.Action.Content.split('|')[1]}${i18n.t('setAsRecommendedDataset')}` : `${getPointAction(record.SourceTemplateId)}(${i18n.t('repositoryWasDel')})`; break; case 'CreateImage': // 提交新公开镜像 - 提交了镜像jiangxiang_ceshi_tang03 out.remark = `${i18n.t('committedImage')}${record.Action.Content && record.Action.Content.split('|')[1]}`; break; case 'ImageRecommend': // 镜像被平台推荐 - 镜像XXX被设置为推荐镜像 out.remark = `${i18n.t('image')}${record.Action.Content && record.Action.Content.split('|')[1]}${i18n.t('setAsRecommendedImage')}`; break; case 'ChangeUserAvatar': // 首次更换头像 - 更新了头像 out.remark = `${i18n.t('updatedAvatar')}`; break; case 'PushCommits': // 每日commit - 推送了xxxx分支的代码到OpenI/aiforge if (record?.Action) { const opType = record.Action.OpType; if (opType == 5) { const words = record.Action.RefName.split('/'); const branch = words[words.length - 1]; out.remark = `${i18n.t('pushedBranch', { branch: `${branch}` })}${record.Action.ShortRepoFullDisplayName}`; } else if (opType == 9) { const words = record.Action.RefName.split('/'); const tag = words[words.length - 1]; out.remark = `${i18n.t('pushedTag', { tag: `${tag}` })}${record.Action.ShortRepoFullDisplayName}`; } else if (opType == 16) { const words = record.Action.RefName.split('/'); const tag = words[words.length - 1]; out.remark = `${i18n.t('deleteTag', { repo: `${record.Action.ShortRepoFullDisplayName}`, tag: tag, })}`; } else if (opType == 17) { const words = record.Action.RefName.split('/'); const branch = words[words.length - 1]; out.remark = `${i18n.t('deleteBranch', { repo: `${record.Action.ShortRepoFullDisplayName}`, branch: branch, })}`; } } else { out.remark = `${getPointAction(record.SourceTemplateId)}(${i18n.t('repositoryWasDel')})`; } break; default: break; } } else if (record.SourceType === 'RUN_CLOUDBRAIN_TASK') { // } if (record.LossAmount !== 0) { out.amount = record.Amount; out.remark += `${out.remark ? i18n.t(';') : ''}${i18n.t('dailyMaxTips')}`; } } else if (record.OperateType === 'DECREASE') { if (record.SourceType === 'ADMIN_OPERATE') { out.remark = record.Remark; } else if (record.SourceType === 'ACCOMPLISH_TASK') { // } else if (record.SourceType === 'RUN_CLOUDBRAIN_TASK') { if (!record.Cloudbrain?.RepoFullName) { out.taskName = `${record?.Cloudbrain?.DisplayJobName}(${i18n.t('repositoryWasDel')})`; } else { out.taskName = `${record?.Cloudbrain?.DisplayJobName}`; } const resourceSpec = record?.Cloudbrain?.ResourceSpec; if (resourceSpec) { resourceSpec.workServerNumber = record?.Cloudbrain?.WorkServerNumber || 1; out.remark = `【${getJobType(record?.Cloudbrain?.JobType)}】【${renderSpecStr(resourceSpec, true)}】`; } } } return out; };