fix(desktop): console.log 清理 — 替换为结构化 logger

将 desktop/src 中 23 处 console.log 替换为 createLogger() 结构化日志:
- 生产构建自动静默 debug/info 级别
- 保留 console.error 用于关键错误可见性
- 新增 dompurify 依赖修复 XSS 防护引入缺失

涉及文件: App.tsx, offlineStore.ts, autonomy-manager.ts,
gateway-auth.ts, llm-service.ts, request-helper.ts,
security-index.ts, skill-discovery.ts, use-onboarding.ts 等 16 个文件
This commit is contained in:
iven
2026-03-30 16:22:16 +08:00
parent 544358764e
commit ecd7f2e928
16 changed files with 140 additions and 68 deletions

View File

@@ -15,6 +15,9 @@
*/
import { generateRandomString } from './crypto-utils';
import { createLogger } from './logger';
const log = createLogger('AutonomyManager');
// === Types ===
@@ -286,7 +289,7 @@ export class AutonomyManager {
// Store in localStorage for persistence
this.persistPendingApprovals();
console.log(`[AutonomyManager] Approval requested: ${approvalId} for ${decision.action}`);
log.debug(`Approval requested: ${approvalId} for ${decision.action}`);
return approvalId;
}
@@ -296,7 +299,7 @@ export class AutonomyManager {
approve(approvalId: string): boolean {
const decision = this.pendingApprovals.get(approvalId);
if (!decision) {
console.warn(`[AutonomyManager] Approval not found: ${approvalId}`);
log.warn(`Approval not found: ${approvalId}`);
return false;
}
@@ -312,7 +315,7 @@ export class AutonomyManager {
// Update audit log
this.updateAuditLogOutcome(approvalId, 'success');
console.log(`[AutonomyManager] Approved: ${approvalId}`);
log.info('Approved: ${approvalId}');
return true;
}
@@ -322,7 +325,7 @@ export class AutonomyManager {
reject(approvalId: string): boolean {
const decision = this.pendingApprovals.get(approvalId);
if (!decision) {
console.warn(`[AutonomyManager] Approval not found: ${approvalId}`);
log.warn(`Approval not found: ${approvalId}`);
return false;
}
@@ -333,7 +336,7 @@ export class AutonomyManager {
// Update audit log
this.updateAuditLogOutcome(approvalId, 'failed');
console.log(`[AutonomyManager] Rejected: ${approvalId}`);
log.info('Rejected: ${approvalId}');
return true;
}
@@ -384,12 +387,12 @@ export class AutonomyManager {
rollback(auditId: string): boolean {
const entry = this.auditLog.find(e => e.id === auditId);
if (!entry) {
console.warn(`[AutonomyManager] Audit entry not found: ${auditId}`);
log.warn('Audit entry not found: ${auditId}');
return false;
}
if (entry.outcome === 'rolled_back') {
console.warn(`[AutonomyManager] Already rolled back: ${auditId}`);
log.warn('Already rolled back: ${auditId}');
return false;
}
@@ -398,7 +401,7 @@ export class AutonomyManager {
entry.rolledBackAt = new Date().toISOString();
this.saveAuditLog();
console.log(`[AutonomyManager] Rolled back: ${auditId}`);
log.info(`Rolled back: ${auditId}`);
return true;
}
@@ -431,7 +434,7 @@ export class AutonomyManager {
setLevel(level: AutonomyLevel): void {
this.config = { ...DEFAULT_AUTONOMY_CONFIGS[level], level };
this.saveConfig();
console.log(`[AutonomyManager] Level changed to: ${level}`);
log.info(`Level changed to: ${level}`);
}
// === Persistence ===
@@ -537,7 +540,7 @@ export async function executeWithAutonomy<T>(
const result = await executor();
return { executed: true, result, decision };
} catch (error) {
console.error(`[AutonomyManager] Action ${action} failed:`, error);
log.error(`Action ${action} failed:`, error);
return { executed: false, decision };
}
}