Fix frontend imports and track frontend lib files

This commit is contained in:
2026-03-21 09:22:10 +08:00
parent 83f7a66e32
commit 190cee20bd
8 changed files with 285 additions and 19 deletions

60
frontend/lib/api.ts Normal file
View File

@@ -0,0 +1,60 @@
import type { CreateMindmapPayload, Mindmap } from "../types/mindmap";
const API_BASE_URL =
process.env.NEXT_PUBLIC_API_BASE_URL ?? "http://127.0.0.1:8000";
async function request<T>(path: string, init?: RequestInit): Promise<T> {
const response = await fetch(`${API_BASE_URL}${path}`, {
...init,
headers: {
"Content-Type": "application/json",
...(init?.headers ?? {}),
},
cache: "no-store",
});
if (!response.ok) {
const message = await response.text();
throw new Error(message || "请求失败");
}
return (await response.json()) as T;
}
export async function createMindmap(
payload: CreateMindmapPayload,
): Promise<Mindmap> {
return request<Mindmap>("/api/mindmaps", {
method: "POST",
body: JSON.stringify(payload),
});
}
export async function getMindmap(uniqueId: string): Promise<Mindmap> {
return request<Mindmap>(`/api/mindmaps/${uniqueId}`);
}
export async function sendChatMessage(
sessionId: string,
content: string,
visitorBizId: string = "default_visitor",
signal?: AbortSignal,
): Promise<Response> {
const response = await fetch(`${API_BASE_URL}/api/chat`, {
method: "POST",
headers: { "Content-Type": "application/json" },
signal,
body: JSON.stringify({
session_id: sessionId,
content,
visitor_biz_id: visitorBizId,
}),
});
if (!response.ok) {
const message = await response.text();
throw new Error(message || "请求失败");
}
return response;
}