@@ -396,6 +396,14 @@ func (task *Cloudbrain) ToShow() *CloudbrainShow { | |||||
return c | return c | ||||
} | } | ||||
func (task *Cloudbrain) IsRestartTask() bool { | |||||
n, _ := x.Where("display_job_name = ?", task.DisplayJobName).Unscoped().Count(&Cloudbrain{}) | |||||
if n > 1 { | |||||
return true | |||||
} | |||||
return false | |||||
} | |||||
func (task *Cloudbrain) HasUseModel(modelId string) bool { | func (task *Cloudbrain) HasUseModel(modelId string) bool { | ||||
modelIDArray := task.GetModelIdArray() | modelIDArray := task.GetModelIdArray() | ||||
if modelIDArray == nil || len(modelIDArray) == 0 { | if modelIDArray == nil || len(modelIDArray) == 0 { | ||||
@@ -524,7 +524,14 @@ func GetRewardRecordShowList(opts *RewardRecordListOpts) (RewardRecordShowList, | |||||
return nil, 0, err | return nil, 0, err | ||||
} | } | ||||
RewardRecordShowList(r).loadAttribute(false) | RewardRecordShowList(r).loadAttribute(false) | ||||
return r, count, nil | |||||
newShowList := make([]*RewardOperateRecordShow, 0) | |||||
for i := 0; i < len(r); i++ { | |||||
if r[i].SourceType == SourceTypeAccomplishTask.Name() && r[i].Action == nil { | |||||
continue | |||||
} | |||||
newShowList = append(newShowList, r[i]) | |||||
} | |||||
return newShowList, count, nil | |||||
} | } | ||||
func GetAdminRewardRecordShowList(opts *RewardRecordListOpts) (RewardRecordShowList, int64, error) { | func GetAdminRewardRecordShowList(opts *RewardRecordListOpts) (RewardRecordShowList, int64, error) { | ||||
@@ -559,6 +566,14 @@ func GetAdminRewardRecordShowList(opts *RewardRecordListOpts) (RewardRecordShowL | |||||
return nil, 0, err | return nil, 0, err | ||||
} | } | ||||
RewardRecordShowList(r).loadAttribute(true) | RewardRecordShowList(r).loadAttribute(true) | ||||
newShowList := make([]*RewardOperateRecordShow, 0) | |||||
for i := 0; i < len(r); i++ { | |||||
if r[i].SourceType == SourceTypeAccomplishTask.Name() && r[i].Action == nil { | |||||
continue | |||||
} | |||||
newShowList = append(newShowList, r[i]) | |||||
} | |||||
return newShowList, count, nil | |||||
return r, count, nil | return r, count, nil | ||||
} | } | ||||
@@ -254,13 +254,20 @@ func (c CloudbrainTwoClusterAdapter) QueryNoteBook(opts entity.JobIdAndVersionId | |||||
log.Error("GetNotebook(%s) from cloudbrain 2 failed:result is empty", task.DisplayJobName) | log.Error("GetNotebook(%s) from cloudbrain 2 failed:result is empty", task.DisplayJobName) | ||||
return nil, errors.New("result is empty") | return nil, errors.New("result is empty") | ||||
} | } | ||||
return convertCloudbrainTwo2QueryRes(result), nil | |||||
return convertCloudbrainTwo2QueryRes(result, task), nil | |||||
} | } | ||||
func convertCloudbrainTwo2QueryRes(res *models.GetNotebook2Result) *entity.QueryTaskResponse { | |||||
func convertCloudbrainTwo2QueryRes(res *models.GetNotebook2Result, task *models.Cloudbrain) *entity.QueryTaskResponse { | |||||
startedAt := timeutil.TimeStamp(0) | startedAt := timeutil.TimeStamp(0) | ||||
if res.Lease.CreateTime > 0 { | |||||
startedAt = timeutil.TimeStamp(res.Lease.CreateTime / 1000) | |||||
if task.IsRestartTask() { | |||||
if res.Lease.UpdateTime > 0 { | |||||
startedAt = timeutil.TimeStamp(res.Lease.UpdateTime / 1000) | |||||
} | |||||
} else { | |||||
if res.Lease.CreateTime > 0 { | |||||
startedAt = timeutil.TimeStamp(res.Lease.CreateTime / 1000) | |||||
} | |||||
} | } | ||||
completedAt := timeutil.TimeStamp(0) | completedAt := timeutil.TimeStamp(0) | ||||
if models.IsCloudbrainTerminalStatus(res.Status) { | if models.IsCloudbrainTerminalStatus(res.Status) { | ||||
@@ -287,7 +287,7 @@ func UpdateByQueryResponse(res *entity.QueryTaskResponse, task *models.Cloudbrai | |||||
if res.DetailedStatus == "" || res.DetailedStatus == res.Status { | if res.DetailedStatus == "" || res.DetailedStatus == res.Status { | ||||
task.DetailedStatus = DEFAULT_DETAILED_STATUS | task.DetailedStatus = DEFAULT_DETAILED_STATUS | ||||
} | } | ||||
if res.StartedAt > 0 { | |||||
if res.StartedAt > 0 && task.StartTime == 0 { | |||||
task.StartTime = res.StartedAt | task.StartTime = res.StartedAt | ||||
} | } | ||||
if res.StartedAt > 0 && res.CompletedAt > 0 { | if res.StartedAt > 0 && res.CompletedAt > 0 { | ||||
@@ -111,6 +111,12 @@ | |||||
<td class="t-center"><span class="typ">累计</span>积分获取上限<span class="limit"> - </span></td> | <td class="t-center"><span class="typ">累计</span>积分获取上限<span class="limit"> - </span></td> | ||||
<td>邀请好友获得积分。</td> | <td>邀请好友获得积分。</td> | ||||
</tr> | </tr> | ||||
<tr key="TaskInviteFriendRegister"> | |||||
<td class="t-center">邀请好友</td> | |||||
<td class="t-center point">-</td> | |||||
<td class="t-center"><span class="typ">累计</span>积分获取上限<span class="limit"> - </span></td> | |||||
<td>邀请好友获得积分。</td> | |||||
</tr> | |||||
</table> | </table> | ||||
</div> | </div> | ||||
@@ -96,7 +96,7 @@ $.fn.tab.settings.silent = true; | |||||
const viewHeight = window.innerHeight || document.documentElement.clientHeight || '' | const viewHeight = window.innerHeight || document.documentElement.clientHeight || '' | ||||
const {top,right,bottom,left} = element.getBoundingClientRect() | const {top,right,bottom,left} = element.getBoundingClientRect() | ||||
return (top>=0 && left>=0 && right<viewWidth && bottom<=viewHeight) | return (top>=0 && left>=0 && right<viewWidth && bottom<=viewHeight) | ||||
} | |||||
} | |||||
function clickHandler() { | function clickHandler() { | ||||
if(!this.parentElement.classList.contains('hidden')) { | if(!this.parentElement.classList.contains('hidden')) { | ||||
this.parentElement.classList.add('hidden') | this.parentElement.classList.add('hidden') | ||||
@@ -126,7 +126,7 @@ $.fn.tab.settings.silent = true; | |||||
}, 50) | }, 50) | ||||
} | } | ||||
window.initMarkdownCatalog = function() { | window.initMarkdownCatalog = function() { | ||||
if ($('.file-view.markdown').length && $('.file-view.markdown').length > 0) { | |||||
if ($('.file-view.markdown').length && $('.file-view.markdown').length > 0) { | |||||
const navList = document.querySelectorAll('.markdown_toc .catalog-li') | const navList = document.querySelectorAll('.markdown_toc .catalog-li') | ||||
const toggleIcon = document.getElementsByClassName('toggle-container') | const toggleIcon = document.getElementsByClassName('toggle-container') | ||||
toggleIcon[0].removeEventListener('click', clickHandler) | toggleIcon[0].removeEventListener('click', clickHandler) | ||||
@@ -5285,7 +5285,7 @@ function initChartsNpu() { | |||||
url, | url, | ||||
(res) => { | (res) => { | ||||
loadingEl && loadingEl.hide(); | loadingEl && loadingEl.hide(); | ||||
if (res.MetricsInfo) { | |||||
if (res.MetricsInfo) { | |||||
let filterDta = res.MetricsInfo.filter((item) => { | let filterDta = res.MetricsInfo.filter((item) => { | ||||
return ![ | return ![ | ||||
"recvBytesRate", | "recvBytesRate", | ||||
@@ -5345,11 +5345,11 @@ function initChartsNpu() { | |||||
} | } | ||||
const repoPath = $(this).data('path') | const repoPath = $(this).data('path') | ||||
const versionName = $(this).data("version"); | const versionName = $(this).data("version"); | ||||
const chartEl = document.getElementById(`metric-${versionName}`); | |||||
const chartEl = document.getElementById(`metric-${versionName}`); | |||||
const multipleNode = $(chartEl).data('multiplenode'); | const multipleNode = $(chartEl).data('multiplenode'); | ||||
const loadingEl = $(chartEl).siblings('.ui.dimmer'); | const loadingEl = $(chartEl).siblings('.ui.dimmer'); | ||||
const workServerNumber = $(chartEl).data('workservernumber'); | |||||
const url = `${window.config.AppSubUrl}/api/v1/repos/${repoPath}`; | |||||
const workServerNumber = $(chartEl).data('workservernumber'); | |||||
const url = `${window.config.AppSubUrl}/api/v1/repos/${repoPath}`; | |||||
const myCharts = echarts.init(chartEl); | const myCharts = echarts.init(chartEl); | ||||
if (multipleNode) { | if (multipleNode) { | ||||
const multipleNodeEl = $(chartEl).siblings('.node-select').show(); | const multipleNodeEl = $(chartEl).siblings('.node-select').show(); | ||||
@@ -5452,7 +5452,7 @@ function initAddUsageAgreement() { | |||||
onHide:function(){ | onHide:function(){ | ||||
}, | }, | ||||
onApprove: async function ($element) { | onApprove: async function ($element) { | ||||
try { | |||||
try { | |||||
const res = await postSaveProtocolInfo(userName) | const res = await postSaveProtocolInfo(userName) | ||||
if (res?.data?.result_code === "0") { | if (res?.data?.result_code === "0") { | ||||
window.globalModalInit && window.globalModalInit() | window.globalModalInit && window.globalModalInit() | ||||
@@ -78,7 +78,7 @@ const zh = { | |||||
createdPullRequest: "创建了合并请求", | createdPullRequest: "创建了合并请求", | ||||
commentedOnIssue: "评论了任务", | commentedOnIssue: "评论了任务", | ||||
uploadDataset: "上传了数据集文件", | uploadDataset: "上传了数据集文件", | ||||
createdNewModel: "导入了新模型", | |||||
createdNewModel: "导入了新模型", | |||||
invitedFriend: "邀请了好友", | invitedFriend: "邀请了好友", | ||||
firstBindingWechatRewards: "首次绑定微信奖励", | firstBindingWechatRewards: "首次绑定微信奖励", | ||||
created: "创建了", | created: "创建了", | ||||
@@ -204,7 +204,7 @@ export default { | |||||
useExample: { | useExample: { | ||||
title: '在启智AI协作平台使用案例:', | title: '在启智AI协作平台使用案例:', | ||||
list: [ | list: [ | ||||
'https://openi.pcl.ac.cn/Enflame/GCU_Pytorch1.10.0_Example', | |||||
'https://openi.pcl.ac.cn/Enflame/GCU_Pytorch', | |||||
'https://openi.pcl.ac.cn/Enflame/GCU_PaddlePaddle_Example' | 'https://openi.pcl.ac.cn/Enflame/GCU_PaddlePaddle_Example' | ||||
] | ] | ||||
}, | }, | ||||
@@ -1374,4 +1374,4 @@ export default { | |||||
} | } | ||||
} | } | ||||
} | } | ||||
</style> | |||||
</style> |
Dear OpenI User
Thank you for your continuous support to the Openl Qizhi Community AI Collaboration Platform. In order to protect your usage rights and ensure network security, we updated the Openl Qizhi Community AI Collaboration Platform Usage Agreement in January 2024. The updated agreement specifies that users are prohibited from using intranet penetration tools. After you click "Agree and continue", you can continue to use our services. Thank you for your cooperation and understanding.
For more agreement content, please refer to the《Openl Qizhi Community AI Collaboration Platform Usage Agreement》