feat(admin): overview dashboard sections + system temperature/load sensors (0.85.0) (#11)
This commit was merged in pull request #11.
This commit is contained in:
@@ -160,8 +160,24 @@ export type MemoryStats = {
|
||||
percent_used: number;
|
||||
};
|
||||
|
||||
export type LoadAvg = {
|
||||
one: number;
|
||||
five: number;
|
||||
fifteen: number;
|
||||
};
|
||||
|
||||
export type CpuStats = {
|
||||
percent_used: number;
|
||||
load_avg: LoadAvg;
|
||||
/** Per-core usage percentages, one entry per logical core. */
|
||||
per_core: number[];
|
||||
};
|
||||
|
||||
export type TempStat = {
|
||||
label: string;
|
||||
celsius: number;
|
||||
max_celsius: number | null;
|
||||
critical_celsius: number | null;
|
||||
};
|
||||
|
||||
export type Alert = {
|
||||
@@ -173,6 +189,9 @@ export type SystemStats = {
|
||||
disk: DiskStats | null;
|
||||
memory: MemoryStats;
|
||||
cpu: CpuStats;
|
||||
/** Hardware temperature sensors. Empty when none are exposed (e.g.
|
||||
* inside a container without `/sys` access). */
|
||||
temperatures: TempStat[];
|
||||
alerts: Alert[];
|
||||
};
|
||||
|
||||
@@ -180,6 +199,41 @@ export async function getSystemStats(): Promise<SystemStats> {
|
||||
return request<SystemStats>('/v1/admin/system');
|
||||
}
|
||||
|
||||
// ---- overview aggregates ---------------------------------------------------
|
||||
|
||||
export type UsersOverview = {
|
||||
total: number;
|
||||
admins: number;
|
||||
newest_username: string | null;
|
||||
newest_created_at: string | null;
|
||||
};
|
||||
|
||||
export type MangasOverview = {
|
||||
total: number;
|
||||
synced: number;
|
||||
in_progress: number;
|
||||
dropped: number;
|
||||
total_chapters: number;
|
||||
total_pages: number;
|
||||
newest_title: string | null;
|
||||
newest_seen_at: string | null;
|
||||
};
|
||||
|
||||
export type AnalysisOverview = {
|
||||
analyzed_pages: number;
|
||||
total_pages: number;
|
||||
};
|
||||
|
||||
export type OverviewStats = {
|
||||
users: UsersOverview;
|
||||
mangas: MangasOverview;
|
||||
analysis: AnalysisOverview;
|
||||
};
|
||||
|
||||
export async function getOverviewStats(): Promise<OverviewStats> {
|
||||
return request<OverviewStats>('/v1/admin/overview');
|
||||
}
|
||||
|
||||
// ---- storage usage ---------------------------------------------------------
|
||||
|
||||
export type TopManga = {
|
||||
|
||||
Reference in New Issue
Block a user