refactor(i18n): U32 全量 hash key 清理 — 151 个 hash key → 语义化键 + React Hooks 警告 53→43

- 151 个 hash-style flat key (s+hex 后缀) 全部重命名为语义化 nested key
  - monitor 58 个: alertChannelDialog/alertManager/alertRulesTab/chartRangeHint/
    esIndexPicker/helpers/hostMonitor/logAlertSpanel/logClusterPanel/logDingAssistant/
    logQueryToolbar/logRbac/lokiLabelBrowse/metricsExplorer/middlewareMonit/
    mwOverviewChart/portPolicyDialog/prometheusDashb/queryHistoryPan/savedQueriesPan/
    siteMonitor/snmpMonitor/snmpOverviewChart/zabbixDashboard/zabbixDatasource
  - kubernetes 42 个: deploymentBundle/deploymentEditAdvanced/deploymentEditService/
    deploymentView/deploymentWorkload/eventsPage/kubernetesCluster/namespaceManage/
    namespaceResource/podExecTerminal/podFileBrowser/podLogsViewer/podMetricsPage/
    resourceVisualEditor/workloadViewPage
  - aiops 17 个: agentCliMessage/aiAnalysisResult/analyzerHelpers/assistant/predictUtils
  - agent 12 个: agentAlerts/agentMonitor/hostDetailDialog
  - cloud 13 个: billingRecordDialog/billingRuleDialog/platformManager
  - pipeline 6 个: buildNodesManage/deployRbac/deployTargetField
  - system 3 个: auditSetting
- 58 个源文件中的 147 处 t()/i18n.t() 调用更新为语义化键路径
- 3 个命名空间冲突修复 (monitor.hostMonitor/agent.agentMonitor/aiops.aiAnalysisResult
  原 string 值提升为 .title 子键)
- React Hooks 警告修复 (53→43, -10):
  - exhaustive-deps 4→0: useMemo/useCallback 添加 t 到 deps 数组
  - preserve-manual-memoization 5→0: 变量遮蔽修复 (filter(t)→filter(tg))
  - 1 个冗余 eslint-disable 指令移除 (CronJobManager)
- zh/en 7480=7480 完全对齐, 0 个 hash key 残留
- tsc -b=0, npm build✓ (17.59s), ESLint errors=0/warnings=43/any=0
- go build=0, 17/17 集成测试通过, Docker healthy
This commit is contained in:
attacker committed 2026-07-12 14:35:01 +08:00
1 parent 4f2d279865
commit ff426d908b
63 files changed
+674 -477

No files matched your search

@@ -85,7 +85,7 @@ export function HostDetailDialog({
<Badge className="bg-red-500/15 dg-text-red border border-red-500/30"> {i18n.t('agent.agentOffline')} </Badge>
)}
</DialogTitle>
<DialogDescription className="sr-only"> {i18n.t('agent.hostdetaildialo.sffa4f720')} </DialogDescription>
<DialogDescription className="sr-only"> {i18n.t('agent.hostDetailDialog.desc')} </DialogDescription>
</DialogHeader>
<div className="space-y-4">
@@ -109,9 +109,9 @@ export function HostDetailDialog({
<SelectValue />
</SelectTrigger>
<SelectContent className="dg-input">
<SelectItem value="1"> {i18n.t('agent.hostdetaildialo.s3851af2c')} </SelectItem>
<SelectItem value="6"> {i18n.t('agent.hostdetaildialo.s2d59b172')} </SelectItem>
<SelectItem value="24"> {i18n.t('agent.hostdetaildialo.s768a1b34')} </SelectItem>
<SelectItem value="1"> {i18n.t('agent.hostDetailDialog.last1h')} </SelectItem>
<SelectItem value="6"> {i18n.t('agent.hostDetailDialog.last6h')} </SelectItem>
<SelectItem value="24"> {i18n.t('agent.hostDetailDialog.last24h')} </SelectItem>
</SelectContent>
</Select>
</div>
@@ -121,7 +121,7 @@ export function HostDetailDialog({
<Loader2 className="h-5 w-5 animate-spin dg-text-muted" />
</div>
) : chartData.length === 0 ? (
<div className="h-full flex items-center justify-center text-sm dg-text-muted"> {i18n.t('agent.hostdetaildialo.sdc73dbe9')} </div>
<div className="h-full flex items-center justify-center text-sm dg-text-muted"> {i18n.t('agent.hostDetailDialog.noHistoryData')} </div>
) : (
<ResponsiveContainer width="100%" height="100%">
<AreaChart data={chartData} margin={{ top: 5, right: 5, bottom: 0, left: -20 }}>
@@ -161,7 +161,7 @@ export function HostDetailDialog({
端口发现 ({ports.length})
</span>
{ports.length === 0 ? (
<p className="text-xs dg-text-muted"> {i18n.t('agent.hostdetaildialo.se7887d60')} </p>
<p className="text-xs dg-text-muted"> {i18n.t('agent.hostDetailDialog.noPortData')} </p>
) : (
<div className="flex flex-wrap gap-1.5 max-h-32 overflow-y-auto">
{ports.map((p, idx) => (