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

@@ -13,6 +13,9 @@
import { intelligenceClient } from './intelligence-client';
import { canAutoExecute } from './autonomy-manager';
import { createLogger } from './logger';
const log = createLogger('SkillDiscovery');
// === Types ===
@@ -93,9 +96,9 @@ export class SkillDiscoveryEngine {
this.skills = backendSkills.map(this.convertFromBackend);
this.loadedFromBackend = true;
this.saveIndex();
console.log(`[SkillDiscovery] Loaded ${this.skills.length} skills from backend`);
log.debug(`Loaded ${this.skills.length} skills from backend`);
} catch (error) {
console.warn('[SkillDiscovery] Failed to load skills from backend:', error);
log.warn('Failed to load skills from backend:', error);
// Keep using cached skills (loaded in loadIndex)
this.loadedFromBackend = false;
}
@@ -133,7 +136,7 @@ export class SkillDiscoveryEngine {
this.skills = backendSkills.map(this.convertFromBackend);
this.loadedFromBackend = true;
this.saveIndex();
console.log(`[SkillDiscovery] Refreshed ${this.skills.length} skills`);
log.debug(`Refreshed ${this.skills.length} skills`);
return this.skills.length;
} catch (error) {
console.error('[SkillDiscovery] Failed to refresh skills:', error);
@@ -335,7 +338,7 @@ export class SkillDiscoveryEngine {
if (!options?.skipAutonomyCheck) {
const action = installed ? 'skill_install' : 'skill_uninstall';
const { canProceed, decision } = canAutoExecute(action, 6);
console.log(`[SkillDiscovery] Autonomy check for ${action}: ${decision.reason}`);
log.debug(`Autonomy check for ${action}: ${decision.reason}`);
if (!canProceed) {
return { success: false, reason: decision.reason };
@@ -344,7 +347,7 @@ export class SkillDiscoveryEngine {
skill.installed = installed;
this.saveIndex();
console.log(`[SkillDiscovery] Skill ${skillId} ${installed ? 'installed' : 'uninstalled'}`);
log.debug(`Skill ${skillId} ${installed ? 'installed' : 'uninstalled'}`);
return { success: true };
}