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
Inbox queue
+
+
+ {{ i18n.ts.backgroundQueue }}
+
+
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"