diff --git a/backend/app/main.py b/backend/app/main.py index ac1f921..e137a7a 100644 --- a/backend/app/main.py +++ b/backend/app/main.py @@ -1164,3 +1164,38 @@ async def serve_frontend_paths(path: str): return FileResponse(file_path) # 回退到 index.html (SPA 路由) return FileResponse(FRONTEND_DIR / "index.html") + + +@app.post("/admin/build-frontend") +async def build_frontend(background_tasks: BackgroundTasks): + """构建前端 (仅用于部署)""" + import subprocess + + frontend_path = FRONTEND_DIR.parent + + async def run_build(): + try: + result = subprocess.run( + ["npm", "install"], + cwd=str(frontend_path), + capture_output=True, + text=True, + timeout=300 + ) + result = subprocess.run( + ["npm", "run", "build"], + cwd=str(frontend_path), + capture_output=True, + text=True, + timeout=300 + ) + return result.returncode == 0, result.stdout, result.stderr + except Exception as e: + return False, "", str(e) + + success, stdout, stderr = await run_build() + + if success: + return {"status": "success", "message": "前端构建成功"} + else: + return {"status": "error", "message": stderr or "构建失败"}