import assert from 'node:assert/strict' import test from 'node:test' import { readFileSync } from 'node:fs' const settingsModel = readFileSync(new URL('../src/utils/settingsModelHelper.js', import.meta.url), 'utf8') const settingsService = readFileSync(new URL('../src/services/settings.js', import.meta.url), 'utf8') const settingsScript = readFileSync(new URL('../src/views/scripts/SettingsView.js', import.meta.url), 'utf8') const settingsView = readFileSync(new URL('../src/views/SettingsView.vue', import.meta.url), 'utf8') const useSettings = readFileSync(new URL('../src/composables/useSettings.js', import.meta.url), 'utf8') test('system settings replace Agent Trace with cache management', () => { assert.match(settingsModel, /id:\s*'cacheManagement'[\s\S]*label:\s*'缓存管理'/) assert.doesNotMatch(settingsModel, /id:\s*'agentTraces'/) assert.doesNotMatch(settingsScript, /AgentTraceCenterView/) assert.match(settingsView, /activeSection === 'cacheManagement'/) assert.match(settingsView, /一键清理缓存/) }) test('cache management action calls the settings clear-cache endpoint', () => { assert.match(settingsService, /export function clearSystemCaches/) assert.match(settingsService, /\/settings\/cache\/clear/) assert.match(useSettings, /clearSystemCaches/) assert.match(settingsView, /@click="clearAllCaches"/) }) test('cache management section uses an enterprise maintenance layout', () => { assert.match(settingsView, /class="settings-card cache-management-card"/) assert.match(settingsView, /class="card-title-with-icon"/) assert.match(settingsView, /class="cache-management-hero-metrics"/) assert.match(settingsView, /class="cache-scope-grid"/) assert.match(settingsView, /OCR 识别结果/) assert.match(settingsView, /模型失败冷却/) assert.match(settingsView, /知识库本地索引/) assert.match(settingsView, /不会删除源文件、业务单据和系统日志/) assert.match(settingsView, /:class="\{ 'is-error': cacheClearFailed \}"/) assert.match(useSettings, /const cacheClearFailed = ref\(false\)/) assert.match(useSettings, /normalizeCacheClearErrorMessage/) assert.doesNotMatch(settingsView, />\\s*Not Found\\s*