From cde7bbe540d9177f53b996bd823f6f420248e419 Mon Sep 17 00:00:00 2001 From: attacker Date: Thu, 2 Jul 2026 00:08:23 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=B8=85=E7=90=86=20unused-vars=20?= =?UTF-8?q?=E5=9B=9E=E5=BD=92(32=E2=86=920)=20+=20=E4=BF=AE=E5=A4=8D=20go:?= =?UTF-8?q?embed=20=E7=BC=96=E8=AF=91=E9=98=BB=E5=A1=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. ESLint unused-vars 从 32 清零(回归修复) - 删除 14 个文件中未使用的 import(lucide 图标/shadcn 组件/JsonData 类型) - 移除未使用的变量/参数(categoryLabels/updateEntry/onSaved 等) - 涉及: AppRelease/PipelineEditor/KubernetesNodes/AlertCenter/SilenceRulesPanel 等 2. 修复 go:embed all:static 编译阻塞 - 新增 backend/static/.gitkeep 占位文件 - 全新 clone 后 go build ./... 可直接通过(不再依赖先 npm run build) 3. 安装缺失的 npm 依赖 - react-markdown/remark-gfm(AgentMarkdown 组件) - @codemirror/lang-python/@codemirror/legacy-modes(ScriptCodeEditor 组件) 验证: go build✅ | tsc -b✅ | npm build✅(21s) | ESLint any=41 unused=0 | 17/17 集成测试✅ --- backend/static/.gitkeep | 0 frontend/package-lock.json | 27 +++++++++++++++++-- .../aiops/AIPredictiveAnalytics.tsx | 2 -- frontend/src/components/deploy/AppRelease.tsx | 5 ---- .../src/components/deploy/PipelineEditor.tsx | 2 +- .../src/components/deploy/ReleaseManager.tsx | 1 - .../components/deploy/pipeline-helpers.tsx | 1 - .../src/components/deploy/releaseHelpers.tsx | 1 - .../deploy/releaseManagerHelpers.tsx | 1 - .../kubernetes/DeploymentEditService.tsx | 2 +- .../kubernetes/DeploymentEditStorage.tsx | 3 --- .../kubernetes/DeploymentWorkload.tsx | 1 - .../components/kubernetes/KubernetesNodes.tsx | 1 - .../components/kubernetes/NodeDetailPage.tsx | 1 - .../monitor/alert-center/AlertCenter.tsx | 1 - .../alert-center/SilenceRulesPanel.tsx | 2 +- .../monitor/dashboard/GrafanaDashboard.tsx | 2 +- .../PrometheusDatasourceManager.tsx | 1 - .../src/components/task/CronJobManager.tsx | 2 +- .../pages/approval/ApprovalWorkflowPage.tsx | 6 ----- .../src/pages/audit/AuditOperationsTab.tsx | 1 - .../host-monitor/ZoomableAreaChart.tsx | 1 - .../src/pages/monitor/host-monitor/utils.ts | 2 +- 23 files changed, 31 insertions(+), 35 deletions(-) create mode 100644 backend/static/.gitkeep diff --git a/backend/static/.gitkeep b/backend/static/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 76ba6a0..d1e3851 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -139,6 +139,7 @@ "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", @@ -1982,6 +1983,7 @@ "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.43.1.tgz", "integrity": "sha512-+BIjw/AG3tDQ4pJgTLPYdAW25eDE66YsvM4LKyVPgGzVgZ4a9Wj1SRX8kPVKgBDdPt8oHtZ15F0qx7p0oOHdHw==", "license": "MIT", + "peer": true, "dependencies": { "@codemirror/state": "^6.6.0", "crelt": "^1.0.6", @@ -4833,6 +4835,7 @@ "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.95.2.tgz", "integrity": "sha512-/wGkvLj/st5Ud1Q76KF1uFxScV7WeqN1slQx5280ycwAyYkIPGaRZAEgHxe3bjirSd5Zpwkj6zNcR4cqYni/ZA==", "license": "MIT", + "peer": true, "dependencies": { "@tanstack/query-core": "5.95.2" }, @@ -5063,6 +5066,7 @@ "integrity": "sha512-GYDxsZi3ChgmckRT9HPU0WEhKLP08ev/Yfcq2AstjrDASOYCSXeyjDsHg4v5t4jOj7cyDX3vmprafKlWIG9MXQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "undici-types": "~7.16.0" } @@ -5072,6 +5076,7 @@ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz", "integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==", "license": "MIT", + "peer": true, "dependencies": { "csstype": "^3.2.2" } @@ -5082,6 +5087,7 @@ "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", "devOptional": true, "license": "MIT", + "peer": true, "peerDependencies": { "@types/react": "^19.2.0" } @@ -5158,6 +5164,7 @@ "integrity": "sha512-iIACsx8pxRnguSYhHiMn2PvhvfpopO9FXHyn1mG5txZIsAaB6F0KwbFnUQN3KCiG3Jcuad/Cao2FAs1Wp7vAyg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.52.0", "@typescript-eslint/types": "8.52.0", @@ -5468,6 +5475,7 @@ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -5741,6 +5749,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", @@ -6317,7 +6326,8 @@ "version": "8.6.0", "resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-8.6.0.tgz", "integrity": "sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/embla-carousel-react": { "version": "8.6.0", @@ -6412,6 +6422,7 @@ "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -6966,6 +6977,7 @@ } ], "license": "MIT", + "peer": true, "peerDependencies": { "typescript": "^5 || ^6" }, @@ -7168,6 +7180,7 @@ "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", "dev": true, "license": "MIT", + "peer": true, "bin": { "jiti": "bin/jiti.js" } @@ -8511,6 +8524,7 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -8558,6 +8572,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -8774,6 +8789,7 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz", "integrity": "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==", "license": "MIT", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -8804,6 +8820,7 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.3.tgz", "integrity": "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==", "license": "MIT", + "peer": true, "dependencies": { "scheduler": "^0.27.0" }, @@ -8816,6 +8833,7 @@ "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.70.0.tgz", "integrity": "sha512-COOMajS4FI3Wuwrs3GPpi/Jeef/5W1DRR84Yl5/ShlT3dKVFUfoGiEZ/QE6Uw8P4T2/CLJdcTVYKvWBMQTEpvw==", "license": "MIT", + "peer": true, "engines": { "node": ">=18.0.0" }, @@ -9539,6 +9557,7 @@ "integrity": "sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", @@ -9715,6 +9734,7 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "devOptional": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -10054,6 +10074,7 @@ "integrity": "sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "esbuild": "^0.27.0", "fdir": "^6.5.0", @@ -10169,7 +10190,8 @@ "resolved": "https://registry.npmjs.org/xterm/-/xterm-5.3.0.tgz", "integrity": "sha512-8QqjlekLUFTrU6x7xck1MsPzPA571K5zNqWm0M0oroYEWVOptZ0+ubQSkQ3uxIEhcIHRujJy6emDWX4A7qyFzg==", "deprecated": "This package is now deprecated. Move to @xterm/xterm instead.", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/xterm-addon-fit": { "version": "0.8.0", @@ -10216,6 +10238,7 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.5.tgz", "integrity": "sha512-k7Nwx6vuWx1IJ9Bjuf4Zt1PEllcwe7cls3VNzm4CQ1/hgtFUK2bRNG3rvnpPUhFjmqJKAKtjV576KnUkHocg/g==", "license": "MIT", + "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } diff --git a/frontend/src/components/aiops/AIPredictiveAnalytics.tsx b/frontend/src/components/aiops/AIPredictiveAnalytics.tsx index 6f74564..429eed8 100644 --- a/frontend/src/components/aiops/AIPredictiveAnalytics.tsx +++ b/frontend/src/components/aiops/AIPredictiveAnalytics.tsx @@ -21,8 +21,6 @@ import { MemoryStick, Network, Activity, - BarChart3, - LineChart, Calendar, Sparkles, Zap, diff --git a/frontend/src/components/deploy/AppRelease.tsx b/frontend/src/components/deploy/AppRelease.tsx index 2847971..6ec0aab 100644 --- a/frontend/src/components/deploy/AppRelease.tsx +++ b/frontend/src/components/deploy/AppRelease.tsx @@ -1,6 +1,5 @@ import { useState, useEffect } from 'react'; import { useNavigate } from 'react-router-dom'; -import { Card, CardContent } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Badge } from '@/components/ui/badge'; @@ -24,14 +23,10 @@ import { Plus, Search, RotateCcw, - CheckCircle, - XCircle, GitBranch, GitCommit, Eye, Settings, - History, - Loader2, } from 'lucide-react'; import { releaseApi } from '@/api'; import { toast } from 'sonner'; diff --git a/frontend/src/components/deploy/PipelineEditor.tsx b/frontend/src/components/deploy/PipelineEditor.tsx index 362287d..9da7328 100644 --- a/frontend/src/components/deploy/PipelineEditor.tsx +++ b/frontend/src/components/deploy/PipelineEditor.tsx @@ -35,7 +35,7 @@ import { Card, CardContent } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Badge } from '@/components/ui/badge'; -import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; +import { Tabs, TabsContent } from '@/components/ui/tabs'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { Textarea } from '@/components/ui/textarea'; import { Switch } from '@/components/ui/switch'; diff --git a/frontend/src/components/deploy/ReleaseManager.tsx b/frontend/src/components/deploy/ReleaseManager.tsx index ed3777a..0223ace 100644 --- a/frontend/src/components/deploy/ReleaseManager.tsx +++ b/frontend/src/components/deploy/ReleaseManager.tsx @@ -27,7 +27,6 @@ import { GitCommit, User, Eye, - Loader2, Play, PackageOpen, } from 'lucide-react'; diff --git a/frontend/src/components/deploy/pipeline-helpers.tsx b/frontend/src/components/deploy/pipeline-helpers.tsx index a5a22f3..dd8b3b0 100644 --- a/frontend/src/components/deploy/pipeline-helpers.tsx +++ b/frontend/src/components/deploy/pipeline-helpers.tsx @@ -1,6 +1,5 @@ import { Badge } from '@/components/ui/badge'; import { CheckCircle, XCircle, Loader2 } from 'lucide-react'; -import type { JsonData } from '@/types/common'; // 流水线阶段定义 // Logan.Li export interface PipelineStage { diff --git a/frontend/src/components/deploy/releaseHelpers.tsx b/frontend/src/components/deploy/releaseHelpers.tsx index a32aedf..684bb60 100644 --- a/frontend/src/components/deploy/releaseHelpers.tsx +++ b/frontend/src/components/deploy/releaseHelpers.tsx @@ -1,6 +1,5 @@ // 发布相关共享工具函数与常量 // Logan.Li import { Badge } from '@/components/ui/badge'; -import type { JsonData } from '@/types/common'; import { CheckCircle, XCircle, diff --git a/frontend/src/components/deploy/releaseManagerHelpers.tsx b/frontend/src/components/deploy/releaseManagerHelpers.tsx index 9459306..6578148 100644 --- a/frontend/src/components/deploy/releaseManagerHelpers.tsx +++ b/frontend/src/components/deploy/releaseManagerHelpers.tsx @@ -1,7 +1,6 @@ // 发布管理(审批流)共享工具函数与常量 // Logan.Li // 注意:本文件专用于 ReleaseManager(含审批流,状态标签与 AppRelease 的 releaseHelpers 不同) import { Badge } from '@/components/ui/badge'; -import type { JsonData } from '@/types/common'; import { Clock, Check, diff --git a/frontend/src/components/kubernetes/DeploymentEditService.tsx b/frontend/src/components/kubernetes/DeploymentEditService.tsx index cdc2088..a2451a2 100644 --- a/frontend/src/components/kubernetes/DeploymentEditService.tsx +++ b/frontend/src/components/kubernetes/DeploymentEditService.tsx @@ -74,7 +74,7 @@ interface _SvcPortForm { const toArray = ( v: any) => (Array.isArray(v) ? v : (v?.list || v?.items || v?.data || [])); -export function DeploymentEditService({ clusterCode, namespace, deploymentName, manifest, onSaved, onCancel }: Props) { +export function DeploymentEditService({ clusterCode, namespace, deploymentName, manifest, onCancel }: Props) { const { toast } = useToast(); const confirm = useConfirm(); const [loading, setLoading] = useState(true); diff --git a/frontend/src/components/kubernetes/DeploymentEditStorage.tsx b/frontend/src/components/kubernetes/DeploymentEditStorage.tsx index fe42207..37b8b69 100644 --- a/frontend/src/components/kubernetes/DeploymentEditStorage.tsx +++ b/frontend/src/components/kubernetes/DeploymentEditStorage.tsx @@ -96,9 +96,6 @@ export function DeploymentEditStorage({ clusterCode, namespace, deploymentName, const defaultContainer = containers.find((c) => c !== '(unnamed)') || containers[0] || ''; - const updateEntry = (i: number, patch: Partial) => - setEntries((prev) => prev.map((e, idx) => (idx === i ? { ...e, ...patch } : e))); - const updateVolume = (i: number, patch: Partial) => setEntries((prev) => prev.map((e, idx) => (idx === i ? { ...e, volume: { ...e.volume, ...patch } } : e))); diff --git a/frontend/src/components/kubernetes/DeploymentWorkload.tsx b/frontend/src/components/kubernetes/DeploymentWorkload.tsx index 9a5491c..50bae94 100644 --- a/frontend/src/components/kubernetes/DeploymentWorkload.tsx +++ b/frontend/src/components/kubernetes/DeploymentWorkload.tsx @@ -14,7 +14,6 @@ import { RotateCw, Trash2, RefreshCw, - Loader2, XCircle, CheckCircle, AlertTriangle, diff --git a/frontend/src/components/kubernetes/KubernetesNodes.tsx b/frontend/src/components/kubernetes/KubernetesNodes.tsx index 0cbdf0d..d0f3863 100644 --- a/frontend/src/components/kubernetes/KubernetesNodes.tsx +++ b/frontend/src/components/kubernetes/KubernetesNodes.tsx @@ -1,5 +1,4 @@ import { useState, useEffect, useCallback } from 'react'; -import { Card, CardContent } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Badge } from '@/components/ui/badge'; diff --git a/frontend/src/components/kubernetes/NodeDetailPage.tsx b/frontend/src/components/kubernetes/NodeDetailPage.tsx index 1f73fa5..12735f0 100644 --- a/frontend/src/components/kubernetes/NodeDetailPage.tsx +++ b/frontend/src/components/kubernetes/NodeDetailPage.tsx @@ -10,7 +10,6 @@ import { import { RefreshCw, - Loader2, Server, Activity, ArrowLeft, diff --git a/frontend/src/components/monitor/alert-center/AlertCenter.tsx b/frontend/src/components/monitor/alert-center/AlertCenter.tsx index 9577de0..b928cfc 100644 --- a/frontend/src/components/monitor/alert-center/AlertCenter.tsx +++ b/frontend/src/components/monitor/alert-center/AlertCenter.tsx @@ -32,7 +32,6 @@ import { NotifyPolicyTab } from './NotifyPolicyTab'; import type { UnifiedAlertRule } from '@/api'; import type { Contact, ContactGroup } from './alert-center-helpers'; -import type { JsonData } from '@/types/common'; import { useTranslation } from 'react-i18next'; const AlertCenter: React.FC = () => { diff --git a/frontend/src/components/monitor/alert-center/SilenceRulesPanel.tsx b/frontend/src/components/monitor/alert-center/SilenceRulesPanel.tsx index bb6c79b..00f8e7a 100644 --- a/frontend/src/components/monitor/alert-center/SilenceRulesPanel.tsx +++ b/frontend/src/components/monitor/alert-center/SilenceRulesPanel.tsx @@ -1,6 +1,6 @@ // 告警静默规则面板 — 嵌入通知策略 Tab // Logan.Li import { useState, useEffect, useCallback } from 'react'; -import { VolumeX, Plus, RefreshCw, Clock, Calendar, Repeat, Edit, Trash2 } from 'lucide-react'; +import { VolumeX, Plus, RefreshCw, Edit, Trash2 } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { Badge } from '@/components/ui/badge'; import { Card, CardContent } from '@/components/ui/card'; diff --git a/frontend/src/components/monitor/dashboard/GrafanaDashboard.tsx b/frontend/src/components/monitor/dashboard/GrafanaDashboard.tsx index 320050e..0ff31ed 100644 --- a/frontend/src/components/monitor/dashboard/GrafanaDashboard.tsx +++ b/frontend/src/components/monitor/dashboard/GrafanaDashboard.tsx @@ -240,7 +240,7 @@ const AgentTab: React.FC = () => { { setOperating(prev => new Set(prev).add(id)); }} - onInstalled={(id) => { toast.success('Agent 安装任务已提交,后台执行中…'); setWizardOpen(false); fetch(); }} + onInstalled={() => { toast.success('Agent 安装任务已提交,后台执行中…'); setWizardOpen(false); fetch(); }} onFailed={(id) => { toast.error('安装失败'); setOperating(prev => { const next = new Set(prev); next.delete(id); return next; }); }} /> {/* ────────── 批量部署 Agent 对话框 ────────── */} diff --git a/frontend/src/components/monitor/datasource/PrometheusDatasourceManager.tsx b/frontend/src/components/monitor/datasource/PrometheusDatasourceManager.tsx index 8494870..688b084 100644 --- a/frontend/src/components/monitor/datasource/PrometheusDatasourceManager.tsx +++ b/frontend/src/components/monitor/datasource/PrometheusDatasourceManager.tsx @@ -6,7 +6,6 @@ import { Edit, Trash2, Star, - RefreshCw, Key, Plug, } from 'lucide-react'; diff --git a/frontend/src/components/task/CronJobManager.tsx b/frontend/src/components/task/CronJobManager.tsx index a73206e..1698077 100644 --- a/frontend/src/components/task/CronJobManager.tsx +++ b/frontend/src/components/task/CronJobManager.tsx @@ -8,7 +8,7 @@ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@/components/ui/select'; import { - Play, Plus, Search, Clock, Trash2, History, RefreshCw, PackageOpen, + Plus, Search, Clock, Trash2, History, RefreshCw, PackageOpen, } from 'lucide-react'; import { toast } from 'sonner'; import { cronJobApi, scriptApi, systemTaskApi } from '@/api'; diff --git a/frontend/src/pages/approval/ApprovalWorkflowPage.tsx b/frontend/src/pages/approval/ApprovalWorkflowPage.tsx index 6f57e7d..bdc070a 100644 --- a/frontend/src/pages/approval/ApprovalWorkflowPage.tsx +++ b/frontend/src/pages/approval/ApprovalWorkflowPage.tsx @@ -210,12 +210,6 @@ function WorkflowEditorModal({ workflow, users, onClose, onSaved }: EditorProps) const [submitting, setSubmitting] = useState(false); const [error, setError] = useState(''); - const categoryLabels: Record = { - resource: t('approval.category.resource'), - app: t('approval.category.app'), - permission: t('approval.category.permission'), - }; - const stepTypeLabels: Record = { submit: t('approval.step.submit'), audit: t('approval.step.audit'), diff --git a/frontend/src/pages/audit/AuditOperationsTab.tsx b/frontend/src/pages/audit/AuditOperationsTab.tsx index 9ed832a..0a251b1 100644 --- a/frontend/src/pages/audit/AuditOperationsTab.tsx +++ b/frontend/src/pages/audit/AuditOperationsTab.tsx @@ -4,7 +4,6 @@ import { useState, useEffect, useCallback, useMemo, useRef } from 'react'; import { cn } from '@/lib/utils'; import { useTranslation } from 'react-i18next'; import { useVirtualizer } from '@tanstack/react-virtual'; -import { Card, CardContent } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Badge } from '@/components/ui/badge'; diff --git a/frontend/src/pages/monitor/host-monitor/ZoomableAreaChart.tsx b/frontend/src/pages/monitor/host-monitor/ZoomableAreaChart.tsx index 4802c1b..a37d0fb 100644 --- a/frontend/src/pages/monitor/host-monitor/ZoomableAreaChart.tsx +++ b/frontend/src/pages/monitor/host-monitor/ZoomableAreaChart.tsx @@ -64,7 +64,6 @@ function ChartBody({ unit, yDomain, gradPrefix, - zoomRange, refLeft, refRight, onMouseDown, diff --git a/frontend/src/pages/monitor/host-monitor/utils.ts b/frontend/src/pages/monitor/host-monitor/utils.ts index 8291000..a6d6e44 100644 --- a/frontend/src/pages/monitor/host-monitor/utils.ts +++ b/frontend/src/pages/monitor/host-monitor/utils.ts @@ -168,7 +168,7 @@ export function buildMetricsFromHistory(history: JsonData[], timeConfig: TimeCon } /** 从过滤后历史计算实际数据时间跨度(用于展示) // Logan.Li */ -export function getActualDataSpan(history: JsonData[], range: HostMonitorTimeRange): string | null { +export function getActualDataSpan(history: JsonData[], _range: HostMonitorTimeRange): string | null { if (!history.length) return null; const ts = history.map(recordTimestamp).filter((t) => t > 0); if (!ts.length) return null;