From 21d40b186afa5fd03188927111c73cd0ab9c603a Mon Sep 17 00:00:00 2001 From: "Logan.Li" Date: Fri, 26 Jun 2026 14:48:46 +0800 Subject: [PATCH] =?UTF-8?q?fix(k8s):=20ConfigMap/Secret=20=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E6=89=81=E5=B9=B3=E5=8C=96=E5=AD=97=E6=AE=B5=E4=BE=9B?= =?UTF-8?q?=E5=89=8D=E7=AB=AF=E8=A1=A8=E6=A0=BC=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 后端原返回 metadata.name 嵌套结构,前端读 name/namespace/key_count 为空。 --- backend/controller/k8s_resource.go | 34 ++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/backend/controller/k8s_resource.go b/backend/controller/k8s_resource.go index 3d7b7ae..9dcf361 100644 --- a/backend/controller/k8s_resource.go +++ b/backend/controller/k8s_resource.go @@ -156,7 +156,21 @@ func (h *KubernetesHandler) ListConfigMaps(c *gin.Context) { return } - c.JSON(http.StatusOK, model.Response{Code: 200, Data: cms.Items}) + // 扁平化字段,与前端表格列 name/namespace/key_count 对齐 // Logan.Li + type CMSummary struct { + Namespace string `json:"namespace"` + Name string `json:"name"` + KeyCount int `json:"key_count"` + } + result := make([]CMSummary, 0, len(cms.Items)) + for _, cm := range cms.Items { + result = append(result, CMSummary{ + Namespace: cm.Metadata.Namespace, + Name: cm.Metadata.Name, + KeyCount: len(cm.Data), + }) + } + c.JSON(http.StatusOK, model.Response{Code: 200, Data: result}) } // ListSecrets 获取命名空间下的 Secret 列表(仅名称+类型,不含值) @@ -179,7 +193,23 @@ func (h *KubernetesHandler) ListSecrets(c *gin.Context) { return } - c.JSON(http.StatusOK, model.Response{Code: 200, Data: secrets.Items}) + // 扁平化字段,与前端表格列 name/namespace/type 对齐 // Logan.Li + type SecretSummary struct { + Namespace string `json:"namespace"` + Name string `json:"name"` + Type string `json:"type"` + KeyCount int `json:"key_count"` + } + result := make([]SecretSummary, 0, len(secrets.Items)) + for _, s := range secrets.Items { + result = append(result, SecretSummary{ + Namespace: s.Metadata.Namespace, + Name: s.Metadata.Name, + Type: s.Type, + KeyCount: len(s.DataKeys), + }) + } + c.JSON(http.StatusOK, model.Response{Code: 200, Data: result}) } // ============================================================================