From 15bb9b38e177a528127e31f8a43fc95366a8d299 Mon Sep 17 00:00:00 2001 From: Hazelnoot Date: Wed, 25 Jun 2025 11:33:56 -0400 Subject: [PATCH] add background queue to admin dashboard --- locales/index.d.ts | 4 +++ .../src/pages/admin/overview.queue.vue | 27 +++++++++---------- .../frontend/src/pages/admin/overview.vue | 5 ++++ packages/misskey-js/etc/misskey-js.api.md | 4 +++ packages/misskey-js/src/entities.ts | 6 +++++ sharkey-locales/en-US.yml | 2 ++ 6 files changed, 34 insertions(+), 14 deletions(-) diff --git a/locales/index.d.ts b/locales/index.d.ts index 8aa409ca60..9f5a238cc9 100644 --- a/locales/index.d.ts +++ b/locales/index.d.ts @@ -13669,6 +13669,10 @@ export interface Locale extends ILocale { * Are you sure you want to restart this account migration? */ "restartMigrationConfirm": string; + /** + * Background queue + */ + "backgroundQueue": string; } declare const locales: { [lang: string]: Locale; diff --git a/packages/frontend/src/pages/admin/overview.queue.vue b/packages/frontend/src/pages/admin/overview.queue.vue index cf07cddced..9fafbd4f24 100644 --- a/packages/frontend/src/pages/admin/overview.queue.vue +++ b/packages/frontend/src/pages/admin/overview.queue.vue @@ -38,7 +38,6 @@ SPDX-License-Identifier: AGPL-3.0-only import { markRaw, onMounted, onUnmounted, ref, useTemplateRef } from 'vue'; import * as Misskey from 'misskey-js'; import XChart from './overview.queue.chart.vue'; -import type { ApQueueDomain } from '@/pages/admin/queue.vue'; import number from '@/filters/number.js'; import { useStream } from '@/stream.js'; @@ -54,7 +53,7 @@ const chartDelayed = useTemplateRef('chartDelayed'); const chartWaiting = useTemplateRef('chartWaiting'); const props = defineProps<{ - domain: ApQueueDomain; + domain: 'inbox' | 'deliver' | 'background'; }>(); function onStats(stats: Misskey.entities.QueueStats) { @@ -63,17 +62,17 @@ function onStats(stats: Misskey.entities.QueueStats) { delayed.value = stats[props.domain].delayed; waiting.value = stats[props.domain].waiting; - chartProcess.value.pushData(stats[props.domain].activeSincePrevTick); - chartActive.value.pushData(stats[props.domain].active); - chartDelayed.value.pushData(stats[props.domain].delayed); - chartWaiting.value.pushData(stats[props.domain].waiting); + chartProcess.value?.pushData(stats[props.domain].activeSincePrevTick); + chartActive.value?.pushData(stats[props.domain].active); + chartDelayed.value?.pushData(stats[props.domain].delayed); + chartWaiting.value?.pushData(stats[props.domain].waiting); } function onStatsLog(statsLog: Misskey.entities.QueueStatsLog) { - const dataProcess: Misskey.entities.QueueStats[ApQueueDomain]['activeSincePrevTick'][] = []; - const dataActive: Misskey.entities.QueueStats[ApQueueDomain]['active'][] = []; - const dataDelayed: Misskey.entities.QueueStats[ApQueueDomain]['delayed'][] = []; - const dataWaiting: Misskey.entities.QueueStats[ApQueueDomain]['waiting'][] = []; + const dataProcess: number[] = []; + const dataActive: number[] = []; + const dataDelayed: number[] = []; + const dataWaiting: number[] = []; for (const stats of [...statsLog].reverse()) { dataProcess.push(stats[props.domain].activeSincePrevTick); @@ -82,10 +81,10 @@ function onStatsLog(statsLog: Misskey.entities.QueueStatsLog) { dataWaiting.push(stats[props.domain].waiting); } - chartProcess.value.setData(dataProcess); - chartActive.value.setData(dataActive); - chartDelayed.value.setData(dataDelayed); - chartWaiting.value.setData(dataWaiting); + chartProcess.value?.setData(dataProcess); + chartActive.value?.setData(dataActive); + chartDelayed.value?.setData(dataDelayed); + chartWaiting.value?.setData(dataWaiting); } onMounted(() => { diff --git a/packages/frontend/src/pages/admin/overview.vue b/packages/frontend/src/pages/admin/overview.vue index 9844391e11..1c299ea6fb 100644 --- a/packages/frontend/src/pages/admin/overview.vue +++ b/packages/frontend/src/pages/admin/overview.vue @@ -60,6 +60,11 @@ SPDX-License-Identifier: AGPL-3.0-only + + + + + diff --git a/packages/misskey-js/etc/misskey-js.api.md b/packages/misskey-js/etc/misskey-js.api.md index 3550677287..33f2459b94 100644 --- a/packages/misskey-js/etc/misskey-js.api.md +++ b/packages/misskey-js/etc/misskey-js.api.md @@ -298,6 +298,9 @@ type AdminQueueInboxDelayedResponse = operations['admin___queue___inbox-delayed' // @public (undocumented) type AdminQueueJobsRequest = operations['admin___queue___jobs']['requestBody']['content']['application/json']; +// @public (undocumented) +type AdminQueueJobsResponse = operations['admin___queue___jobs']['responses']['200']['content']['application/json']; + // @public (undocumented) type AdminQueuePromoteJobsRequest = operations['admin___queue___promote-jobs']['requestBody']['content']['application/json']; @@ -1617,6 +1620,7 @@ declare namespace entities { AdminQueueDeliverDelayedResponse, AdminQueueInboxDelayedResponse, AdminQueueJobsRequest, + AdminQueueJobsResponse, AdminQueuePromoteJobsRequest, AdminQueueQueueStatsRequest, AdminQueueRemoveJobRequest, diff --git a/packages/misskey-js/src/entities.ts b/packages/misskey-js/src/entities.ts index abc3f08bb8..4d27aef63b 100644 --- a/packages/misskey-js/src/entities.ts +++ b/packages/misskey-js/src/entities.ts @@ -313,6 +313,12 @@ export type QueueStats = { waiting: number; delayed: number; }; + background: { + activeSincePrevTick: number; + active: number; + waiting: number; + delayed: number; + }; }; export type QueueStatsLog = QueueStats[]; diff --git a/sharkey-locales/en-US.yml b/sharkey-locales/en-US.yml index 0a378aa4a1..767d5773b7 100644 --- a/sharkey-locales/en-US.yml +++ b/sharkey-locales/en-US.yml @@ -731,3 +731,5 @@ accountMigrationUri: "Migration URI" restartMigration: "Restart account migration" restartMigrationDescription: "Account migration was last attempted {date}. If the migration failed or was incomplete, then you may click this button to restart the process." restartMigrationConfirm: "Are you sure you want to restart this account migration?" + +backgroundQueue: "Background queue"