diff --git a/templates/reward/point/rule.tmpl b/templates/reward/point/rule.tmpl new file mode 100644 index 000000000..645a2c96c --- /dev/null +++ b/templates/reward/point/rule.tmpl @@ -0,0 +1,117 @@ +{{template "base/head_home" .}} + +
+

个人算力积分奖励规则

+
+

说明:单日用户积分的获取上限为50分。

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
奖励名称获取积分值上限值奖励细节澄清
完成微信扫码验证50累计积分获取上限501、首次完成微信扫码验证,即获取50积分。
2、同个账号,更换微信号码再验证不重复给积分。
3、同一个微信,绑定第一个账号时奖励50分,下次绑定其他账号时不再奖励。
每日首次Fork项目1每日积分获取上限1
创建公开项目1每日积分获取上限3请注意项目质量,请勿复制粘贴或者重复公开项目,任何非常规的以公开项目去获取积分的行为将被认定为积分舞弊,将扣除所有积分。
每日提出PR1每日积分获取上限3
每日commit1每日积分获取上限3通过前台界面和后台命令行方式commit,都可获得奖励积分。
每日提出任务1每日积分获取上限3
发表评论1每日积分获取上限2禁止空评论或评论后马上删除等非正常获取积分的方式,一经发现将扣除所有积分。
上传数据集文件1每日积分获取上限1请注意数据集质量,请勿复制粘贴或者重复公开数据集,任何非常规的以公开数据集去获取积分的行为将被认定为积分舞弊,将扣除所有积分。
数据集被平台推荐5每日积分获取上限15仅统计属于个人的数据集,属于组织的数据集暂不统计。
导入新模型1每日积分获取上限3请注意模型质量,请勿重复导入相同模型,任何非常规的以导入新模型去获取 积分的行为将被认定为积分舞弊,将扣除所有积分。
每日运行云脑任务10每日积分获取上限10 每日运行调试、训练、推理、评测中任何一种任务,即可获得。
提交新公开镜像1每日积分获取上限3
镜像被平台推荐5每日积分获取上限15
首次更换头像2累计积分获取上限2首次更换头像,积分+2。
+ +
+{{template "base/footer" .}} \ No newline at end of file diff --git a/web_src/vuepages/pages/reward/point/const.js b/web_src/vuepages/pages/reward/point/const.js index af0332cc7..a0fe162e5 100644 --- a/web_src/vuepages/pages/reward/point/const.js +++ b/web_src/vuepages/pages/reward/point/const.js @@ -1,6 +1,7 @@ export const SOURCE_TYPE = [{ k: 'ACCOMPLISH_TASK', v: '积分任务' }, { k: 'ADMIN_OPERATE', v: '管理员操作' }, { k: 'RUN_CLOUDBRAIN_TASK', v: '运行云脑任务' }]; export const CONSUME_STATUS = [{ k: 'OPERATING', v: '进行中' }, { k: 'SUCCEEDED', v: '已完成' }]; export const POINT_ACTIONS = [ - { k: 1, v: '创建公开项目' }, { k: 6, v: '每日提出任务' }, { k: 7, v: '每日提出PR' }, { k: 10, v: '发表评论' }, { k: 24, v: '上传数据集文件' }, { k: 30, v: '导入新模型' }, { k: 32, v: '完成微信扫码验证' }, - { k: 33, v: '每日运行云脑任务' }, { k: 34, v: '数据集被平台推荐' }, { k: 35, v: '提交新公开镜像' }, { k: 36, v: '镜像被平台推荐' }, { k: 37, v: '首次更换头像' }, { k: 38, v: '每日commit' }, { k: 39, v: '每日首次Fork项目' }, + { k: 1, v: '创建公开项目' }, { k: 6, v: '每日提出任务' }, { k: 7, v: '每日提出PR' }, { k: 10, v: '发表评论' }, { k: 24, v: '上传数据集文件' }, { k: 30, v: '导入新模型' }, { k: 34, v: '完成微信扫码验证' }, + { k: 35, v: '每日运行云脑任务' }, { k: 36, v: '数据集被平台推荐' }, { k: 37, v: '提交新公开镜像' }, { k: 38, v: '镜像被平台推荐' }, { k: 39, v: '首次更换头像' }, { k: 40, v: '每日commit' }, { k: 41, v: '每日首次Fork项目' }, ]; +export const JOB_TYPE = [{ k: 'DEBUG', v: '调试任务' }, { k: 'TRAIN', v: '训练任务' }, { k: 'INFERENCE', v: '推理任务' }, { k: 'BENCHMARK', v: '评测任务' }]; diff --git a/web_src/vuepages/pages/reward/point/utils.js b/web_src/vuepages/pages/reward/point/utils.js index b19e41b1f..d97fa4fc0 100644 --- a/web_src/vuepages/pages/reward/point/utils.js +++ b/web_src/vuepages/pages/reward/point/utils.js @@ -1,24 +1,63 @@ import { formatDate } from 'element-ui/lib/utils/date-util'; -import { SOURCE_TYPE, CONSUME_STATUS, POINT_ACTIONS } from './const'; +import { SOURCE_TYPE, CONSUME_STATUS, POINT_ACTIONS, JOB_TYPE } from './const'; 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': + 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.ID}`; + } else if (cloudbrain.Type === 0) { + link += `/cloudbrain/train-job/${cloudbrain.ID}`; + } else if (cloudbrain.Type === 2) { + link += `/grampus/train-job/${cloudbrain.ID}`; + } + break; + case 'INFERENCE': + link += `/modelarts/inference-job/${cloudbrain.ID}`; + break; + case 'BENCHMARK': + link += `/cloudbrain/benchmark/${cloudbrain.ID}`; + break; + default: + break; + }; + return link; +}; + export const getRewardPointRecordInfo = (record) => { const out = { sn: record.SerialNo, - date: formatDate(new Date(record.LastOperateDate * 1000), 'yyyy-MM-DD HH:mm:ss'), + 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)' : '', @@ -52,46 +91,53 @@ export const getRewardPointRecordInfo = (record) => { out.remark = `上传了数据集文件${record.Action.RefName}`; break; case 30: // 导入新模型 - 导入了新模型resnet50_qx7l + out.remark = '导入了新模型{{}}'; break; - case 32: // 完成微信扫码验证 - 首次绑定微信奖励 + case 34: // 完成微信扫码验证 - 首次绑定微信奖励 out.remark = '首次绑定微信奖励'; break; - case 33: // 每日运行云脑任务 - 创建了(CPU/GPU/NPU)类型(调试/训练/推理/评测)任务tangl202204131431995 - out.remark = `创建了{{}}类型{{}}任务${record.Action.RefName}`; + case 35: // 每日运行云脑任务 - 创建了(CPU/GPU/NPU)类型(调试/训练/推理/评测)任务tangl202204131431995 + out.remark = `创建了${record.Action?.Cloudbrain?.ComputeResource}类型${getJobType(record.Action?.Cloudbrain?.JobType)}${record.Action.RefName}`; break; - case 34: // 数据集被平台推荐 - 数据集XXX被设置为推荐数据集 - out.remark = `数据集${record.Action.RefName}被设置为推荐数据集`; + case 36: // 数据集被平台推荐 - 数据集XXX被设置为推荐数据集 + out.remark = `数据集${record.Action.Content && record.Action.Content.split('|')[1]}被设置为推荐数据集`; break; - case 35: // 提交新公开镜像 - 提交了镜像jiangxiang_ceshi_tang03 - out.remark = `提交了镜像${record.Action.RefName}`; + case 37: // 提交新公开镜像 - 提交了镜像jiangxiang_ceshi_tang03 + out.remark = `提交了镜像${record.Action.Content && record.Action.Content.split('|')[1]}`; break; - case 36: // 镜像被平台推荐 - 镜像XXX被设置为推荐镜像 - out.remark = `镜像${record.Action.RefName}被设置为推荐镜像`; + case 38: // 镜像被平台推荐 - 镜像XXX被设置为推荐镜像 + out.remark = `镜像${record.Action.Content && record.Action.Content.split('|')[1]}被设置为推荐镜像`; break; - case 37: // 首次更换头像 - 更新了头像 + case 39: // 首次更换头像 - 更新了头像 out.remark = '更新了头像'; break; - case 38: // 每日commit - 推送了xxxx分支的代码到OpenI/aiforge + case 40: // 每日commit - 推送了xxxx分支的代码到OpenI/aiforge const words = record.Action.RefName.split('/'); const branch = words[words.length - 1]; out.remark = `推送了${branch}分支的代码到${record.Action.ShortRepoFullDisplayName}`; break; - case 39: // 每日首次Fork项目 - 创建了项目OpenI/fork_aiforge + case 41: // 每日首次Fork项目 - 创建了项目OpenI/fork_aiforge out.remark = `创建了项目${record.Action.ShortRepoFullDisplayName}`; break; default: break; } } else if (record.SourceType === 'RUN_CLOUDBRAIN_TASK') { - + // } } 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') { - + out.taskName = `${record?.Cloudbrain?.DisplayJobName}`; + if (record?.Cloudbrain?.ComputeResource === 'CPU/GPU') { + const resourceSpec = record?.Cloudbrain?.ResourceSpec?.ResourceSpec; + out.remark = `【${getJobType(record?.Cloudbrain?.JobType)}】【${record?.Cloudbrain?.ComputeResource}】【GPU: ${resourceSpec?.gpu}, CPU: ${resourceSpec?.cpu}, 内存: ${(resourceSpec?.memMiB / 1024).toFixed(2)}GB, 共享内存: ${(resourceSpec?.shareMemMiB / 1024).toFixed(2)}GB】`; + } else { + out.remark = `【${getJobType(record?.Cloudbrain?.JobType)}】【${record?.Cloudbrain?.ComputeResource}】【${record?.Cloudbrain?.ResourceSpec.FlavorInfo.desc}】`; + } } } return out; diff --git a/web_src/vuepages/pages/reward/point/vp-point.js b/web_src/vuepages/pages/reward/point/vp-point.js index 8039d3f2c..8ef5bfa67 100644 --- a/web_src/vuepages/pages/reward/point/vp-point.js +++ b/web_src/vuepages/pages/reward/point/vp-point.js @@ -4,7 +4,6 @@ import 'element-ui/lib/theme-chalk/index.css'; Vue.use(ElementUI); import App from './vp-point.vue'; -// import App from '../manage/vp-point-manage.vue'; new Vue({ el: '#__vue-root', diff --git a/web_src/vuepages/pages/reward/point/vp-point.vue b/web_src/vuepages/pages/reward/point/vp-point.vue index 65b48f1c9..6a33ed6af 100644 --- a/web_src/vuepages/pages/reward/point/vp-point.vue +++ b/web_src/vuepages/pages/reward/point/vp-point.vue @@ -6,12 +6,10 @@

算力积分明细

- + - - - 积分获取说明 + 积分获取说明
@@ -78,13 +76,17 @@ + width="120"> - + + @@ -109,8 +111,7 @@