add background queue to admin dashboard

This commit is contained in:
Hazelnoot 2025-06-25 11:33:56 -04:00
parent 428c9258a1
commit 15bb9b38e1
6 changed files with 34 additions and 14 deletions

4
locales/index.d.ts vendored
View file

@ -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;

View file

@ -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(() => {

View file

@ -60,6 +60,11 @@ SPDX-License-Identifier: AGPL-3.0-only
<template #header>Inbox queue</template>
<XQueue domain="inbox"/>
</MkFoldableSection>
<MkFoldableSection class="item">
<template #header>{{ i18n.ts.backgroundQueue }}</template>
<XQueue domain="background"/>
</MkFoldableSection>
</div>
</div>
</template>

View file

@ -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,

View file

@ -313,6 +313,12 @@ export type QueueStats = {
waiting: number;
delayed: number;
};
background: {
activeSincePrevTick: number;
active: number;
waiting: number;
delayed: number;
};
};
export type QueueStatsLog = QueueStats[];

View file

@ -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"