This commit is contained in:
eric
2026-05-16 19:24:30 -05:00
parent 19beec12a5
commit 75a0ca4e31
260 changed files with 51345 additions and 1 deletions

View File

@@ -0,0 +1,74 @@
import type { NextRequest } from "next/server";
import { NextResponse } from "next/server";
/**
* 仅 `next dev` 生效:把 FastAPI 同名路由代理到本机 uvicorn。
* 生产环境由 FastAPI 托管 web-console/out,浏览器与 API 同域,不需要本中间件。
*/
const TARGET = process.env.API_PROXY_TARGET || "http://127.0.0.1:8001";
const API_ROOTS = new Set([
"process_monitor",
"server_info",
"health",
"status",
"start",
"stop",
"restart",
"get_config",
"save_config",
"get_url_config",
"save_url_config",
"stack",
"service_action",
"managed_roots",
"managed_files",
"managed_file",
"hardware_profile",
"system_snapshot",
"android",
"hub",
"youtube_pro_channels",
"tiktok_replay",
]);
export function middleware(request: NextRequest) {
if (process.env.NODE_ENV !== "development") {
return NextResponse.next();
}
const path = request.nextUrl.pathname;
const root = path.split("/").filter(Boolean)[0] ?? "";
if (!API_ROOTS.has(root)) {
return NextResponse.next();
}
const dest = new URL(path + request.nextUrl.search, TARGET);
return NextResponse.rewrite(dest);
}
/** Dev 代理:含 GET/POST 等同名 API(进程与服务控制已优先使用 POST) */
export const config = {
matcher: [
"/process_monitor",
"/server_info",
"/health",
"/status",
"/start",
"/stop",
"/restart",
"/get_config",
"/save_config",
"/get_url_config",
"/save_url_config",
"/stack/:path*",
"/service_action",
"/managed_roots",
"/managed_files",
"/managed_file",
"/hardware_profile",
"/system_snapshot",
"/android/:path*",
"/hub/:path*",
"/youtube_pro_channels",
"/tiktok_replay/:path*",
],
};