Logan.Li
|
d666840ed0
|
fix: 修复SSH终端Escape按键
- 将弹框捕获的Escape控制字符直接转发到远端
- 阻止xterm对同一次Escape事件重复发送
|
2026-07-26 18:21:55 +08:00 |
|
Logan.Li
|
82b53c043b
|
fix: 修复SSH终端还原布局溢出
- 约束xterm容器最小宽度并隐藏旧画布溢出
- 在布局绘制前同步终端与远端PTY尺寸
|
2026-07-26 18:03:33 +08:00 |
|
Logan.Li
|
198139648d
|
fix: 修复RDP最大化画面模糊
- 最大化时按浏览器可用尺寸重建RDP会话
- 隔离分辨率切换过程中的旧连接事件
|
2026-07-26 17:26:07 +08:00 |
|
attacker
|
5a427e02d4
|
fix(lint): 清理 EventsTab 冗余 eslint-disable 指令 — F7 (ca036a8) 提交时引入的 react-hooks/set-state-in-effect 标注,规则版本演进后不再触发,保留反而引入 ESLint Unused disable warning
- ESLint warnings 43→42 (-1)
- 剩余 42 warnings 全部为 react-refresh/only-export-components 架构性约束
- tsc -b=0, npm build✓ (23.04s), 17/17 集成测试通过
|
2026-07-19 18:11:32 +08:00 |
|
attacker
|
337fbff617
|
docs: ROADMAP U49 cost-predict.ts i18n 深度治理记录
|
2026-07-17 04:05:59 +08:00 |
|
attacker
|
083f4477db
|
fix(i18n): cost-predict.ts hash key 清理 + 硬编码中文清零 + 错误 key 引用修复
- 23 个 predictutilsts.s* hash-style 键重命名为 costPredict.* 语义化键
- 7 处 buildCostInsightPrompt 硬编码中文模板字面量→i18n.t() 插值调用
- 修复 costRecommendation 函数引用错误 key (predictMemLeak→costPredict.rec*)
- 修复 dimension 字段引用 predictDiskFull→costPredict.allProviders
- 修复 providerLabel 引用 predictIn24h→costPredict.allProviders
- 新增 34 个语义化翻译键 (aiops.costPredict.*), zh/en 8102→8113 对齐
- tsc -b=0, npm build✓ (19.29s), ESLint=0/43/any=0, go build=0
- 17/17 集成测试通过
|
2026-07-17 04:05:32 +08:00 |
|
attacker
|
d6ed1978ef
|
docs: ROADMAP U48 i18n locale 懒加载优化记录
|
2026-07-17 01:50:03 +08:00 |
|
attacker
|
8e211b64af
|
perf(frontend): U48 i18n locale 懒加载 — en-US JSON 动态导入拆分为独立 chunk
问题: src/i18n/index.ts 静态导入 zh-CN.json (200KB compact) + en-US.json
(292KB compact),两者共 486KB 全部内联到主 index chunk,致主 chunk 696KB
超过 Vite 600KB 警告阈值。
修复:
- src/i18n/index.ts: 移除 en-US.json 静态导入,改为 ensureLocaleLoaded()
动态导入 + i18n.addResourceBundle() 按需加载
- zh-CN (默认/回退语言) 保持静态内联,无行为变化
- en-US 仅在用户切换英文时按需 fetch (290KB 独立 chunk)
- 已选英文的用户刷新页面时异步加载 en-US (短暂中文闪烁,可接受)
- src/store/index.ts: setLanguage 调用 ensureLocaleLoaded 确保目标语言包
加载完成后再切换
结果:
- 主 index chunk: 696KB → 423KB (-39%, -273KB)
- en-US chunk: 290KB 独立懒加载 (仅英文用户首次切换时 fetch)
- Vite 600KB chunk 警告消除
- tsc -b=0, npm build✓ (18.18s), ESLint=0/43/any=0, go build=0
- 17/17 集成测试通过, Docker healthy
|
2026-07-17 01:49:25 +08:00 |
|
attacker
|
ca036a85ca
|
feat(k8s): F7 集群详情EventsTab真实后端对接 + go vet修复
1. EventsTab.tsx: DEMO_EVENTS硬编码→kubernetesApi.getEvents真实K8s事件
- 复用 normalizeK8sEvent/formatEventRelative 工具(与 EventsPage 一致)
- 新增 loading/empty 状态 + 刷新按钮
- Warning事件优先排序 + 限100条防溢出
- KubernetesClusterDetail 传入 clusterCode prop
- 修复 Q28 组件拆分时遗留的 demo 数据未对接缺口
2. aiops_alert_analysis.go: log.Printf %s→%d 修复 go vet 失败
- AlertID 类型为 uint, %s 格式符不匹配致 go test 构建失败
- go vet ./... 全量零错误
验证: tsc -b=0, npm build✓ (18.00s), go build=0, go vet=0, 17/17测试通过
Events API 返回5条真实事件 (type=Normal, reason=Pulled, count=5487)
|
2026-07-16 21:23:19 +08:00 |
|
attacker
|
a874832f10
|
fix(lint): 补全 AuditOperationsTab react-hooks/incompatible-library 抑制指令 — U12 遗漏的 TanStack Virtual 兼容性标注 (同 useVirtualRows/PodsTab), ESLint warnings 43→42 (仅剩 react-refresh 架构性约束), tsc -b=0, npm build✓, 17/17测试通过
|
2026-07-16 12:57:22 +08:00 |
|
attacker
|
96ed39d122
|
feat(i18n): U47 最后3处残余硬编码中文清零 — 全前端非注释CJK=0 (cloud-server-import阿里云/腾讯云/华为云→i18n.t + TerminalSessionsTab批量删除→t + PreviewTable类型→t), 复用已有翻译键零新增, zh/en 8102=8102对齐, tsc -b=0, npm build✓ (18.02s), ESLint=0/43/any=0, go build=0, 17/17测试通过
|
2026-07-16 04:42:09 +08:00 |
|
attacker
|
21728be445
|
feat(i18n): U46 残余UI硬编码中文清零 — 6文件12处→0 (UserFormDialog/CredentialManager/RdpAuditViewer/LiveMonitorDialog/ServerFileBrowser/context-loaders) +17翻译键 zh/en 8085→8102对齐
|
2026-07-16 02:29:47 +08:00 |
|
attacker
|
6288fa0071
|
feat(i18n): U45 AI告警分析模块i18n补全 — analyzerHelpers 25处硬编码中文→i18n.t()插值 + 预测图标双语兼容
|
2026-07-15 07:47:45 +08:00 |
|
attacker
|
05ee051879
|
refactor(i18n): U44 残余硬编码中文清零 — 终端审计状态+凭证类型+流水线阶段+时间格式+CSV导出
20 文件 ~70 处 UI 硬编码中文清零:
- credential-manager/constants.ts: 8 凭证类型 label/desc → labelKey/descKey + i18n.t()
- pipeline-run-detail/types.ts: 6 阶段 label → i18n.t('deploy.stage.*') + labelKey
- pipeline-manager/constants.ts + pipeline-editor/types.ts: 分秒 duration → i18n.t('common.duration.minSec')
- LiveMonitorDialog: 6 终端状态消息 → t()
- RdpAuditViewer: 6 RDP审计状态 → i18n.t('monitor.rdp.*')
- WorkspaceTermDialog: 2 终端连接状态 → t()
- TerminalSessionsTab: 4 时长格式+状态标签 → i18n.t()/t()
- k8s-event-utils + QueryHistoryPanel: 6 相对时间 → i18n.t('common.duration.*Ago')
- export-audit.ts: 9 CSV导出表头 → i18n.t('system.auditExport.*')
- useAuditSettings: 4 审计保留策略消息 → i18n.t('system.auditSettings.*')
- event-handler.ts: 4 AgentCLI事件消息 → i18n.t('aiops.cli.*')
- 其他 9 文件: NotifyPolicyTab/RoleFormDialog/CronJobViewDialog/TerminalOutput/shared-components/prometheus-ds/helpers/CloudServerImport/AdvancedSettingsPanel/releaseManagerHelpers
新增 75 翻译键, zh/en 7987→8059 对齐
tsc -b=0, npm build✓ (17.13s), ESLint=0/43/any=0, go build=0, 17/17 测试通过
|
2026-07-14 23:13:32 +08:00 |
|
attacker
|
bd1ccefa7f
|
fix(k8s): 修复 shared-components.tsx JSX 结构错误致前端构建失败 + 补全残余 i18n 硬编码中文
- fix: shared-components.tsx ContainerInfo 端口区块多余 <div> 标签致 JSX 闭合错误 (TS17008)
- i18n: EventsPage/DeploymentDetail/DeploymentEditAdvanced/Containers/Storage 等 K8s 组件残余硬编码中文→t() 调用
- i18n: zh/en 7987 键完全对齐, 新增 k8s.eventsPage/k8s.workload 等语义化键
- tsc -b=0, npm build✓ (17.48s), ESLint errors=0/warnings=43/any=0, go build=0
- 17/17 集成测试通过, Docker 部署 healthy
|
2026-07-14 20:07:46 +08:00 |
|
attacker
|
39a4432f79
|
refactor(i18n): U43 深度残余硬编码中文 UI 文本清零 — 17 文件 ~40 处→0
趋势标签(上升/下降/平稳) + K8s 卡片标题(Pod级别/安全上下文/实例/详情) + data-table 默认值(搜索/暂无数据) + Deployment 编辑器标签(数据卷/挂载/只读写/manifest提示/镜像拉取凭证) + HostSettings 4 个命名空间描述 + 7 个 K8s 页面刷新按钮 + 资源编辑器新建/编辑 + Agent 执行命令描述 + 账单保存成功 toast + 容量预警标题
新增 common 30 语义化翻译键, zh/en 7898→7928 对齐
tsc -b=0, npm build✓ (16.55s), ESLint=0/43/any=0, go build=0, 17/17 测试通过
|
2026-07-14 05:27:49 +08:00 |
|
attacker
|
c6e0d6ca57
|
refactor(i18n): U42 残余硬编码中文彻底清零 — 33文件54处→0, zh/en 7847→7898对齐
全量 JSX children + toast/confirm + sr-only 描述硬编码中文清零:
- Kubernetes模块: UpdateStrategyCard maxSurge/maxUnavailable说明 + IngressCreateForm host域名/Service端口 + ServiceCreateForm 端口配置/selector + DeploymentEditService 无selector/个关联/暂无Service/Ingress + ClusterOverviewPage 核 + KubernetesClusterDialog 已配置 + KubectlTerminal/ResourceVisualEditor/CreateHPADialog/DeploymentEditContainers/Storage + PodInstancesTable/UpdateStrategySelectorCards
- AI模块: PredictiveCapacityTab AI深度解读/紧急/警告/7天预测/预计N天 + PredictiveCostTab AI深度解读 + event-handler.ts 高危操作确认toast
- Deploy模块: DeployCredentials 启用/禁用 + DeployRBAC 删除角色confirm + WorkspaceTermDialog + CredFormDialog Windows用户
- Monitor模块: AlertRulesTab 删除confirm/分钟 + PrometheusDatasourceManager/LogDatasourcePage 删除confirm + QueryHistoryPanel 条
- System模块: ServerFileBrowser/TerminalDialog/RdpAuditViewer sr-only + SystemManager/CredentialManager/TerminalSessionsTab 删除confirm + SecuritySettingsTab 30分钟/2小时
- Task模块: CronJobViewDialog 次
新增 61 翻译键 (k8s.editAdvanced 6 + k8s.editService 11 + k8s.cluster 2 + k8s.misc 9 + aiops.capacity 9 + aiops.cost 1 + aiops.cli 2 + deploy 4 + monitor 5 + system 10 + task 1 + common 2)
tsc -b=0, npm build✓ (17.71s), ESLint=0/43/any=0, go build=0, 17/17 测试通过
|
2026-07-14 00:51:36 +08:00 |
|
attacker
|
a7838aaf65
|
refactor(i18n): U41 残余硬编码中文清零 — 工具函数+审计RDP标签+AIOps分析+Monitor残余+审批选项
18 文件 ~35 处 UI 硬编码中文→t()/i18n.t() 调用:
- agent-utils.ts timeAgo() 秒前/分钟前/小时前
- utils.ts formatDistanceToNow() 分钟前/小时前/天前
- request.ts 响应解析失败错误消息
- ActiveSessionsPanel/HistorySessionsPanel RDP 在线/历史会话标签
- MetricsExplorer 清除/已选/最近1小时
- HostMonitor 当前主机 subtitle
- AIAnalysisResult 证据链 (新增 useTranslation hook)
- capacity-predict.ts 容量预测摘要模板
- ApprovalResourcePage 阿里云/腾讯云/华为云
- ApprovalPermissionPage 堡垒机
- site-monitor/helpers.ts 频率/时间/证书天数格式化
- site-monitor/analytics.ts 证书剩余/检查失败/延迟波动事件
- middleware-monitor MwTargetChartsPanel/MwTrendChart/helpers.ts
- snmp-monitor SnmpMetricTrendChart/SnmpDeviceChartsPanel
- host-monitor/utils.ts 图表点数标签 + PortPolicyDialog 系统进程说明
新增 34 翻译键 (common.duration.secAgo/hourAgo/dayAgo + common.selected/
responseParseError/rdpActiveSessions/rdpHistorySessions/rdpSessionCount/
evidenceChain/last1Hour/currentHost + monitor.lbl 10键 + monitor.siteMonitor
8键 + approval.provider 3键 + approval.permType 1键 +
monitor.portPolicyDialog.systemProcessDesc + aiops.capacity.summary)
zh/en 7813→7847 对齐; tsc -b=0, npm build✓ (17.31s), ESLint=0/43/any=0,
go build=0, 17/17 测试通过
|
2026-07-13 22:21:47 +08:00 |
|
attacker
|
4e2ba77aa8
|
refactor(i18n): U40 Monitor + Agent 子组件残余硬编码中文 i18n 补全 — 14 文件 ~50 处→0
- ContextSwitchCard: CTX/IRQ/次 → t()
- ProcessTable: agentWaitData/cpuUsagePercent → t()
- FDUsageCard: fdHandles → t()
- PortMonitorTab: 黑名单/白名单/策略配置/暂无端口数据 → t()
- PortPolicyDialog: 白名单全量上报/黑名单仅上报/端口列表/逗号分隔/白名单无需配置/已输入端口 → t()
- HostTimeRangePicker: 时间范围/自定义/取消/应用 → t()
- DualLineChart: 接收/发送 → t(), i18n.t→useTranslation hook
- ZoomableAreaChart: 暂无数据 → t()
- SiteResultsPanel: 选择任务/次/可用率/立即拨测/SSL证书预警/到期/剩余/阈值/天 → t()
- MiddlewareMonitor: Redis单机集群/上次更新/添加平台默认/暂无实例 → t()
- SiteMonitor: subtitle → t()
- SNMPMonitor: 标题/采集间隔/IP地址/OID模板/SNMP版本/确认/暂无设备/采集指标/暂无指标 → t()
- HealthProbeSection: TCP目标地址/TCP端口 → t()
- AgentAlerts: Agent告警/刷新/未恢复/已恢复/恢复/新建规则/创建第一条规则 → i18n.t()
新增 monitor.lbl 46 语义化翻译键 + agent.alerts 6 键
zh/en 7762→7814 对齐
tsc -b=0, npm build✓ (16.88s), ESLint=0/43/any=0, go build=0, 17/17 测试通过
|
2026-07-13 19:45:45 +08:00 |
|
attacker
|
70a7c2907c
|
docs: ROADMAP — U39 残余 JSX 属性/模板字面量中文清零
|
2026-07-13 13:13:26 +08:00 |
|
attacker
|
5205def47f
|
refactor(i18n): U39 残余 JSX 属性/模板字面量中文清零 — 14 处→0
10 文件修复:
- DualLineChart: subtitle 接收/发送→i18n.t(monitor.lbl.receiveSend)
- NetworkTab: 5处 unit="个"→t(common.unitCount)
- FDUsageCard: subtitle 当前→t(monitor.lbl.currentFDUsage)
- NamespaceOverviewPage: subtitle 命名空间概览→i18n.t(k8s.nsOverview.subtitle)
- NamespaceManagementPage: subtitle 资源配额→i18n.t(k8s.nsMgmt.quotaSubtitle)
- CreateHPADialog: title+text 命名空间→i18n.t(k8s.hpa.targetInfo)
- LogFieldSidebar: title 个值→i18n.t(common.fieldValues)
- LiveMonitorDialog: title 全屏/退出全屏→t(common.fullscreen/exitFullscreen)
- ExecutionHistoryDialog: title 成功/失败→t(task.execHistory.successFail)
- LdapSettingsTab: className 成功检查→ldapTestSuccess boolean 状态
新增 11 翻译键 (common.unitCount/fieldValues/exitFullscreen/fullscreen +
monitor.lbl.receiveSend/currentFDUsage + k8s.nsOverview.subtitle/nsMgmt.quotaSubtitle/hpa.targetInfo +
task.execHistory.successFail), zh/en 7751→7762 对齐
tsc -b=0, npm build✓ (16.94s), ESLint=0/0/any=0, go build=0, 17/17 测试通过
|
2026-07-13 13:12:54 +08:00 |
|
attacker
|
a1d82574a7
|
refactor(i18n): U38 phantom CTK 清理 — 13 文件 16 处模板字面量/JSX 属性残余中文→i18n.t() 调用
13 文件 16 处 UI-facing phantom CTK (i18n.t() 模板字面量中的中文片段) 全部替换为语义化 i18n.t() 调用:
- LogsHeader: '行'suffix→common.lineSuffix
- analyzerHelpers: '当前值'→common.currentValue
- DeploymentEditStorage: 2 toast description→k8s.editStorage.*Desc (插值)
- WorkloadViewPage: 2 toast description→k8s.workloadView.restartSentDesc + k8s.workloads.scaleSuccessDesc (插值)
- ServerFileBrowser: confirm→common.confirmDeleteType (插值)
- LogDatasourcePage: toast '可达'→aiops.reachable
- LogAlertsPanel: confirm→monitor.deleteRuleConfirmDesc (插值)
- DeployTargetFields: JSX '(多容器时填写)'→common.fillIfMultiContainer
- UserGroupsManager: 3 处 confirm/desc→deploy.rbac.deleteGroupDesc + pipeline.removeMemberDesc + common.memberCount (插值)
- BuildNodesManager: JSX '(可选)'→common.optional (已有键复用)
- useLdapManagement: confirm→system.ldapMgmt.deleteEntryDesc (插值)
新增 14 语义化翻译键 (5 common + 2 k8s.editStorage + 1 k8s.workloadView + 1 k8s.workloads + 1 aiops + 1 monitor + 1 deploy.rbac + 1 pipeline + 1 system.ldapMgmt), zh/en 7737→7751 +14 对齐
tsc -b=0, npm build✓ (16.86s), ESLint=0/43/any=0, go build=0, 17/17 测试通过
|
2026-07-13 08:55:28 +08:00 |
|
attacker
|
7c80e35411
|
refactor(i18n): U37 全量 JSX 文本节点硬编码中文清零 — 65 文件 151 处→0, 新增 common.* 98 翻译键, zh/en 对齐, tsc -b=0, npm build✓ (17.96s), ESLint=0/43/any=0, go build=0, 17/17 测试通过
|
2026-07-13 06:39:08 +08:00 |
|
attacker
|
e274ba7b9b
|
docs: ROADMAP — U36 全量 JSX 属性 + toast 硬编码中文清零
|
2026-07-13 04:20:33 +08:00 |
|
attacker
|
09b7fd4ad5
|
refactor(i18n): U36 全量 JSX 属性 + toast 硬编码中文清零 — 20 文件 30 处 → 0
清理 23 处 JSX 属性 (title/placeholder/label/description) + 7 处 toast 调用硬编码中文:
- Deploy 模块 (AppRelease/DeployCredentials/PipelineManager/WorkspaceTermDialog/CredFormDialog/JobRoleCreateDialog/PipelineCreateDialog/AdvancedSettingsPanel)
- Server 模块 (ServerForm)
- System 模块 (LdapManagementSection/LiveMonitorDialog/SystemManager)
- Audit 模块 (ActiveSessionsPanel/HistorySessionsPanel)
- Monitor 模块 (AlertRulesTab/PrometheusDatasourceManager/SNMPMonitor)
- AIOps 模块 (PredictiveCapacityTab)
- Common/UI (TerminalLoadingOverlay/copy-button)
新增 25 翻译键 (common.connectingEllipsis/enteringWorkspace/connectingMonitor + deploy.* 11键 + server.jsonFormatPlaceholder + system.* 3键 + audit.* 2键 + monitor.* 3键 + aiops.aiAnalysisFailedToast + pipeline.subtitle)
copy-button.tsx 从 import i18n → useTranslation() hook
3 组件新增 useTranslation hook (TerminalLoadingOverlay/WorkspaceTermDialog/LiveMonitorDialog/PredictiveCapacityTab)
zh/en 7616→7640 +24 对齐, tsc -b=0, npm build✓ (17.25s), ESLint=0/43/0, go build=0, 17/17 测试通过
|
2026-07-13 04:20:10 +08:00 |
|
attacker
|
8d64936caf
|
refactor(i18n): U35 Deploy + Task 模块残余 JSX 硬编码中文清理 — PipelineRunPanel 12处 + CronJobTable 12处 + ExecutionHistoryDialog 10处 + ScrollButtons 2处, 新增 54 翻译键(deploy.runStatus/task.cronJobCol/task.execHistory/deploy.credCol/common.*), zh/en 7565→7616 对齐, tsc -b=0, npm build✓ (17.02s), ESLint=0/43/0, go build=0, 17/17 测试通过
|
2026-07-12 23:47:22 +08:00 |
|
attacker
|
0dbb85f5b8
|
refactor(i18n): U34 System & User 模块 i18n 清理 — ProfilePage + ResetPasswordDialog + SystemRolesTab + LdapManagementSection 4 文件 UI 硬编码中文清零
- ProfilePage.tsx: 从零接入 useTranslation,基本信息/安全设置/密码修改/用户名邮箱手机/账号来源 15 处中文→t()
- ResetPasswordDialog.tsx: 从零接入 useTranslation,重置密码标题/描述/LDAP提示/新密码确认密码/确认重置 11 处中文→t()
- SystemRolesTab.tsx: 权限分组标签(云资源/自动化/审批/审计)+toast 校验+confirm description+角色计数+空状态+权限列表计数+编码标签+尾部文案 12 处中文→t()/i18n.t()
- LdapManagementSection.tsx: 验证按钮+根OU标签+创建按钮×2+导入按钮+编辑用户描述 8 处中文→t()
- 新增 user.profile.* 14键 + user.resetPwd.* 11键 + system.* 16键 共 41 翻译键
- zh/en 7524→7565 +41 对齐
- tsc -b=0, npm build✓ (16.05s), ESLint errors=0/any=0/unused=0, go build=0
- 17/17 集成回归测试通过
|
2026-07-12 21:29:58 +08:00 |
|
attacker
|
ad9acea1e5
|
refactor(i18n): U33 K8s 资源编辑器 + Pod 日志/Metrics 模板字面量中文清零
resource-visual-editors/ 5 文件 (ConfigMap/Secret/Service/Ingress/PvcEditor):
- 保存按钮文案 (保存配置/密钥/Service/Ingress/PVC)
- IngressEditor: (可选)/手工输入/帮助文本/常见示例/手动输入/继续手动输入
- PvcEditor: 访问模式描述 (单节点读写/多节点只读/多节点读写)
pod-logs-viewer/ 3 文件:
- ControlBar: 导出/刷新/实时/停止按钮
- LogContentArea: 加载中… 占位
- LogsHeader: 日志标题模板
PodLogsViewer: 6 处错误消息 + DialogTitle/Description
PodMetricsPage: subtitle 模板字面量 + 所有命名空间
PodExecTerminal: 连接错误消息
17 处 toast description 模板字面量中文→i18n.t() 插值:
- DeploymentEditAdvanced/Containers/Storage: 更新已提交
- DeploymentView: 回滚/伸缩
- DeploymentDetail: 伸缩/镜像更新
- DeploymentEditService: 资源删除
- ResourceVisualEditor/NamespaceResourcePage: 资源更新/YAML下载
- ClusterOverviewPage: 集群未找到
- DeploymentEditContainers: 容器名称/镜像为空
5 处 confirm description 中文→i18n.t() 插值:
- DeploymentView/EditService/Detail/WorkloadViewPage/MiddlewareMonitor/SiteMonitor/HealthProbeSection
5 处 subtitle 模板字面量中文→i18n.t():
- PodMetricsPage/CapacityPage/EventsPage/KubernetesNodes/ClusterOverviewPage
新增 k8s.rve 14键 + k8s.toast 18键 + k8s.podMetrics 4键 + k8s.podLogs 13键 = 49 翻译键
zh/en 7481→7524 完全对齐
tsc -b=0, npm build✓ (17.76s), ESLint errors=0/warnings=43/any=0, go build=0, 17/17 测试通过
|
2026-07-12 16:51:57 +08:00 |
|
attacker
|
5fbb5f824d
|
docs: ROADMAP — U32 全量 hash key 清理 + React Hooks 修复完成
|
2026-07-12 14:35:33 +08:00 |
|
attacker
|
ff426d908b
|
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
|
2026-07-12 14:35:01 +08:00 |
|
attacker
|
4f2d279865
|
refactor(i18n): U31 AIOps Agent CLI 组件 i18n 修复 — Q7/Q35 拆分后丢失的 i18n 集成全部修复
6 个文件迁移 (AgentCLI + AgentCLIToolbar + AgentCLIHistory + AgentCLIEmptyState + ChatInputArea + agent-cli-constants.ts):
- 新增 aiops.cli.* 命名空间 100 翻译键 (10 子分类)
- SAFETY_MODES/TIPS_HOST/TIPS_KUBERNETES 常量改为 getSafetyModes(t)/getTipsHost(t)/getTipsKubernetes(t) 工厂函数
- 全部 UI 硬编码中文清零 (66→0)
- zh/en 7381→7481 +100 键对齐
- tsc -b=0, npm build✓ (18.21s), ESLint=0/53/0, go build=0, 17/17 测试通过
|
2026-07-12 12:17:47 +08:00 |
|
attacker
|
6dfddb426c
|
docs: 更新 ROADMAP — U30 i18n 损坏调用修复完成
|
2026-07-12 09:49:46 +08:00 |
|
attacker
|
3039b76cb5
|
fix(i18n): U30 修复 8 处批量 i18n 转换损坏的调用 — DeploymentEditContainers/DeploymentEditStorage/AgentRuleDialog/LogFieldSidebar
损坏原因: 早期批量正则 i18n 转换 (U20 记录的 i18n.t() 损坏模式遗留) 将模板表达式/JSX
碎片错误包裹进 i18n.t() 调用, 产生运行时垃圾文本渲染.
修复清单:
- DeploymentEditContainers.tsx:85 — toast 调用 description 字段损坏 (i18n.t('), description: ...'))
- DeploymentEditStorage.tsx:175 — !manifest 空状态文案损坏
- DeploymentEditStorage.tsx:202 — 数据卷卡片副标题损坏
- AgentRuleDialog.tsx:111 — DialogDescription 损坏 (i18n.t('>阈值 {ruleForm.metric !== '))
- AgentRuleDialog.tsx:157 — 操作符 Label 损坏
- AgentRuleDialog.tsx:183 — 端口 Label 损坏
- AgentRuleDialog.tsx:195 — 持续时间 Label 损坏
- LogFieldSidebar.tsx:68 — 搜索框 placeholder 损坏
新增 i18n 键 (zh/en 对齐 7370→7376 +6):
- agent.ruleDialog.description / operator / port / duration
- kubernetes.storage.volumeDesc
- monitor.lbl.searchFields
验证: tsc -b=0, npm build✓ (17.99s), ESLint=0/53/0, go build=0, 17/17 测试通过
|
2026-07-12 09:48:09 +08:00 |
|
attacker
|
064b6c4ec2
|
refactor(i18n): U29 phantom key 全项目清零 — 28 个 phantom key → 0
AlertRuleDialog.tsx (9处) + DeployTargetFields.tsx (3处) + HealthProbeSection.tsx (2处+1处硬编码) + PodLogsViewer.tsx (2处终端ANSI字符串) + AlertChannelDialog.tsx (2处) + PodMetricsPage.tsx/CapacityPage.tsx (各1处) + PodExecTerminal.tsx (1处终端ANSI) + BuildNodesManager.tsx (1处) + HostDetailDialog.tsx (1处)
修复类型:
- 批量正则损坏的 i18n.t('>中文 <span className=') → 语义化键
- 终端 ANSI 转义字符串 (PodLogsViewer/PodExecTerminal) → 移除 i18n.t() 包裹改纯字符串
- 硬编码中文 (取消/通知渠道提示/日志数据源提示) → i18n.t() 调用
新增 16 个翻译键 (monitor.alertRuleDialog2.* + monitor.alertChannel.name + agent.portCount + monitor.lbl.noProbeHint)
zh/en 7358→7375 +17 键对齐
phantom key 28→0 (全项目零 phantom key)
tsc -b=0, npm build✓ (17.00s), ESLint=0/53/0, go build=0, 17/17 测试通过
|
2026-07-12 07:34:42 +08:00 |
|
attacker
|
b2715ca3bd
|
refactor(i18n): U28 多模块 phantom key 清零 — theme/middleware-monitor/site-monitor/analytics/cost-predict/predict-types/agentAlertHelper/export-audit/AgentCLIMessages/copy-button 10 文件 74 phantom key → 语义化键, 新增 4 命名空间 (theme/agent.alerts.metric*/audit.*) + 扩展 3 命名空间 (monitor.lbl.mw*/site*/aiops.predict*), zh/en 7294→7358 +64 键对齐, phantom key 103→29 (残留全为 JSX 模板表达式/ANSI 转义码误匹配), tsc -b=0, npm build✓ (17.40s), ESLint=0/53/0, go build=0, 17/17 测试通过
|
2026-07-12 05:18:52 +08:00 |
|
attacker
|
b812b3b20c
|
refactor(i18n): U27 多模块 phantom key 批量清理 — Cloud/Deploy/Agent/Monitor/System 5 模块 25 文件, 180 个 phantom key → 51 残留, 129 个替换为语义化键, 新增 12 子命名空间, zh/en 7185→7294 +109 键对齐, tsc -b=0, npm build✓ (16.31s), ESLint=0/0/0, go build=0, 17/17 测试通过
|
2026-07-12 03:00:20 +08:00 |
|
attacker
|
7f5295cfc2
|
refactor(i18n): U26 Kubernetes 模块 phantom key 大规模清理 — 32 文件 171 phantom key → 8 残留(均为误匹配), 163 个替换为 k8s.* 语义化键, 新增 19 子命名空间 + 扩展 8 个已有, zh/en 6990→7185 +195 键对齐, tsc -b=0, npm build✓ (17.59s), ESLint=0/53/0, go build=0, 17/17 测试通过
|
2026-07-12 00:43:20 +08:00 |
|
attacker
|
c6a50216dd
|
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 测试通过
|
2026-07-11 22:31:07 +08:00 |
|
attacker
|
d21eac9117
|
refactor(i18n): U24 Monitor 模块 i18n hook 迁移 — 26 个 .tsx 文件从全局 i18n.t() 迁移到 useTranslation() hook + 89 个 phantom 中文文本键替换为 monitor.lbl.* 语义化键
- 新增 monitor.lbl 翻译子命名空间 89 键(HostMonitor/Middleware/Site/SNMP/Shared)
- 26 .tsx: import i18n → useTranslation() hook + i18n.t('中文') → t('monitor.lbl.semanticKey')
- 模块级代码(TABS/METRIC_CATEGORIES)保留 i18n.t() + 语义化键
- 1 .ts helpers 文件 phantom 键替换
- zh/en 6886→6975 +89 键对齐
- tsc -b=0, npm build✓ (17.16s), ESLint=0/53/0, go build=0, Docker healthy
|
2026-07-11 20:15:44 +08:00 |
|
attacker
|
de6f9454fc
|
refactor(i18n): U23 Task 模块 i18n 治理 — 4 文件 phantom key + hash key + 硬编码中文清零
- CronJobManager/CronJobFormDialog/ScriptManager/RemoteExecPage
从 import i18n 全局调用改为 useTranslation() hook
- 42 处 phantom key (i18n.t('Chinese text') → 语义化键)
- 28 个孤儿 hash key 清理 (cronjobformdial.s*/remoteexecpaget.s*)
- 50+ 处硬编码 JSX 中文 → t() 调用
- 新增 task.cronJob.*/task.scriptList.*/task.remoteExec.* 子命名空间
- zh/en 6825→6886 keys 对齐
- tsc -b=0, npm build✓ (17.46s), ESLint=0/45/0, go build=0
- 17/17 集成回归测试通过
|
2026-07-11 17:48:04 +08:00 |
|
attacker
|
a8f6fd190b
|
refactor(i18n): U22 日志中心组件 i18n 治理 — QuickQueryBar/types-v3/TimeRangePicker/LogRBAC 中文键清零
- QuickQueryBar.tsx: 23 处中文键 → monitor.logCenter.quickQuery.* 语义键
- types-v3.ts: 15 处中文键 → monitor.logCenter.quickQuery.* 语义键 (含 QUICK_TEMPLATES 3 引擎)
- TimeRangePicker.tsx: 13 处中文键 → monitor.timeRangePicker.* 语义键 + 修复 3 个复制粘贴 bug 键
(i18n.t('开启后折叠行仅显示前 500 字预览') 应为 '选择时间范围'/'绝对时间'/'自定义时间范围')
(i18n.t(' > 另存为 <ChevronDown className=') 应为 '相对时间')
- LogRBAC.tsx: 10 处中文键/硬编码 → monitor.logRbac.* 语义键 + 插值键 (scopeCount/deleteConfirm)
- zh/en 新增 68 键对齐 (7038→7098), tsc -b=0, npm build✓ (17.41s), ESLint=0/0/0, 17/17 测试通过
|
2026-07-11 15:15:47 +08:00 |
|
attacker
|
fba5fc46b6
|
refactor(i18n): U21 Zabbix 组件 i18n 治理 — ZabbixDatasourceManager + ZabbixDashboard 从 i18n.t() 全局改为 useTranslation() hook
- ZabbixDatasourceManager.tsx (415L): 30 处 i18n.t()/硬编码中文清零, 删除 5 个 monitor.zabbixdatasourc.* hash 键, 新增 monitor.zabbixDs.* 语义化命名空间 (23 键)
- ZabbixDashboard.tsx (162L): 12 处 i18n.t()/硬编码中文清零, 删除 monitor.zabbixdashboard.* + monitor.prometheusdashb.s5e8eb212 hash 键, 修复 3 个中文幻影键 (i18n.t('磁盘') → t('monitor.zabbixDs.disk') 等)
- 新增 common.days/common.seconds 通用单位键
- 删除 monitor.zabbixdatasourc (5 hash 键) + monitor.zabbixdashboard (1 hash 键) + monitor.prometheusdashb.s5e8eb212 hash 键
- zh/en 6767=6767 对齐, tsc -b=0, npm build✓ (17.41s), ESLint=0/43/0/0, go build=0, 17/17 测试通过
|
2026-07-11 12:57:46 +08:00 |
|
attacker
|
f953ba3248
|
fix(U20): ESLint static-components 清零 + CredDetailDialog 内联组件修复 + i18n 损坏修复
- CredDetailDialog.tsx: Field 内联组件提取为模块级 CredField (react-hooks/static-components 23→0)
- 修复 8 处被批量正则损坏的 i18n.t() 调用 (i18n.t('>名称:</span>') → 语义化键)
- 6 处硬编码中文清零 (凭据详情/密钥数据/无/创建时间/更新时间/安全提示)
- 新增 deploy.cred.sensitiveWarn i18n 键 (zh/en 对齐)
- ESLint warnings 66→43 (-35%), errors=0, any=0, unused=0
- tsc -b=0, npm build✓ (17.29s), go build=0, 17/17 测试通过
|
2026-07-11 10:22:34 +08:00 |
|
attacker
|
bb2b50276a
|
refactor(i18n): U19 i18n hash 键治理 — 删除 866 死键 + 重命名 21 高频键
死键清理: 从 zh-CN.json 和 en-US.json 移除 866 个重构遗弃的 unreferenced
hash keys (filename.hash 格式)。这些键在组件迁移到语义化键后成为孤儿。
Live 键重命名 (21 个):
ui.datatable.s1a2b3c4d → selectedCount
ui.datatable.s2b3c4d5e → columns
ui.datatable.s3c4d5e6f → totalCount
aiops.predictive.s{1-3} → metricsTab/capacityTab/costTab
aiops.predictivecost.s{1-3} → aiFailed/overview/aiInsight
task.systemtaskspanel.s{1-3} → monitor/cleanup/finops
aiops.agentcli.s{1-3} → archLayer/archDesc/securityLayer
system.useldapmanageme.s{1-2} → ouExists/createOuFailed
common.requestts.sd3ab821c → common.request.tokenExpired
k8s.editAdvanced.s0c1fec65 → secondsPlaceholder
k8s.{kubectl,podExec}.sc8107726 → connectErrorAnsi
影响: zh/en 7597→6731 keys 对齐, 文件 328KB→276KB (-16%)
仍有 172 个 live hash keys 待后续重命名
tsc -b=0, npm build✓ (17.45s), ESLint=0/66/0, go build=0, 17/17 测试通过
|
2026-07-11 08:08:07 +08:00 |
|
attacker
|
543365596d
|
refactor(i18n): U19 清理 866 个死 i18n hash 键 — 孤儿键在重构后从未被引用
从 zh-CN.json 和 en-US.json 移除 866 个 unreferenced hash keys(重构遗弃的
filename.hash 格式键名如 common.themets.s02b08e05)。这些键在组件迁移到语义
化键后成为孤儿,仅占用 JSON 文件空间。
影响: zh-CN.json 328KB→276KB (-16%), en-US.json 332KB→280KB (-16%)
行数 8139→7273 (-866 行/文件)
剩余 6731 keys zh/en 完全对齐
仍有 193 个 live hash keys 待重命名(下一步)
tsc -b=0, npm build✓ (17.40s), ESLint errors=0/warnings=66/any=0
|
2026-07-11 08:02:04 +08:00 |
|
attacker
|
4c4aaf60f6
|
fix(i18n): U18 幻影 i18n hash 键治理 — 从 git 历史恢复 1540/1696 处原始中文文本 (91%)
问题: i18n 批量转换 (commit 55f216c) 生成了 813 个 hash 键引用但翻译从未写入 JSON,
导致用户在受影响模块看到 hash 键路径(如 monitor.quickquerybarts.s64559524)而非实际文本.
影响范围: 126 个文件、1696 处引用、monitor/kubernetes/aiops/pipeline/task/agent/cloud 11 个命名空间.
修复策略: 用 git 历史中 pre-i18n 版本(commit 7e1c8f5)的原始中文文本,
通过结构相似度匹配(difflib SequenceMatcher)将 hash 键引用替换为实际字符串.
对于组件拆分后产生的新文件,映射到其原始源文件查找中文文本.
修复明细:
- monitor 命名空间: 335 键修复(站点拨测/日志中心/中间件监控/告警规则/SNMP/主机监控)
- kubernetes 命名空间: 195 键修复(资源编辑器/Deployment编辑器/事件/命名空间/Pod日志)
- aiops 命名空间: 70 键修复(容量预测/成本预测/告警分析)
- pipeline/task/agent/cloud/common 命名空间: 其余键修复
验证: tsc -b=0, npm build✓ (16.87s), ESLint=0/0/0, go build=0, 17/17 测试通过, Docker healthy
|
2026-07-11 05:49:23 +08:00 |
|
attacker
|
be1011eb58
|
refactor(i18n): U17 K8s 残余组件 i18n 补全 — NodeDetailPage 16 处硬编码中文清零 + 8 个 hash 键替换为语义化 k8s.nodeDetail.* + DeploymentWorkload 12 处 toast/confirm 硬编码中文清零. 新增 k8s.nodeDetail 命名空间 21 键 + k8s.deploymentDetail 扩展 12 键(含插值). zh/en 7564→7597 对齐. 组件从 i18n.t() 全局改为 useTranslation() hook. tsc -b=0, npm build✓, ESLint=0, 17/17 测试通过
|
2026-07-11 03:33:31 +08:00 |
|
attacker
|
a85e063a47
|
refactor(i18n): U16 AgentWizard i18n 治理 — 29 个 agentwizardtsx.* hash 乱码键清理为 agent.wizard.* 语义化键 + 组件从 i18n.t() 全局改为 useTranslation() hook + 8 处硬编码中文 UI 文案清零. zh/en 7564=7564 对齐, tsc -b=0, npm build✓, ESLint=0/66/0, 17/17 测试通过
|
2026-07-11 01:21:34 +08:00 |
|
attacker
|
f178609d09
|
refactor(quality): Q38 UnifiedQueryPanel 529L→353L (-33%) — 提取 useLogQueryEngine + useLogExport 自定义 Hooks,全项目最后一个 ≥500L 业务组件清零
- useLogQueryEngine.ts (295L): 查询执行引擎 Hook — 封装 loading/entries/statTable/clusters/histogramData/totalCount/queryTime/hasMore/liveTail/hasQueried 状态 + handleRun/handleLoadMore/fetchHistogram/runLiveTailTick + Live Tail useEffect(3s)
- useLogExport.ts (62L): 导出/复制 Hook — formatEntryLine + handleExportLogs(Blob) + handleCopyLogs(clipboard)
- 主文件保留: 数据源加载/URL bootstrap+sync/Loki 标签名/ES mapping effects + 派生数据 + 非查询回调 + JSX 子组件编排
- 首次使用 custom Hook 提取模式进行组件拆分
- tsc -b=0, npm build✓ (16.69s), ESLint=0/66/0, go build=0, 17/17 测试通过
|
2026-07-10 23:01:40 +08:00 |
|
attacker
|
ee4d6916bb
|
docs: ROADMAP + PROJECT_EVALUATION 更新 Q37 记录
|
2026-07-10 20:40:02 +08:00 |
|