api.ts 888 B

123456789101112131415161718192021
  1. import type { ExecutionView, RunSummary, TaskDetail } from "@/lib/types";
  2. const API_BASE = process.env.NEXT_PUBLIC_API_BASE ?? "http://127.0.0.1:8788";
  3. async function getJson<T>(path: string, signal?: AbortSignal): Promise<T> {
  4. const response = await fetch(`${API_BASE}${path}`, { signal, cache: "no-store" });
  5. if (!response.ok) throw new Error(`可视化后端返回 ${response.status}`);
  6. return response.json() as Promise<T>;
  7. }
  8. export function fetchRuns(signal?: AbortSignal) {
  9. return getJson<RunSummary[]>("/api/runs", signal);
  10. }
  11. export function fetchExecution(scriptBuildId: number, signal?: AbortSignal) {
  12. return getJson<ExecutionView>(`/api/runs/${scriptBuildId}/execution`, signal);
  13. }
  14. export function fetchTaskDetail(scriptBuildId: number, taskId: string, signal?: AbortSignal) {
  15. return getJson<TaskDetail>(`/api/runs/${scriptBuildId}/tasks/${taskId}`, signal);
  16. }