diff --git a/frontend/src/components/agent/AgentMonitor.tsx b/frontend/src/components/agent/AgentMonitor.tsx index 3ceed6e..60e546a 100644 --- a/frontend/src/components/agent/AgentMonitor.tsx +++ b/frontend/src/components/agent/AgentMonitor.tsx @@ -1,4 +1,5 @@ import { useState, useEffect, useRef, useCallback } from 'react'; +import type { ComponentType } from 'react'; import { toast } from 'sonner'; import { agentApi } from '@/api'; import { AgentWizard } from './AgentWizard'; @@ -385,7 +386,7 @@ export function AgentMonitor() { } // ============ 指标条子组件 ============ -function MetricBar({ icon: Icon, label, value }: { icon: any; label: string; value: number }) { +function MetricBar({ icon: Icon, label, value }: { icon: ComponentType<{ className?: string }>; label: string; value: number }) { return (
diff --git a/frontend/src/components/kubernetes/DeploymentEditService.tsx b/frontend/src/components/kubernetes/DeploymentEditService.tsx index f242fea..05da0de 100644 --- a/frontend/src/components/kubernetes/DeploymentEditService.tsx +++ b/frontend/src/components/kubernetes/DeploymentEditService.tsx @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ // DeploymentEditService.tsx — 编辑器「服务/应用路由」Tab (M9) // 展示与当前 Deployment 关联的 Service / Ingress,并提供创建入口 // 作者: Logan diff --git a/frontend/src/components/kubernetes/DeploymentWorkload.tsx b/frontend/src/components/kubernetes/DeploymentWorkload.tsx index dc9ada2..01dbcdf 100644 --- a/frontend/src/components/kubernetes/DeploymentWorkload.tsx +++ b/frontend/src/components/kubernetes/DeploymentWorkload.tsx @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ // DeploymentWorkload.tsx — Kuboard 风格 Deployment 详情主组件 // - 顶部操作菜单: 编辑 | 预览/编辑YAML | 调整镜像版本 | 伸缩 | 日志/终端 | 重启 | 暂停/恢复更新 | CI/CD发布 | 删除 | 元数据 | 运行时 | 服务 | 应用路由 // - 三模式: view(只读增强看板)/ edit(可视化编辑器)/ yaml(YAML编辑器) diff --git a/frontend/src/components/kubernetes/NamespaceResourcePage.tsx b/frontend/src/components/kubernetes/NamespaceResourcePage.tsx index 55b66b4..fb0f04d 100644 --- a/frontend/src/components/kubernetes/NamespaceResourcePage.tsx +++ b/frontend/src/components/kubernetes/NamespaceResourcePage.tsx @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ import { useState, useEffect, useCallback, useMemo } from 'react'; import { useParams, useNavigate, useLocation, Link } from 'react-router-dom'; import { Card, CardContent } from '@/components/ui/card'; diff --git a/frontend/src/components/kubernetes/NodeDetailPage.tsx b/frontend/src/components/kubernetes/NodeDetailPage.tsx index 67c0567..1f3189a 100644 --- a/frontend/src/components/kubernetes/NodeDetailPage.tsx +++ b/frontend/src/components/kubernetes/NodeDetailPage.tsx @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ import { useState, useEffect, useCallback } from 'react'; import { useParams, useNavigate, Link } from 'react-router-dom'; import { Card, CardContent } from '@/components/ui/card'; diff --git a/frontend/src/components/kubernetes/ResourceVisualEditor.tsx b/frontend/src/components/kubernetes/ResourceVisualEditor.tsx index 6fbe78c..643d797 100644 --- a/frontend/src/components/kubernetes/ResourceVisualEditor.tsx +++ b/frontend/src/components/kubernetes/ResourceVisualEditor.tsx @@ -1,5 +1,7 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ // ResourceVisualEditor — ConfigMap/Secret/Service/Ingress/PVC 可视化编辑 // Logan.Li import { useState, useEffect, useCallback } from 'react'; +import type { ComponentType } from 'react'; import { X, Save, Loader2, Plus, Trash2, FileText, Network, Shield, Database, ChevronRight} from 'lucide-react'; import { Button } from '@/components/ui/button'; import { ModalOverlay } from '@/components/ui/modal-overlay'; @@ -67,7 +69,7 @@ export function ResourceVisualEditor({ clusterCode, namespace, resource, name, o toast({ title: '可视化编辑不可用', description: '无法解析资源结构,已切换到 YAML 编辑模式' }); } } catch (e) { - toast({ title: '加载失败', description: (e as Record).message, variant: 'destructive' }); + toast({ title: '加载失败', description: e instanceof Error ? e.message : String(e), variant: 'destructive' }); } finally { setLoading(false); } }, [clusterCode, namespace, resource, name, isCreate]); @@ -92,7 +94,7 @@ export function ResourceVisualEditor({ clusterCode, namespace, resource, name, o onSaved?.(); onClose(); } catch (e) { - toast({ title: isCreate ? '创建失败' : '保存失败', description: (e as Record).message, variant: 'destructive' }); + toast({ title: isCreate ? '创建失败' : '保存失败', description: e instanceof Error ? e.message : String(e), variant: 'destructive' }); } finally { setSaving(false); } }; @@ -114,7 +116,7 @@ export function ResourceVisualEditor({ clusterCode, namespace, resource, name, o onSaved?.(); onClose(); } catch (e) { - toast({ title: '保存失败', description: (e as Record).message, variant: 'destructive' }); + toast({ title: '保存失败', description: e instanceof Error ? e.message : String(e), variant: 'destructive' }); } finally { setSaving(false); } }; @@ -155,7 +157,7 @@ export function ResourceVisualEditor({ clusterCode, namespace, resource, name, o }; const resCfg = getYamlResourceConfig(resource); - const resourceMeta: Record = { + const resourceMeta: Record; color: string }> = { configmaps: { title: 'ConfigMap', icon: FileText, color: 'text-blue-400' }, secrets: { title: 'Secret', icon: Shield, color: 'text-amber-400' }, services: { title: 'Service', icon: Network, color: 'text-cyan-400' }, diff --git a/frontend/src/components/kubernetes/TopologyView.tsx b/frontend/src/components/kubernetes/TopologyView.tsx index 0d15685..aeac21d 100644 --- a/frontend/src/components/kubernetes/TopologyView.tsx +++ b/frontend/src/components/kubernetes/TopologyView.tsx @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ import { useState, useEffect, useCallback, useRef } from 'react'; import { useParams } from 'react-router-dom'; import { Card, CardContent, CardHeader, CardTitle, CardDescription } from '@/components/ui/card'; diff --git a/frontend/src/components/kubernetes/deployment-bundle-yaml.ts b/frontend/src/components/kubernetes/deployment-bundle-yaml.ts index d4e8bcc..bbb6107 100644 --- a/frontend/src/components/kubernetes/deployment-bundle-yaml.ts +++ b/frontend/src/components/kubernetes/deployment-bundle-yaml.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ // Deployment 多文档 YAML(Deployment + 关联 Service)加载与保存 // Logan.Li import { kubernetesApi } from '@/api'; import { diff --git a/frontend/src/components/kubernetes/deployment-workload/EditModeContainer.tsx b/frontend/src/components/kubernetes/deployment-workload/EditModeContainer.tsx index 8769aaf..8ceeb44 100644 --- a/frontend/src/components/kubernetes/deployment-workload/EditModeContainer.tsx +++ b/frontend/src/components/kubernetes/deployment-workload/EditModeContainer.tsx @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ // EditModeContainer.tsx — 编辑模式 Tab 容器,共享 manifest 状态 // Logan.Li import { useState, useEffect } from 'react'; import { Container, Settings, Database, Network } from 'lucide-react'; diff --git a/frontend/src/components/kubernetes/k8s-manifest-utils.ts b/frontend/src/components/kubernetes/k8s-manifest-utils.ts index 98d8665..6ef16c9 100644 --- a/frontend/src/components/kubernetes/k8s-manifest-utils.ts +++ b/frontend/src/components/kubernetes/k8s-manifest-utils.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ // K8s manifest 解析/序列化/精简共用工具 // Logan.Li import { cleanYAML } from './k8s-yaml-utils'; diff --git a/frontend/src/components/kubernetes/topology-helpers.tsx b/frontend/src/components/kubernetes/topology-helpers.tsx index b2ed755..c512fbb 100644 --- a/frontend/src/components/kubernetes/topology-helpers.tsx +++ b/frontend/src/components/kubernetes/topology-helpers.tsx @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ import { Network, Server, Globe, Cloud, Boxes, Database, Zap, Box, } from 'lucide-react'; diff --git a/frontend/src/components/monitor/dashboard/GrafanaDashboard.tsx b/frontend/src/components/monitor/dashboard/GrafanaDashboard.tsx index d58edf1..8bbcd5b 100644 --- a/frontend/src/components/monitor/dashboard/GrafanaDashboard.tsx +++ b/frontend/src/components/monitor/dashboard/GrafanaDashboard.tsx @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ // 监控大屏 — 标签页切换 Agent / Zabbix / Prometheus + 自定义仪表盘 // Logan.Li import React, { useState, useEffect, useMemo } from 'react'; import { diff --git a/frontend/src/components/monitor/log-center/LogAlertsPanel.tsx b/frontend/src/components/monitor/log-center/LogAlertsPanel.tsx index 9833d92..d8fdb40 100644 --- a/frontend/src/components/monitor/log-center/LogAlertsPanel.tsx +++ b/frontend/src/components/monitor/log-center/LogAlertsPanel.tsx @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ // LogAlertsPanel — 日志告警规则列表 // Logan.Li import { useState, useEffect, useCallback } from 'react'; import { Button } from '@/components/ui/button'; diff --git a/frontend/src/components/server/CloudServerImport.tsx b/frontend/src/components/server/CloudServerImport.tsx index a45e3d9..3c8c4f9 100644 --- a/frontend/src/components/server/CloudServerImport.tsx +++ b/frontend/src/components/server/CloudServerImport.tsx @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ import { useState, useEffect, useCallback } from 'react'; import { Button } from '@/components/ui/button'; import { Card, CardContent } from '@/components/ui/card'; diff --git a/frontend/src/components/system/SystemManager.tsx b/frontend/src/components/system/SystemManager.tsx index 5267ce1..4036c2d 100644 --- a/frontend/src/components/system/SystemManager.tsx +++ b/frontend/src/components/system/SystemManager.tsx @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ import { useState, useEffect } from 'react'; import { useLocation } from 'react-router-dom'; import { useConfirm } from '@/components/ui/confirm-dialog'; diff --git a/frontend/src/components/system/SystemRolesTab.tsx b/frontend/src/components/system/SystemRolesTab.tsx index 8caee09..5a7d668 100644 --- a/frontend/src/components/system/SystemRolesTab.tsx +++ b/frontend/src/components/system/SystemRolesTab.tsx @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ import { useState, useEffect, useCallback } from 'react'; import { toast } from 'sonner'; import { Card, CardContent, CardHeader, CardTitle, CardDescription } from '@/components/ui/card'; diff --git a/frontend/src/components/system/SystemUserTab.tsx b/frontend/src/components/system/SystemUserTab.tsx index 471e963..d3d3bfc 100644 --- a/frontend/src/components/system/SystemUserTab.tsx +++ b/frontend/src/components/system/SystemUserTab.tsx @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ import { Card, CardContent } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; diff --git a/frontend/src/components/system/UserDetailDialog.tsx b/frontend/src/components/system/UserDetailDialog.tsx index 660ae7d..88079cd 100644 --- a/frontend/src/components/system/UserDetailDialog.tsx +++ b/frontend/src/components/system/UserDetailDialog.tsx @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ // 用户详情弹窗(只读信息 + 角色徽章 + 编辑入口) // Logan.Li import { Button } from '@/components/ui/button'; import { Badge } from '@/components/ui/badge'; diff --git a/frontend/src/types/js-yaml.d.ts b/frontend/src/types/js-yaml.d.ts index 0d3f20e..7f7a88e 100644 --- a/frontend/src/types/js-yaml.d.ts +++ b/frontend/src/types/js-yaml.d.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ // js-yaml 类型声明兜底 // 项目直接依赖的 js-yaml 包未自带 .d.ts,此处给出最小声明,避免 TS7016。 // 如后续安装 @types/js-yaml,可删除本文件。 diff --git a/frontend/src/types/kubernetes.ts b/frontend/src/types/kubernetes.ts index 29c8507..1aca507 100644 --- a/frontend/src/types/kubernetes.ts +++ b/frontend/src/types/kubernetes.ts @@ -240,6 +240,23 @@ export interface K8sClusterComparison { }>; } +// ===== K8s Manifest(可视化编辑器使用的通用 manifest 类型)===== +export interface K8sManifest { + apiVersion?: string; + kind?: string; + metadata: { + name?: string; + namespace?: string; + labels?: Record; + annotations?: Record; + [key: string]: unknown; + }; + spec?: Record; + data?: Record; + type?: string; + [key: string]: unknown; +} + // ===== 通用 YAML 响应 ===== export interface K8sYamlResponse { yaml: string;