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

@@ -9,6 +9,9 @@ import { create } from 'zustand';
import { persist } from 'zustand/middleware';
import { useConnectionStore, getConnectionState } from './connectionStore';
import { generateRandomString } from '../lib/crypto-utils';
import { createLogger } from '../lib/logger';
const log = createLogger('OfflineStore');
// === Types ===
@@ -153,7 +156,7 @@ export const useOfflineStore = create<OfflineStore>()(
queuedMessages: [...s.queuedMessages, message],
}));
console.log(`[OfflineStore] Message queued: ${id}`);
log.debug(`Message queued: ${id}`);
return id;
},
@@ -192,15 +195,15 @@ export const useOfflineStore = create<OfflineStore>()(
// Check if connected
if (getConnectionState() !== 'connected') {
console.log('[OfflineStore] Not connected, cannot retry messages');
log.debug('Not connected, cannot retry messages');
return;
}
console.log(`[OfflineStore] Retrying ${pending.length} queued messages`);
log.debug(`Retrying ${pending.length} queued messages`);
for (const msg of pending) {
if (msg.retryCount >= state.maxRetryCount) {
console.log(`[OfflineStore] Message ${msg.id} exceeded max retries`);
log.debug(`Message ${msg.id} exceeded max retries`);
get().updateMessageStatus(msg.id, 'failed', 'Max retry count exceeded');
continue;
}
@@ -220,11 +223,11 @@ export const useOfflineStore = create<OfflineStore>()(
get().updateMessageStatus(msg.id, 'sent');
// Remove sent message after a short delay
setTimeout(() => get().removeMessage(msg.id), 1000);
console.log(`[OfflineStore] Message ${msg.id} sent successfully`);
log.debug(`Message ${msg.id} sent successfully`);
} catch (err) {
const errorMessage = err instanceof Error ? err.message : 'Send failed';
get().updateMessageStatus(msg.id, 'failed', errorMessage);
console.warn(`[OfflineStore] Message ${msg.id} failed:`, errorMessage);
log.warn(`Message ${msg.id} failed:`, errorMessage);
}
}
},
@@ -243,7 +246,7 @@ export const useOfflineStore = create<OfflineStore>()(
const attempt = state.reconnectAttempt + 1;
const delay = state.nextReconnectDelay;
console.log(`[OfflineStore] Scheduling reconnect attempt ${attempt} in ${delay}ms`);
log.debug(`Scheduling reconnect attempt ${attempt} in ${delay}ms`);
set({
isReconnecting: true,
@@ -265,7 +268,7 @@ export const useOfflineStore = create<OfflineStore>()(
},
attemptReconnect: async () => {
console.log('[OfflineStore] Attempting to reconnect...');
log.debug('Attempting to reconnect...');
try {
// Try to connect via connection store
@@ -273,12 +276,12 @@ export const useOfflineStore = create<OfflineStore>()(
// Check if now connected
if (getConnectionState() === 'connected') {
console.log('[OfflineStore] Reconnection successful');
log.debug('Reconnection successful');
get().setOffline(false);
return true;
}
} catch (err) {
console.warn('[OfflineStore] Reconnection failed:', err);
log.warn('Reconnection failed:', err);
}
// Still offline, schedule next attempt