This commit is contained in:
Daniel
2026-03-31 10:52:49 +08:00
parent c7788fdd92
commit c6fabe262c
4 changed files with 42 additions and 14 deletions

View File

@@ -1,5 +1,9 @@
const API_BASE = import.meta.env.VITE_API_BASE ?? "/api";
type ExtractResponse<T> = { data: T };
type MatchResponse<T> = { items: T[] };
type ListResponse<T> = { items: T[] };
async function request<T>(path: string, init?: RequestInit): Promise<T> {
const response = await fetch(`${API_BASE}${path}`, {
headers: {
@@ -16,18 +20,33 @@ async function request<T>(path: string, init?: RequestInit): Promise<T> {
}
export const api = {
health: () => request("/health"),
extractJob: (text: string) => request("/poc/extract/job", { method: "POST", body: JSON.stringify({ text }) }),
extractWorker: (text: string) => request("/poc/extract/worker", { method: "POST", body: JSON.stringify({ text }) }),
ingestJob: (job: unknown) => request("/poc/ingest/job", { method: "POST", body: JSON.stringify({ job }) }),
ingestWorker: (worker: unknown) => request("/poc/ingest/worker", { method: "POST", body: JSON.stringify({ worker }) }),
bootstrap: () => request("/poc/ingest/bootstrap", { method: "POST" }),
health: () => request<unknown>("/health"),
extractJob: (text: string) =>
request<ExtractResponse<Record<string, unknown>>>("/poc/extract/job", {
method: "POST",
body: JSON.stringify({ text })
}),
extractWorker: (text: string) =>
request<ExtractResponse<Record<string, unknown>>>("/poc/extract/worker", {
method: "POST",
body: JSON.stringify({ text })
}),
ingestJob: (job: unknown) => request<unknown>("/poc/ingest/job", { method: "POST", body: JSON.stringify({ job }) }),
ingestWorker: (worker: unknown) =>
request<unknown>("/poc/ingest/worker", { method: "POST", body: JSON.stringify({ worker }) }),
bootstrap: () => request<unknown>("/poc/ingest/bootstrap", { method: "POST" }),
matchWorkers: (job: unknown, top_n = 10) =>
request("/poc/match/workers", { method: "POST", body: JSON.stringify({ job, top_n }) }),
request<MatchResponse<Record<string, unknown>>>("/poc/match/workers", {
method: "POST",
body: JSON.stringify({ job, top_n })
}),
matchJobs: (worker: unknown, top_n = 10) =>
request("/poc/match/jobs", { method: "POST", body: JSON.stringify({ worker, top_n }) }),
jobs: () => request("/poc/jobs"),
workers: () => request("/poc/workers"),
job: (jobId: string) => request(`/poc/jobs/${jobId}`),
worker: (workerId: string) => request(`/poc/workers/${workerId}`)
request<MatchResponse<Record<string, unknown>>>("/poc/match/jobs", {
method: "POST",
body: JSON.stringify({ worker, top_n })
}),
jobs: () => request<ListResponse<Record<string, unknown>>>("/poc/jobs"),
workers: () => request<ListResponse<Record<string, unknown>>>("/poc/workers"),
job: (jobId: string) => request<Record<string, unknown>>(`/poc/jobs/${jobId}`),
worker: (workerId: string) => request<Record<string, unknown>>(`/poc/workers/${workerId}`)
};