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 |
+ 累计积分获取上限50 |
+ 1、首次完成微信扫码验证,即获取50积分。 2、同个账号,更换微信号码再验证不重复给积分。 3、同一个微信,绑定第一个账号时奖励50分,下次绑定其他账号时不再奖励。 |
+
+
+ 每日首次Fork项目 |
+ 1 |
+ 每日积分获取上限1 |
+ |
+
+
+ 创建公开项目 |
+ 1 |
+ 每日积分获取上限3 |
+ 请注意项目质量,请勿复制粘贴或者重复公开项目,任何非常规的以公开项目去获取积分的行为将被认定为积分舞弊,将扣除所有积分。 |
+
+
+ 每日提出PR |
+ 1 |
+ 每日积分获取上限3 |
+ |
+
+
+ 每日commit |
+ 1 |
+ 每日积分获取上限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 @@