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 测试通过

This commit is contained in:
attacker committed 2026-07-12 05:18:52 +08:00
1 parent b812b3b20c
commit b2715ca3bd
12 files changed
+206 -74

No files matched your search

@@ -23,7 +23,7 @@ function escapeCsv(s: string): string {
// exportAuditReportCsv 导出会话审计报告 CSV // Logan.Li
export function exportAuditReportCsv(meta: ReplaySessionMeta, commands: CommandBookmark[]) {
const lines: string[] = [
i18n.t('# 终端会话审计报告'),
i18n.t('audit.reportTitle'),
`会话ID,${meta.id}`,
`用户,${escapeCsv(meta.username || '')}`,
`目标主机,${escapeCsv(meta.server_name || '')}`,
@@ -33,7 +33,7 @@ export function exportAuditReportCsv(meta: ReplaySessionMeta, commands: CommandB
`时长(秒),${meta.duration || 0}`,
`录制大小,${meta.record_size || 0}`,
'',
i18n.t('# 终端会话审计报告'),
i18n.t('audit.reportTitle'),
];
for (const c of commands) {
lines.push(`${c.label},${escapeCsv(c.command)},${c.highRisk ? '是' : '否'}`);
@@ -55,7 +55,7 @@ export interface CommandExportRow {
// exportCommandsListCsv 导出命令列表 CSV // Logan.Li
export function exportCommandsListCsv(commands: CommandExportRow[]) {
const lines: string[] = [i18n.t('时间,用户,命令,输出大小,会话ID,高危')];
const lines: string[] = [i18n.t('audit.csvHeader')];
for (const c of commands) {
const ts = c.timestamp || c.created_at || '';
const highRisk = isHighRiskCommand(c.command || '');