260707_1_대시보드정리 1차

This commit is contained in:
2026-07-08 19:04:20 +09:00
parent 3485eeb096
commit 9c40dec070
26 changed files with 1264 additions and 305 deletions
+38 -12
View File
@@ -67,17 +67,29 @@ export interface AuditLog {
timestamp: string;
}
export interface ResourceSnapshot {
cpu_usage_percent: number | null;
memory_usage_percent: number | null;
disk_usage_percent: number | null;
active_user_count: number;
active_project_count: number;
total_storage_mb: number;
}
export interface ResourceHistoryPoint {
timestamp: string;
cpu_usage_percent: number | null;
memory_usage_percent: number | null;
disk_usage_percent: number | null;
active_user_count: number;
active_project_count: number;
total_storage_mb: number;
}
export interface ResourceData {
current: {
cpu_usage_percent: number | null;
memory_usage_percent: number | null;
disk_usage_percent: number | null;
active_user_count: number;
active_project_count: number;
total_storage_mb: number;
};
history: unknown[];
stats: ResourceData["current"];
current: ResourceSnapshot;
history: ResourceHistoryPoint[];
stats: ResourceSnapshot;
}
export interface UpdateUserRequest {
@@ -94,6 +106,13 @@ export interface CreateCompanyRequest {
business_owner?: string | null;
}
export interface ChangePasswordRequest {
current_password: string;
new_password: string;
new_password_confirm: string;
logout_all: boolean;
}
async function request<T>(path: string, init: RequestInit = {}): Promise<T> {
const response = await fetch(`${API_BASE_URL}${path}`, {
credentials: "include",
@@ -120,6 +139,13 @@ export async function updateUserProfile(payload: UpdateUserRequest): Promise<Das
return data.user;
}
export function changePassword(payload: ChangePasswordRequest): Promise<unknown> {
return request("/auth/password", {
method: "POST",
body: body(payload),
});
}
export async function fetchUserProjects(): Promise<ProjectItem[]> {
const data = await request<{ projects: ProjectItem[] }>("/dashboard/user/projects");
return data.projects;
@@ -219,6 +245,6 @@ export async function fetchAuditLogs(): Promise<AuditLog[]> {
return data.items;
}
export async function fetchSystemResources(period = "24h"): Promise<ResourceData> {
return request<ResourceData>(`/dashboard/admin/resources?period=${encodeURIComponent(period)}`);
export async function fetchSystemResources(days = 30): Promise<ResourceData> {
return request<ResourceData>(`/dashboard/admin/resources?days=${encodeURIComponent(days)}`);
}