diff --git a/apps/blogai/components/header.tsx b/apps/blogai/components/header.tsx index 977049e..4eaf84d 100644 --- a/apps/blogai/components/header.tsx +++ b/apps/blogai/components/header.tsx @@ -116,295 +116,6 @@ export function Header() { ) } - -// ✅ 图标显示逻辑现在是这样的: -// data.icon = "🚀" 👉 显示 emoji; -// data.icon = "/images/icon.png" 👉 显示图片; -// data.icon = undefined/null 👉 显示默认 "Deploy" 字样。 - -// export function DetailPageHeader({ data }: { data: any }) { -// const [loading, setLoading] = useState(false); -// const [statusText, setStatusText] = useState(data?.statusText || "加载中..."); -// const [progress, setProgress] = useState(data?.progress || "0%"); -// const [showDelete, setShowDelete] = useState(true); // 默认可以删除 - -// // const handleClick = async (source: "icon" | "info") => { -// // setLoading(true); -// // setStatusText(source === "icon" ? "正在处理图标操作..." : "正在处理信息操作..."); - -// // try { -// // // 从 localStorage 获取用户信息 -// // const userData = JSON.parse(localStorage.getItem("UserData") || "null"); - -// // if (!userData || !userData.user_name) { -// // setStatusText("未登录,正在跳转登录页面..."); -// // window.location.href = "/auth/sign-in/"; -// // return; -// // } - -// // const userName = userData.user_name; - -// // // 从组件 props 里的 data 中取 id -// // const id = data?.id; -// // if (!id) { -// // setStatusText("数据缺失:找不到组件 ID"); -// // return; -// // } - -// // // 发起部署请求 -// // const res = await fetch("/api/v1/deploy/deploy", { -// // method: "POST", -// // headers: { "Content-Type": "application/json" }, -// // body: JSON.stringify({ -// // id, -// // user_name: userName, -// // }), -// // }); - -// // if (!res.ok) { -// // throw new Error(`HTTP 请求失败:${res.status}`); -// // } - -// // const json = await res.json(); - -// // if (json?.header?.code === 0) { -// // setStatusText(`${json.header.message || "操作成功"}`); -// // } else { -// // setStatusText(`${json.header.message || "操作失败(后端返回错误)"}`); -// // } -// // } catch (err) { -// // console.error("请求出错:", err); -// // setStatusText("操作失败,请检查网络或服务状态"); -// // } finally { -// // setLoading(false); -// // } -// // }; - -// const handleClick = async (source: "icon" | "info") => { -// setLoading(true); -// setStatusText(source === "icon" ? "正在处理图标操作..." : "正在处理信息操作..."); - -// try { -// const userData = JSON.parse(localStorage.getItem("UserData") || "null"); - -// if (!userData || !userData.user_name) { -// setStatusText("未登录,正在跳转登录页面..."); -// window.location.href = "/auth/sign-in/"; -// return; -// } - -// const userName = userData.user_name; -// const id = data?.id; - -// if (!id) { -// setStatusText("数据缺失:找不到组件 ID"); -// return; -// } - -// // 发起部署请求 -// const res = await fetch("/api/v1/deploy/deploy", { -// method: "POST", -// headers: { "Content-Type": "application/json" }, -// body: JSON.stringify({ -// id, -// user_name: userName, -// }), -// }); - -// if (!res.ok) throw new Error(`HTTP 请求失败:${res.status}`); - -// const json = await res.json(); - -// if (json?.header?.code === 0) { -// setStatusText("部署已启动,正在监听进度..."); - -// // ✅ 检查 env 变量是否读取成功 -// console.log("🧪 WS BASE =", process.env.NEXT_PUBLIC_CLIENT_BASE_WS); - -// // 发起 WebSocket 连接监听部署进度 -// const wsBase = process.env.NEXT_PUBLIC_CLIENT_BASE_WS; -// const socket = new WebSocket(`${wsBase}/status/${userName}/${id}`); - -// socket.onopen = () => { -// console.log("WebSocket 已连接"); -// }; - -// socket.onmessage = (event) => { -// console.log("收到进度信息:", event.data); -// // setStatusText(event.data); // 你也可以用 setProgress() 更新进度条 -// const msg = event.data; -// setStatusText(msg); - -// // ✅ 自动解析形如“进度: 65%,阶段: 正在部署”的格式 -// const match = msg.match(/进度[::]?\s*(\d+)%/); -// if (match && match[1]) { -// const percent = match[1] + "%"; -// setProgress(percent); -// } -// }; - -// socket.onerror = (error) => { -// console.error("WebSocket 出错:", error); -// setStatusText("WebSocket 出错"); -// }; - -// socket.onclose = () => { -// console.log("🔌 WebSocket 连接已关闭"); -// }; -// } else { -// setStatusText(`${json.header.message || "操作失败(后端返回错误)"}`); -// } -// } catch (err) { -// console.error("请求出错:", err); -// setStatusText("操作失败,请检查网络或服务状态"); -// } finally { -// setLoading(false); -// } -// }; - -// const handleDelete = () => { -// if (loading) return; - -// const confirmed = window.confirm("确定要删除模型吗?"); -// if (confirmed) { -// setLoading(true); -// // 模拟删除流程(实际调用 API 或其他逻辑) -// // await deleteComponent(data.id); -// console.log("模型已删除"); - -// setLoading(false); -// } -// }; - -// useEffect(() => { -// const fetchDeployStatus = async () => { -// try { -// const result = await fetch("/api/v1/deploy/status", { -// method: "POST", -// headers: { "Content-Type": "application/json" }, -// body: JSON.stringify({ id: data?.id }), -// }).then((res) => res.json()); - -// console.log("==================>result:", result); - -// if (!result || result.header?.code !== 1006) { -// setStatusText(result?.header?.message || "操作失败(后端返回错误)"); -// setShowDelete(false); // 非 1006 隐藏删除按钮 -// return; -// } - -// // 如果成功返回 -// setStatusText(result.header.message || "部署成功"); -// if (result.header?.code === 1006) { -// setShowDelete(false); // code === 1006 不可删除,隐藏按钮 -// setStatusText(""); -// setProgress("0%"); -// } else { -// setShowDelete(true); // 其他状态可删除 -// setStatusText(result.header.message || "部署中"); -// setProgress(result.data?.progress || "0%"); -// } -// // 如果还想设置进度的话,这里也可以 setProgress(result.data.progress || '0%') -// } catch (err) { -// console.error("请求部署状态失败:", err); -// setStatusText("请求失败"); -// setShowDelete(false); -// } -// }; - -// fetchDeployStatus(); -// }, [data?.id]); // id 变化时重新获取 - -// // 处理图标路径 -// const isImagePath = -// typeof data?.icon === "string" && -// (data.icon.startsWith("http") || data.icon.startsWith("/")); - -// const resolvedIconSrc = -// isImagePath && !data.icon.startsWith("http") -// ? process.env.NEXT_PUBLIC_CLIENT_IMAGE_URL + data.icon -// : data.icon; - -// return ( -//