feat(scheduler): live admin Scheduler dashboard + reusable poll hook (HU/EN/DE)
New admin Scheduler page (left-nav entry) with a live, self-refreshing view of job activity, queued work and quota. Polling is factored into a reusable useLiveQuery hook (pauses when the tab is unfocused) that the notification bell and future yt-dlp job queue will reuse instead of re-implementing.
This commit is contained in:
parent
02d913f133
commit
db9ee4beab
13 changed files with 491 additions and 5 deletions
|
|
@ -303,6 +303,39 @@ export interface ManagedChannel {
|
|||
backfill_done: boolean;
|
||||
}
|
||||
|
||||
export interface SchedulerJob {
|
||||
id: string;
|
||||
interval_minutes: number;
|
||||
next_run: string | null;
|
||||
running: boolean;
|
||||
status: "ok" | "error" | "skipped" | null;
|
||||
last_started: string | null;
|
||||
last_finished: string | null;
|
||||
last_result: string | null;
|
||||
last_error: string | null;
|
||||
}
|
||||
|
||||
export interface SchedulerStatus {
|
||||
running_here: boolean;
|
||||
enabled: boolean;
|
||||
paused: boolean;
|
||||
jobs: SchedulerJob[];
|
||||
queue: {
|
||||
channels_recent_pending: number;
|
||||
channels_deep_pending: number;
|
||||
deep_eta_seconds: number;
|
||||
videos_pending_enrich: number;
|
||||
videos_pending_shorts: number;
|
||||
videos_live_refresh: number;
|
||||
};
|
||||
quota: {
|
||||
used_today: number;
|
||||
remaining_today: number;
|
||||
daily_budget: number;
|
||||
backfill_reserve: number;
|
||||
};
|
||||
}
|
||||
|
||||
export interface Account {
|
||||
id: number;
|
||||
email: string;
|
||||
|
|
@ -400,6 +433,7 @@ export const api = {
|
|||
// --- quota usage ---
|
||||
myUsage: (): Promise<MyUsage> => req("/api/quota/my-usage"),
|
||||
adminQuota: (days = 30): Promise<AdminQuota> => req(`/api/quota/admin?days=${days}`),
|
||||
schedulerStatus: (): Promise<SchedulerStatus> => req("/api/admin/scheduler"),
|
||||
|
||||
// --- onboarding / admin ---
|
||||
requestAccess: (email: string): Promise<{ status: string }> =>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue