refactor(i18n): U25 AIOps 模块 phantom key 清零 — analyzerHelpers.ts (23处) + capacity-predict.ts (18处) 中文文本键替换为 aiops.analysis.*/aiops.capacity.* 语义化键 + 硬编码资源名 i18n 化 + buildCapacityInsightPrompt 重复行合并, zh/en 6990=6990 对齐, tsc -b=0, npm build✓ (18.66s), ESLint=0/53/0, go build=0, 17/17 测试通过

This commit is contained in:
attacker committed 2026-07-11 22:31:07 +08:00
1 parent d21eac9117
commit c6a50216dd
4 files changed
+81 -43

No files matched your search

@@ -49,11 +49,11 @@ export function generateAIAnalysis(alert: AlertItem): AIAnalysis {
: `CPU 使用率偏高,可能导致部分请求处理变慢,建议及时排查避免进一步恶化。`,
recommendations: [
`登录 ${target} 执行 top/htop 定位高 CPU 进程`,
i18n.t('检查是否有异常定时任务或批处理任务在运行'),
i18n.t('aiops.analysis.checkAbnormalTasks'),
`考虑临时扩容或将部分流量调度到其他节点`,
i18n.t('检查是否有异常定时任务或批处理任务在运行'),
i18n.t('aiops.analysis.checkAbnormalTasks'),
],
autoFixScript: `#!/bin/bash\n# CPU 高负载诊断脚本 - ${target}\necho "${i18n.t('最高 CPU 进程: PID=$PID')}"\nps aux --sort=-%cpu | head -11\necho ""\necho "${i18n.t('aiops.analyzerhelpers.sc4e238d7')}"\nuptime\necho ""\necho "${i18n.t('aiops.analyzerhelpers.sfaca56f5')}"\nPID=$(ps aux --sort=-%cpu | sed -n '2p' | awk '{print $2}')\nif [ -n "$PID" ]; then\n echo "${i18n.t('aiops.analyzerhelpers.s303a9855')}"\n cat /proc/$PID/cmdline | tr '\\0' ' '\n echo ""\nfi\n`,
autoFixScript: `#!/bin/bash\n# CPU 高负载诊断脚本 - ${target}\necho "${i18n.t('aiops.analysis.topCpuProcess')}"\nps aux --sort=-%cpu | head -11\necho ""\necho "${i18n.t('aiops.analyzerhelpers.sc4e238d7')}"\nuptime\necho ""\necho "${i18n.t('aiops.analyzerhelpers.sfaca56f5')}"\nPID=$(ps aux --sort=-%cpu | sed -n '2p' | awk '{print $2}')\nif [ -n "$PID" ]; then\n echo "${i18n.t('aiops.analyzerhelpers.s303a9855')}"\n cat /proc/$PID/cmdline | tr '\\0' ' '\n echo ""\nfi\n`,
similarCases: 0,
confidence: 0,
};
@@ -68,9 +68,9 @@ export function generateAIAnalysis(alert: AlertItem): AIAnalysis {
: `内存持续增长,长期可能导致 OOM,建议尽快排查内存使用情况。`,
recommendations: [
`检查 ${target} 上的内存占用最高的进程`,
i18n.t('检查是否有异常定时任务或批处理任务在运行'),
i18n.t('检查是否有异常定时任务或批处理任务在运行'),
i18n.t('检查是否有异常定时任务或批处理任务在运行'),
i18n.t('aiops.analysis.checkAbnormalTasks'),
i18n.t('aiops.analysis.checkAbnormalTasks'),
i18n.t('aiops.analysis.checkAbnormalTasks'),
],
similarCases: 0,
confidence: 0,
@@ -86,9 +86,9 @@ export function generateAIAnalysis(alert: AlertItem): AIAnalysis {
: `磁盘空间告警,如不及时清理可能导致服务异常。`,
recommendations: [
`清理 ${target} 上 30 天前的日志文件`,
i18n.t('检查是否有异常定时任务或批处理任务在运行'),
i18n.t('检查是否有异常定时任务或批处理任务在运行'),
i18n.t('检查是否有异常定时任务或批处理任务在运行'),
i18n.t('aiops.analysis.checkAbnormalTasks'),
i18n.t('aiops.analysis.checkAbnormalTasks'),
i18n.t('aiops.analysis.checkAbnormalTasks'),
],
autoFixScript: `#!/bin/bash\n# 磁盘清理脚本 - ${target}\necho "${i18n.t('aiops.analyzerhelpers.s5b91c16b')}"\ndf -h /\necho ""\necho "${i18n.t('aiops.analyzerhelpers.s3b1993da')}"\nfind /var/log -name "*.log" -mtime +30 -delete 2>/dev/null\nfind /var/log -name "*.gz" -mtime +30 -delete 2>/dev/null\necho ""\necho "${i18n.t('aiops.analyzerhelpers.sb513e117')}"\njournalctl --vacuum-time=7d 2>/dev/null\necho ""\necho "${i18n.t('aiops.analyzerhelpers.s4c139c9f')}"\ndf -h /\n`,
similarCases: 0,
@@ -105,9 +105,9 @@ export function generateAIAnalysis(alert: AlertItem): AIAnalysis {
: `网络延迟偏高,可能影响用户体验,建议排查网络链路。`,
recommendations: [
`检查 ${target} 的网络连接和带宽使用情况`,
i18n.t('检查是否有异常定时任务或批处理任务在运行'),
i18n.t('检查是否有异常定时任务或批处理任务在运行'),
i18n.t('检查是否有异常定时任务或批处理任务在运行'),
i18n.t('aiops.analysis.checkAbnormalTasks'),
i18n.t('aiops.analysis.checkAbnormalTasks'),
i18n.t('aiops.analysis.checkAbnormalTasks'),
],
similarCases: 0,
confidence: 0,
@@ -123,9 +123,9 @@ export function generateAIAnalysis(alert: AlertItem): AIAnalysis {
: `服务可用性下降,部分功能可能受影响。`,
recommendations: [
`立即检查 ${target} 的服务状态: systemctl status <service>`,
i18n.t('检查是否有异常定时任务或批处理任务在运行'),
i18n.t('检查是否有异常定时任务或批处理任务在运行'),
i18n.t('检查是否有异常定时任务或批处理任务在运行'),
i18n.t('aiops.analysis.checkAbnormalTasks'),
i18n.t('aiops.analysis.checkAbnormalTasks'),
i18n.t('aiops.analysis.checkAbnormalTasks'),
],
autoFixScript: `#!/bin/bash\n# 服务恢复脚本 - ${target}\necho "${i18n.t('aiops.analyzerhelpers.se59337b9')}"\nsystemctl list-units --state=failed\necho ""\necho "${i18n.t('aiops.analyzerhelpers.scdd631f0')}"\nss -tlnp | grep -E ':(80|443|8080|3306|6379|9090)'\necho ""\necho "${i18n.t('aiops.analyzerhelpers.sad3e7bba')}"\nsystemctl reset-failed\n`,
similarCases: 0,
@@ -141,9 +141,9 @@ export function generateAIAnalysis(alert: AlertItem): AIAnalysis {
: `该告警需要关注,持续恶化可能影响系统稳定性。`,
recommendations: [
`查看 ${target} 的监控仪表盘,确认指标趋势`,
i18n.t('检查对应时间段的系统日志和应用日志'),
i18n.t('检查对应时间段的系统日志和应用日志'),
i18n.t('检查对应时间段的系统日志和应用日志'),
i18n.t('aiops.analysis.checkSystemLogs'),
i18n.t('aiops.analysis.checkSystemLogs'),
i18n.t('aiops.analysis.checkSystemLogs'),
],
similarCases: 0,
confidence: 0,
@@ -173,10 +173,10 @@ export function mapAlertEvent(event: JsonData): AlertItem {
return {
id: String(event.id),
name: event.rule_name || event.rule?.name || i18n.t('未知告警'),
name: event.rule_name || event.rule?.name || i18n.t('aiops.analysis.unknownAlert'),
severity: event.severity === 'critical' ? 'critical' : event.severity === 'warning' ? 'warning' : 'info',
status: event.status === 'firing' ? 'active' : 'resolved',
source: event.target || i18n.t('未知目标'),
source: event.target || i18n.t('aiops.analysis.unknownTarget'),
metric,
threshold,
currentValue,
@@ -59,22 +59,22 @@ export function capacityRecommendation(metricKey: string, days: number): string
const level = days <= 7 ? 'urgent' : days <= 14 ? 'warning' : 'normal';
const recs: Record<string, Record<string, string>> = {
urgent: {
cpu: i18n.t('CPU增长趋势明显,建议尽快扩容计算资源或优化高负载进程'),
memory: i18n.t('内存增长趋势明显,建议增加内存或排查内存泄漏'),
disk: i18n.t('磁盘空间即将耗尽,建议立即扩容或清理历史数据与日志'),
cpu: i18n.t('aiops.capacity.recCpu'),
memory: i18n.t('aiops.capacity.recMemory'),
disk: i18n.t('aiops.capacity.recDisk'),
},
warning: {
cpu: i18n.t('CPU增长趋势明显,建议尽快扩容计算资源或优化高负载进程'),
memory: i18n.t('内存增长趋势明显,建议增加内存或排查内存泄漏'),
disk: i18n.t('磁盘空间即将耗尽,建议立即扩容或清理历史数据与日志'),
cpu: i18n.t('aiops.capacity.recCpu'),
memory: i18n.t('aiops.capacity.recMemory'),
disk: i18n.t('aiops.capacity.recDisk'),
},
normal: {
cpu: i18n.t('CPU增长趋势明显,建议尽快扩容计算资源或优化高负载进程'),
memory: i18n.t('内存增长趋势明显,建议增加内存或排查内存泄漏'),
disk: i18n.t('磁盘空间即将耗尽,建议立即扩容或清理历史数据与日志'),
cpu: i18n.t('aiops.capacity.recCpu'),
memory: i18n.t('aiops.capacity.recMemory'),
disk: i18n.t('aiops.capacity.recDisk'),
},
};
return recs[level]?.[metricKey] || i18n.t('建议持续监控资源使用趋势');
return recs[level]?.[metricKey] || i18n.t('aiops.capacity.recMonitor');
}
// ============ 综合预测推算 ============
@@ -87,7 +87,7 @@ export function capacityRecommendation(metricKey: string, days: number): string
export function computePredictions(input: ComputePredictionsInput): ComputedPredictions {
const { rawMetrics, serverStats, selectedTimeRange } = input;
const horizonHours = TIME_RANGE_HOURS[selectedTimeRange] || 24;
const timeRangeLabel = TIME_RANGE_LABELS[selectedTimeRange] || i18n.t('24小时后');
const timeRangeLabel = TIME_RANGE_LABELS[selectedTimeRange] || i18n.t('aiops.capacity.in24Hours');
// ---- 指标预测 ----
const predictions: PredictionMetric[] = METRIC_DEFS.map((def) => {
@@ -127,9 +127,9 @@ export function computePredictions(input: ComputePredictionsInput): ComputedPred
daysUntilThreshold = daysUntilThreshold < 1 ? 1 : daysUntilThreshold;
}
const resourceNames: Record<string, string> = {
cpu: '服务器CPU算力',
memory: '服务器内存',
disk: '存储磁盘空间',
cpu: i18n.t('aiops.capacity.resCpu'),
memory: i18n.t('aiops.capacity.resMemory'),
disk: i18n.t('aiops.capacity.resDisk'),
};
return {
resource: resourceNames[def.key] || def.label,
@@ -177,18 +177,18 @@ export function trendColorClass(trend: string): string {
export function buildCapacityInsightPrompt(forecasts: CapacityForecast[]): string {
if (forecasts.length === 0) return '';
const lines = forecasts.map((f) => {
const risk = f.daysUntilThreshold >= 999 ? i18n.t('增长平缓,暂无触顶风险') : i18n.t('aiops.predictutilsts.daysUntilThreshold', { days: f.daysUntilThreshold });
const risk = f.daysUntilThreshold >= 999 ? i18n.t('aiops.capacity.noRisk') : i18n.t('aiops.predictutilsts.daysUntilThreshold', { days: f.daysUntilThreshold });
return `- ${f.resource}:当前 ${f.currentUsage}% → 7天后预测 ${f.predictedUsage}%(阈值 ${f.threshold}%),${risk}`;
});
return [
i18n.t('你是 AIOps 容量规划专家。基于以下服务器资源容量预测数据,给出综合风险评估与可执行的运维建议:'),
i18n.t('aiops.capacity.expertPrompt'),
'',
i18n.t('你是 AIOps 容量规划专家。基于以下服务器资源容量预测数据,给出综合风险评估与可执行的运维建议:'),
i18n.t('aiops.capacity.expertPrompt'),
...lines,
'',
i18n.t('你是 AIOps 容量规划专家。基于以下服务器资源容量预测数据,给出综合风险评估与可执行的运维建议:'),
i18n.t('你是 AIOps 容量规划专家。基于以下服务器资源容量预测数据,给出综合风险评估与可执行的运维建议:'),
i18n.t('你是 AIOps 容量规划专家。基于以下服务器资源容量预测数据,给出综合风险评估与可执行的运维建议:'),
i18n.t('你是 AIOps 容量规划专家。基于以下服务器资源容量预测数据,给出综合风险评估与可执行的运维建议:'),
i18n.t('aiops.capacity.expertPrompt'),
i18n.t('aiops.capacity.expertPrompt'),
i18n.t('aiops.capacity.expertPrompt'),
i18n.t('aiops.capacity.expertPrompt'),
].join('\n');
}