docs/testing/ai-automation/storage-key-consistency/test-003-code-consistency-check.md
通过代码检查验证所有存储操作都使用统一的常量定义,没有硬编码的魔法字符串。
UI_SETTINGS_KEYSUI_SETTINGS_KEYS.THEME_ID 而不是 'theme-id'检查代码位置:
// packages/ui/src/components/ThemeToggleUI.vue
import { UI_SETTINGS_KEYS } from '../constants/storage-keys';
// 应该使用:
await setPreference(UI_SETTINGS_KEYS.THEME_ID, theme.id);
const themeId = await getPreference(UI_SETTINGS_KEYS.THEME_ID, defaultTheme);
// 而不是:
await setPreference('theme-id', theme.id); // ❌
UI_SETTINGS_KEYSUI_SETTINGS_KEYS.PREFERRED_LANGUAGECORE_SERVICE_KEYSCORE_SERVICE_KEYS.MODELS 而不是 'models'检查代码位置:
// packages/core/src/services/model/manager.ts
import { CORE_SERVICE_KEYS } from '../../constants/storage-keys';
export class ModelManager implements IModelManager {
private readonly storageKey = CORE_SERVICE_KEYS.MODELS; // ✅
// 而不是:
// private readonly storageKey = 'models'; // ❌
}
CORE_SERVICE_KEYSCORE_SERVICE_KEYS.USER_TEMPLATES 而不是 'user-templates'检查代码位置:
// packages/core/src/services/template/manager.ts
this.config = {
storageKey: config?.storageKey || CORE_SERVICE_KEYS.USER_TEMPLATES, // ✅
// 而不是:
// storageKey: config?.storageKey || 'user-templates', // ❌
};
CORE_SERVICE_KEYSCORE_SERVICE_KEYS.PROMPT_HISTORY 而不是 'prompt_history''app:settings:ui:builtin-template-language' 而不是 'builtin-template-language'检查代码位置:
// packages/core/src/services/template/languageService.ts
export class TemplateLanguageService implements ITemplateLanguageService {
private readonly STORAGE_KEY = 'app:settings:ui:builtin-template-language'; // ✅
// 而不是:
// private readonly STORAGE_KEY = 'builtin-template-language'; // ❌
}
packages/ui/src/constants/storage-keys.ts 存在CORE_SERVICE_KEYS 定义packages/core/src/constants/storage-keys.ts 存在检查代码位置:
// packages/core/tests/unit/template/languageService.test.ts
expect(mockStorage.getItem).toHaveBeenCalledWith('app:settings:ui:builtin-template-language'); // ✅
// 而不是:
// expect(mockStorage.getItem).toHaveBeenCalledWith('builtin-template-language'); // ❌
# 搜索可能的魔法字符串使用
grep -r "theme-id" packages/ --exclude-dir=node_modules
grep -r "preferred-language" packages/ --exclude-dir=node_modules
grep -r "builtin-template-language" packages/ --exclude-dir=node_modules
grep -r "'models'" packages/ --exclude-dir=node_modules
grep -r "'user-templates'" packages/ --exclude-dir=node_modules
grep -r "'prompt_history'" packages/ --exclude-dir=node_modules
# 验证常量导入
grep -r "UI_SETTINGS_KEYS" packages/ui/src/
grep -r "CORE_SERVICE_KEYS" packages/core/src/
grep -r "TEMPLATE_SELECTION_KEYS" packages/ui/src/
文件: [文件路径] 问题: [问题描述] 建议: [修复建议]
文件: [文件路径] 问题: [问题描述] 建议: [修复建议]