fix(preferences): preserve legacy builtin masking overrides

This commit is contained in:
digua committed 2026-06-04 14:37:12 +08:00
1 parent 9030d6b0c3
commit 2a44f8b69e
2 files changed
+18 -2

No files matched your search

@@ -49,12 +49,17 @@ test('migrates old built-in desensitize rules out of preferences with a backup',
const backupsDir = join(systemDir, 'backups')
assert.equal(prefs.aiPreprocessConfig.desensitizeRulesSchemaVersion, 2)
assert.deepEqual(prefs.aiPreprocessConfig.desensitizeBuiltinRuleOverrides, {})
assert.deepEqual(prefs.aiPreprocessConfig.desensitizeBuiltinRuleOverrides, {
api_key_prefix: false,
})
assert.deepEqual(
prefs.aiPreprocessConfig.desensitizeRules.map((rule) => rule.id),
['custom_staff_id']
)
assert.equal(saved.aiPreprocessConfig.desensitizeRules[0].id, 'custom_staff_id')
assert.deepEqual(saved.aiPreprocessConfig.desensitizeBuiltinRuleOverrides, {
api_key_prefix: false,
})
assert.equal(
saved.aiPreprocessConfig.desensitizeRules.some((rule: any) => rule.builtin),
false
+12 -1
View File
@@ -185,13 +185,24 @@ export class PreferencesManager {
this.backupLegacyPreferences(rawContent)
const legacyBuiltinRuleOverrides = rules
.filter((rule) => rule.builtin && typeof rule.enabled === 'boolean')
.reduce<Record<string, boolean>>((overrides, rule) => {
overrides[rule.id] = rule.enabled
return overrides
}, {})
const existingOverrides = this.normalizeBooleanMap(partial.aiPreprocessConfig?.desensitizeBuiltinRuleOverrides)
return {
preferences: {
...partial,
aiPreprocessConfig: {
...partial.aiPreprocessConfig,
desensitizeRulesSchemaVersion: DESENSITIZE_RULES_SCHEMA_VERSION,
desensitizeBuiltinRuleOverrides: {},
desensitizeBuiltinRuleOverrides: {
...legacyBuiltinRuleOverrides,
...existingOverrides,
},
desensitizeRules: rules.filter((rule) => !rule.builtin),
},
} as Partial<Preferences>,