- {i18n.t("ui.datatable.s3c4d5e6f", { count: sortedData.length })}
+ {i18n.t("ui.datatable.totalCount", { count: sortedData.length })}
{selectable && (selectedIds?.length ?? 0) > 0 && (
diff --git a/frontend/src/locales/en-US.json b/frontend/src/locales/en-US.json
index c5025ef..43cbd75 100644
--- a/frontend/src/locales/en-US.json
+++ b/frontend/src/locales/en-US.json
@@ -376,7 +376,6 @@
"remark": "Remark",
"rename": "Rename",
"report": "Report",
- "requestts.sd3ab821c": "Session expired, please log in again",
"required": "Required",
"reset": "Reset",
"restart": "Restart",
@@ -511,7 +510,8 @@
"createFailed": "Create failed",
"created": "Created",
"severity": "Severity",
- "critical": "Critical"
+ "critical": "Critical",
+ "request.tokenExpired": "Session expired, please log in again"
},
"menu": {
"dashboard": "Dashboard",
@@ -2979,7 +2979,6 @@
"namespace": "所有命名空间"
},
"editAdvanced": {
- "s0c1fec65": "seconds",
"noManifest": "Manifest data not loaded. Please use YAML editor to modify directly.",
"updateStrategy": "Update Strategy",
"rollingUpdate": "Rolling Update",
@@ -3002,7 +3001,8 @@
"hostPIDDesc": "Share host PID namespace",
"shareProcessDesc": "Share process namespace",
"save": "Save",
- "saved": "update submitted"
+ "saved": "update submitted",
+ "secondsPlaceholder": "seconds"
},
"editBasic": {
"synced": "Synced",
@@ -3040,8 +3040,8 @@
"kubectl": {
"disconnected": "\\r\\n\\x1b[31m[连接已断开]\\x1b[0m\\r\\n",
"failed": "WebSocket 连接失败",
- "sc8107726": "\\r\\n\\x1b[31m[连接发生错误]\\x1b[0m\\r\\n",
- "cluster": "正在连接集群..."
+ "cluster": "正在连接集群...",
+ "connectErrorAnsi": "\\r\\n\\x1b[31m[连接发生错误]\\x1b[0m\\r\\n"
},
"misc": {
"cluster1": "加载集群列表失败:",
@@ -3069,7 +3069,6 @@
"execError": "Execution error",
"reconnect": "\\r\\n\\x1b[33m⚠ bash 不可用,请切换 /bin/sh 后重连。\\x1b[0m",
"close": "\\r\\n\\x1b[33m[连接已关闭]\\x1b[0m\\r\\n",
- "sc8107726": "\\r\\n\\x1b[31m[连接发生错误]\\x1b[0m\\r\\n",
"connected": "Connected",
"connecting": "Connecting",
"connectionError": "Connection error",
@@ -3082,7 +3081,8 @@
"fullscreen": "Fullscreen",
"close1": "Close",
"container1": "正在进入容器...",
- "enterPod": "Enter Pod container to execute commands"
+ "enterPod": "Enter Pod container to execute commands",
+ "connectErrorAnsi": "\\r\\n\\x1b[31m[连接发生错误]\\x1b[0m\\r\\n"
},
"podMetrics": {
"resources2": "Pod 资源用量",
@@ -4473,9 +4473,6 @@
"cronjobformdial.s2e10ee70": "Configure Cron Job",
"cronjobformdial.s3b56b1f9": "Format: min hour day month weekday",
"cronjobformdial.s15d864c1": "Execution Type",
- "systemtaskspanel.s1a2b3c4d": "Monitor",
- "systemtaskspanel.s2b3c4d5e": "Cleanup",
- "systemtaskspanel.s3c4d5e6f": "Cost",
"systemtaskspanel.s4d5e6f7g": "Built-in",
"systemtaskspanel.s5e6f7g8h": "Process-level built-in scheduling, not editable; cleanup and cost tasks support manual trigger",
"systemtaskspanel.s6f7g8h9i": "{{count}} tasks",
@@ -4493,7 +4490,10 @@
"systemtaskspanel.s8r9s0t1u": "Execution completed",
"systemtaskspanel.s9s0t1u2v": "Execution failed",
"systemtaskspanel.s0t1u2v3w": "Failed to load system tasks",
- "systemtaskspanel.s1u2v3w4x": "No system tasks"
+ "systemtaskspanel.s1u2v3w4x": "No system tasks",
+ "systemtaskspanel.monitor": "Monitor",
+ "systemtaskspanel.cleanup": "Cleanup",
+ "systemtaskspanel.finops": "Cost"
},
"rbac": {
"logRole": {
@@ -4571,12 +4571,12 @@
"codeSnippet": {
"copyDisabled": "Copy disabled"
},
- "datatable.s1a2b3c4d": "{{count}} selected",
- "datatable.s2b3c4d5e": "Cols",
- "datatable.s3c4d5e6f": "{{count}} total",
"datatable.s4d5e6f7g": "{{count}} selected",
"datatable.s5e6f7g8h": "Yes",
- "datatable.s6f7g8h9i": "No"
+ "datatable.s6f7g8h9i": "No",
+ "datatable.selectedCount": "{{count}} selected",
+ "datatable.columns": "Cols",
+ "datatable.totalCount": "{{count}} total"
},
"kubernetes": {
"cluster": {
@@ -6608,8 +6608,8 @@
"useauditsetting.s32e8a76e": "Failed to load audit settings",
"useauditsetting.s51680af0": "Please select valid retention days",
"useauditsetting.s7d55bd57": ", no expired records",
- "useldapmanageme.s1a2b3c4d": "OU \"{{name}}\" already exists, please use a different name",
- "useldapmanageme.s2b3c4d5e": "Failed to create OU: "
+ "useldapmanageme.ouExists": "OU \"{{name}}\" already exists, please use a different name",
+ "useldapmanageme.createOuFailed": "Failed to create OU: "
},
"aiops": {
"title": "AIOps",
@@ -7009,9 +7009,6 @@
"predictutilsts.providerTencent": "Tencent Cloud",
"predictutilsts.providerHuawei": "Huawei Cloud",
"predictutilsts.daysUntilThreshold": "Threshold in {{days}} days",
- "agentcli.s1a2b3c4d": "LLM + Tool Layer",
- "agentcli.s2b3c4d5e": "OpenAI-compatible LLM; tools include ssh_execute (remote execution) and analyze_output (output analysis).",
- "agentcli.s3c4d5e6f": "Security + Prompt",
"agentcli.s4d5e6f7g": "Five-level risk assessment + three-level safety mode; dangerous commands blocked, high-risk requires confirmation.",
"agentcli.s5e6f7g8h": "ReAct Core Engine",
"agentcli.s6f7g8h9i": "Think-Act-Observe loop (up to 16 rounds), retry on failure, loop detection to prevent infinite loops.",
@@ -7078,9 +7075,6 @@
"agentcli.s7y8z9a0b": "Denied execution: {{name}}",
"agentcli.s8z9a0b1c": "Please select a target host first",
"agentcli.s4f5g6h7i": "Connection not ready, please try again later",
- "predictivecost.s1a2b3c4d": "AI analysis failed, check LLM configuration or try again later",
- "predictivecost.s2b3c4d5e": "Cloud Cost Prediction Overview",
- "predictivecost.s3c4d5e6f": "AI Deep Analysis",
"predictivecost.s4d5e6f7g": "Loading billing data...",
"predictivecost.s5e6f7g8h": "No billing data, add cost records in Cloud Billing Management first",
"predictivecost.s6f7g8h9i": "Bills front-loaded at month start, recent 7-day avg {{avg}}; may contain pre-paid or retired resources; prediction uses recent run rate.",
@@ -7104,9 +7098,6 @@
"predictivecost.s4x5y6z7a": "Monthly budget",
"predictivecost.s5y6z7a8b": "Current {{current}} / Threshold {{threshold}}, Predicted {{predicted}}",
"predictivecost.s6z7a8b9c": "Breach probability",
- "predictive.s1a2b3c4d": "Metric Forecast",
- "predictive.s2b3c4d5e": "Capacity Planning",
- "predictive.s3c4d5e6f": "Cost Forecast",
"predictive.s4d5e6f7g": "Predictive Analysis",
"predictive.s5e6f7g8h": "Linear regression prediction, capacity planning and cost forecasting based on real-time metrics and cloud billing",
"predictive.s6f7g8h9i": "Confidence",
@@ -7142,7 +7133,16 @@
"predictutilsts.su1v2w3x4": "1. Use **bold subtitles** for sections with 1 key point each, e.g.: **Data Anomalies**, **Idle Resource Cleanup**, **Billing Mode Optimization**, **Storage Lifecycle**",
"predictutilsts.sv2w3x4y5": "2. If monthly avg and recent 7-day avg clearly contradict predicted month-end, explain in 'Data Anomalies' (pre-paid/shutdown etc.)",
"predictutilsts.sw3x4y5z6": "3. Give actionable recommendations per top service (EIP/disk/ECS spec/OSS lifecycle/reserved instances etc.)",
- "predictutilsts.sx4y5z6a7": "4. Pick 3-5 most relevant recommendations, under 350 words, no generic platitudes"
+ "predictutilsts.sx4y5z6a7": "4. Pick 3-5 most relevant recommendations, under 350 words, no generic platitudes",
+ "predictive.metricsTab": "Metric Forecast",
+ "predictive.capacityTab": "Capacity Planning",
+ "predictive.costTab": "Cost Forecast",
+ "predictivecost.aiFailed": "AI analysis failed, check LLM configuration or try again later",
+ "predictivecost.overview": "Cloud Cost Prediction Overview",
+ "predictivecost.aiInsight": "AI Deep Analysis",
+ "agentcli.archLayer": "LLM + Tool Layer",
+ "agentcli.archDesc": "OpenAI-compatible LLM; tools include ssh_execute (remote execution) and analyze_output (output analysis).",
+ "agentcli.securityLayer": "Security + Prompt"
},
"breadcrumb": {
"dashboard": "Dashboard",
diff --git a/frontend/src/locales/zh-CN.json b/frontend/src/locales/zh-CN.json
index e055423..db0bc67 100644
--- a/frontend/src/locales/zh-CN.json
+++ b/frontend/src/locales/zh-CN.json
@@ -376,7 +376,6 @@
"remark": "备注",
"rename": "重命名",
"report": "报告",
- "requestts.sd3ab821c": "登录已过期,请重新登录",
"required": "必填",
"reset": "重置",
"restart": "重启",
@@ -511,7 +510,8 @@
"createFailed": "创建失败",
"created": "已创建",
"severity": "级别",
- "critical": "严重"
+ "critical": "严重",
+ "request.tokenExpired": "登录已过期,请重新登录"
},
"menu": {
"dashboard": "仪表盘",
@@ -2979,7 +2979,6 @@
"namespace": "所有命名空间"
},
"editAdvanced": {
- "s0c1fec65": "秒",
"noManifest": "未获取到 manifest 数据,请使用 YAML 编辑模式直接修改。",
"updateStrategy": "更新策略 (Strategy)",
"rollingUpdate": "滚动更新",
@@ -3002,7 +3001,8 @@
"hostPIDDesc": "共享主机 PID 命名空间",
"shareProcessDesc": "共享进程命名空间",
"save": "保存",
- "saved": "更新已提交"
+ "saved": "更新已提交",
+ "secondsPlaceholder": "秒"
},
"editBasic": {
"synced": "已同步",
@@ -3040,8 +3040,8 @@
"kubectl": {
"disconnected": "\\r\\n\\x1b[31m[连接已断开]\\x1b[0m\\r\\n",
"failed": "WebSocket 连接失败",
- "sc8107726": "\\r\\n\\x1b[31m[连接发生错误]\\x1b[0m\\r\\n",
- "cluster": "正在连接集群..."
+ "cluster": "正在连接集群...",
+ "connectErrorAnsi": "\\r\\n\\x1b[31m[连接发生错误]\\x1b[0m\\r\\n"
},
"misc": {
"cluster1": "加载集群列表失败:",
@@ -3069,7 +3069,6 @@
"execError": "执行错误",
"reconnect": "\\r\\n\\x1b[33m⚠ bash 不可用,请切换 /bin/sh 后重连。\\x1b[0m",
"close": "\\r\\n\\x1b[33m[连接已关闭]\\x1b[0m\\r\\n",
- "sc8107726": "\\r\\n\\x1b[31m[连接发生错误]\\x1b[0m\\r\\n",
"connected": "已连接",
"connecting": "正在连接",
"connectionError": "连接错误",
@@ -3082,7 +3081,8 @@
"fullscreen": "全屏",
"close1": "关闭",
"container1": "正在进入容器...",
- "enterPod": "进入 Pod 容器执行命令"
+ "enterPod": "进入 Pod 容器执行命令",
+ "connectErrorAnsi": "\\r\\n\\x1b[31m[连接发生错误]\\x1b[0m\\r\\n"
},
"podMetrics": {
"resources2": "Pod 资源用量",
@@ -4473,9 +4473,6 @@
"cronjobformdial.s2e10ee70": "配置 Cron 定时任务",
"cronjobformdial.s3b56b1f9": "格式: 分 时 日 月 周",
"cronjobformdial.s15d864c1": "执行类型",
- "systemtaskspanel.s1a2b3c4d": "监控",
- "systemtaskspanel.s2b3c4d5e": "清理",
- "systemtaskspanel.s3c4d5e6f": "成本",
"systemtaskspanel.s4d5e6f7g": "内置",
"systemtaskspanel.s5e6f7g8h": "进程内置调度,不可编辑;清理与成本类任务支持手动触发",
"systemtaskspanel.s6f7g8h9i": "{{count}} 个任务",
@@ -4493,7 +4490,10 @@
"systemtaskspanel.s8r9s0t1u": "执行完成",
"systemtaskspanel.s9s0t1u2v": "执行失败",
"systemtaskspanel.s0t1u2v3w": "加载系统任务失败",
- "systemtaskspanel.s1u2v3w4x": "暂无系统任务"
+ "systemtaskspanel.s1u2v3w4x": "暂无系统任务",
+ "systemtaskspanel.monitor": "监控",
+ "systemtaskspanel.cleanup": "清理",
+ "systemtaskspanel.finops": "成本"
},
"rbac": {
"logRole": {
@@ -4571,12 +4571,12 @@
"codeSnippet": {
"copyDisabled": "不可复制"
},
- "datatable.s1a2b3c4d": "已选 {{count}} 项",
- "datatable.s2b3c4d5e": "列",
- "datatable.s3c4d5e6f": "共 {{count}} 条",
"datatable.s4d5e6f7g": "已选 {{count}}",
"datatable.s5e6f7g8h": "是",
- "datatable.s6f7g8h9i": "否"
+ "datatable.s6f7g8h9i": "否",
+ "datatable.selectedCount": "已选 {{count}} 项",
+ "datatable.columns": "列",
+ "datatable.totalCount": "共 {{count}} 条"
},
"kubernetes": {
"cluster": {
@@ -6608,8 +6608,8 @@
"useauditsetting.s32e8a76e": "加载审计设置失败",
"useauditsetting.s51680af0": "请选择有效的保留天数",
"useauditsetting.s7d55bd57": ",无超期记录",
- "useldapmanageme.s1a2b3c4d": "OU \"{{name}}\" 已存在,请使用其他名称",
- "useldapmanageme.s2b3c4d5e": "创建 OU 失败:"
+ "useldapmanageme.ouExists": "OU \"{{name}}\" 已存在,请使用其他名称",
+ "useldapmanageme.createOuFailed": "创建 OU 失败:"
},
"aiops": {
"title": "AIOps 智能",
@@ -7009,9 +7009,6 @@
"predictutilsts.providerTencent": "腾讯云",
"predictutilsts.providerHuawei": "华为云",
"predictutilsts.daysUntilThreshold": "{{days}} 天后触及阈值",
- "agentcli.s1a2b3c4d": "LLM + 工具层",
- "agentcli.s2b3c4d5e": "OpenAI 兼容 LLM;工具含 ssh_execute(远程执行)与 analyze_output(输出分析)。",
- "agentcli.s3c4d5e6f": "安全 + Prompt",
"agentcli.s4d5e6f7g": "五级风险评估 + 三级安全模式;危险命令硬性拒绝,高危命令弹框确认。",
"agentcli.s5e6f7g8h": "ReAct 核心引擎",
"agentcli.s6f7g8h9i": "思考→行动→观察循环(最多 16 轮),失败换法重试,循环检测防死循环。",
@@ -7078,9 +7075,6 @@
"agentcli.s7y8z9a0b": "已拒绝执行:{{name}}",
"agentcli.s8z9a0b1c": "请先选择目标主机",
"agentcli.s4f5g6h7i": "连接未就绪,请稍后重试",
- "predictivecost.s1a2b3c4d": "AI 解读失败,请检查大模型配置或稍后重试",
- "predictivecost.s2b3c4d5e": "云成本预测总览",
- "predictivecost.s3c4d5e6f": "AI 深度解读",
"predictivecost.s4d5e6f7g": "加载账单数据...",
"predictivecost.s5e6f7g8h": "暂无账单数据,请先在云账单管理中录入费用记录",
"predictivecost.s6f7g8h9i": "账单呈月初集中、近7日日均 {{avg}},可能含预付费或资源已停用;预测已按近期运行费率外推。",
@@ -7104,9 +7098,6 @@
"predictivecost.s4x5y6z7a": "月预算",
"predictivecost.s5y6z7a8b": "当前 {{current}} / 阈值 {{threshold}},预测 {{predicted}}",
"predictivecost.s6z7a8b9c": "触线概率",
- "predictive.s1a2b3c4d": "指标预测",
- "predictive.s2b3c4d5e": "容量规划",
- "predictive.s3c4d5e6f": "成本预测",
"predictive.s4d5e6f7g": "预测分析",
"predictive.s5e6f7g8h": "基于实时指标与云账单的线性回归预测、容量规划与成本前瞻",
"predictive.s6f7g8h9i": "置信度",
@@ -7142,7 +7133,16 @@
"predictutilsts.su1v2w3x4": "1. 用 **加粗小标题** 分段,每段下 1 条要点,例如:**数据疑点**、**闲置资源清理**、**计费模式优化**、**存储生命周期**",
"predictutilsts.sv2w3x4y5": "2. 若全月日均与近7日日均、预测月末存在明显矛盾,必须在「数据疑点」中说明原因(预付费/资源停机等)",
"predictutilsts.sw3x4y5z6": "3. 结合 Top 服务给出可落地建议(EIP/云盘/ECS规格/OSS生命周期/预留实例等)",
- "predictutilsts.sx4y5z6a7": "4. 选 3~5 条最相关建议,总字数 350 字以内,不要空泛套话"
+ "predictutilsts.sx4y5z6a7": "4. 选 3~5 条最相关建议,总字数 350 字以内,不要空泛套话",
+ "predictive.metricsTab": "指标预测",
+ "predictive.capacityTab": "容量规划",
+ "predictive.costTab": "成本预测",
+ "predictivecost.aiFailed": "AI 解读失败,请检查大模型配置或稍后重试",
+ "predictivecost.overview": "云成本预测总览",
+ "predictivecost.aiInsight": "AI 深度解读",
+ "agentcli.archLayer": "LLM + 工具层",
+ "agentcli.archDesc": "OpenAI 兼容 LLM;工具含 ssh_execute(远程执行)与 analyze_output(输出分析)。",
+ "agentcli.securityLayer": "安全 + Prompt"
},
"breadcrumb": {
"dashboard": "仪表盘",
diff --git a/frontend/src/utils/request.ts b/frontend/src/utils/request.ts
index 62ced36..89eaa60 100644
--- a/frontend/src/utils/request.ts
+++ b/frontend/src/utils/request.ts
@@ -101,7 +101,7 @@ async function request(
clearToken();
useUserStore.getState().logout();
window.location.href = '/login';
- throw new Error(i18n.t('common.requestts.sd3ab821c'));
+ throw new Error(i18n.t('common.request.tokenExpired'));
}
let json: ApiResponse;