Admin AI Tools page: unified design system styling, provider selector with OpenAI turd emoji, free-text model input with exact ID warning

This commit is contained in:
2026-06-02 02:21:11 +00:00
parent 809e0061ca
commit 15e939ad7e
116 changed files with 14991 additions and 5326 deletions
+18 -1
View File
@@ -18,12 +18,15 @@ function rpcBody(body: Record<string, unknown>) {
export type TimeWorker = {
id: string;
brand_id: string;
name: string;
role: string;
lang: string;
pin: string;
active: boolean;
last_used_at: string | null;
created_at: string;
worker_number: number | null;
};
export type TimeTask = {
@@ -62,12 +65,15 @@ export async function getTimeTrackingWorkers(brandId: string): Promise<TimeWorke
if (useMockData) {
return mockWorkers.map(w => ({
id: w.id,
brand_id: brandId,
name: w.name,
role: w.role,
lang: w.language,
pin: "0000",
active: w.is_active,
last_used_at: null,
created_at: new Date().toISOString(),
worker_number: null,
}));
}
const res = await fetch(
@@ -80,7 +86,18 @@ export async function getTimeTrackingWorkers(brandId: string): Promise<TimeWorke
);
if (!res.ok) return [];
const data = await res.json();
return data?.workers ?? [];
return (data?.workers ?? []).map((w: Record<string, unknown>) => ({
id: w.id as string,
brand_id: w.brand_id as string,
name: w.name as string,
role: w.role as string,
lang: w.lang as string,
pin: w.pin as string,
active: w.active as boolean,
last_used_at: w.last_used_at as string | null,
created_at: w.created_at as string,
worker_number: w.worker_number as number | null,
}));
}
export async function createTimeWorker(