diff --git a/packages/analytics/src/controllers/quests.js b/packages/analytics/src/controllers/quests.js index e11dc39..4e5b12a 100644 --- a/packages/analytics/src/controllers/quests.js +++ b/packages/analytics/src/controllers/quests.js @@ -3,5 +3,8 @@ import { questList } from '../models/quests.js' // eslint-disable-next-line import/prefer-default-export export async function questListController(req, res) { const quests = await questList() + quests.forEach((quest) => { + quest.failed = quest.started - quest.completed + }) res.render('quests', { quests }) } diff --git a/packages/analytics/src/models/quests.js b/packages/analytics/src/models/quests.js index 9acb2cb..b5f7471 100644 --- a/packages/analytics/src/models/quests.js +++ b/packages/analytics/src/models/quests.js @@ -1,6 +1,6 @@ /* eslint-disable object-shorthand */ /* eslint-disable func-names */ -import { UserProfile, Quest } from '@linux-odyssey/models' +import { UserProfile } from '@linux-odyssey/models' export function totalQuests() { return UserProfile.aggregate([ @@ -98,7 +98,7 @@ export function questList() { else: { $round: [ { $multiply: [{ $divide: ['$completed', '$started'] }, 100] }, - 2, + 0, ], }, }, @@ -107,7 +107,7 @@ export function questList() { }, { $sort: { - _id: 1, // 按任务ID升序排序 + completed: -1, }, }, ]) diff --git a/packages/analytics/views/quests.handlebars b/packages/analytics/views/quests.handlebars index 6107a76..9347e7e 100644 --- a/packages/analytics/views/quests.handlebars +++ b/packages/analytics/views/quests.handlebars @@ -5,6 +5,7 @@ Id Started Completed + Failed Completed Rate {{#each quests}} @@ -12,7 +13,8 @@ {{_id}} {{started}} {{completed}} - {{completedRate}} + {{failed}} + {{completedRate}} % {{/each}} \ No newline at end of file