feat(k8s-ui): 重写 K8s 前端 — Deployment 详情页/HPA/CronJob/操作按钮

api.ts 改造:
  - 修复 scaleDeployment/restartDeployment/deletePod 死桩 → 真实后端 API
  - 新增: getPodLogs/execPod/updateDeploymentImage (CI webhook)
  - 新增: getHPAs/createHPA/deleteHPA (HPA 管理)
  - 新增: getCronJobs/createCronJob/suspendCronJob/triggerCronJob/deleteCronJob
  - 新增: getNamespaces

DeploymentDetail 新组件:
  - 副本状态卡片 (Ready/Total/Available)
  - 副本加减按钮 (scale control)
  - 滚动重启按钮
  - 镜像更新表单 (CI webhook inline)
  - Pod 列表 (按 deployment 名前缀过滤)
  - Pod 日志查看器 (tail/container 参数)
  - HPA 管理选项卡 (列表+删除)
  - 创建 HPA 弹窗 (CPU/内存指标配置)

K8sWorkloads 增强:
  - Deployment 表添加「操作」列(副本加减 + 查看详情)
  - 点击 Deployment 行 → 跳转 DeploymentDetail 详情页
  - handleQuickScale 快速扩缩容

新增 useToast hook (轻量级 toast 通知)
This commit is contained in:
attacker committed 2026-06-19 07:36:13 +00:00
1 parent abf2917fad
commit 1a913549fc
4 files changed
+714 -10

No files matched your search

+33
View File
@@ -0,0 +1,33 @@
import { useState, useCallback } from 'react';
interface Toast {
id: string;
title: string;
description?: string;
variant?: 'default' | 'destructive';
}
interface UseToastReturn {
toast: (opts: { title: string; description?: string; variant?: 'default' | 'destructive' }) => void;
toasts: Toast[];
dismiss: (id: string) => void;
}
export function useToast(): UseToastReturn {
const [toasts, setToasts] = useState<Toast[]>([]);
const toast = useCallback((opts: { title: string; description?: string; variant?: 'default' | 'destructive' }) => {
const id = Math.random().toString(36).slice(2);
const t: Toast = { id, ...opts };
setToasts((prev) => [...prev, t]);
setTimeout(() => {
setToasts((prev) => prev.filter((x) => x.id !== id));
}, 4000);
}, []);
const dismiss = useCallback((id: string) => {
setToasts((prev) => prev.filter((t) => t.id !== id));
}, []);
return { toast, toasts, dismiss };
}