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:
@@ -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 };
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user