refactor(settings): collapse get_all to aksrt_settings and drop migration UI

Make aksrt_settings the sole theme settings store for get_all(), remove
aksrt_seo_settings/aksrt_basic_settings merge paths, point global.logo
schema at aksrt_settings, and delete the retired settings migration page,
route, REST endpoint, and related SPA surface.
This commit is contained in:
2026-07-11 16:55:27 +08:00
parent b4da8cc1f4
commit 91b083b2b0
15 changed files with 16 additions and 471 deletions
-1
View File
@@ -24,5 +24,4 @@ export const toolsApiMethods = {
resetDomain(domain) { return this.request(`/settings/reset/${domain}`, { method: 'POST' }) },
resetAllSettings() { return this.request('/settings/reset-all', { method: 'POST' }) },
getHealthCheck() { return this.request('/settings/health') },
getMigrationStatus() { return this.request('/settings/migration-status') },
}
+2 -3
View File
@@ -135,9 +135,8 @@ const message = useMessage()
const loading = ref(true)
const saving = ref(false)
// 基础设置(aksrt_basic_settings)
// 后端 /settings/basic 已经做了部分合并,本接口只发送基础字段;
// auth 相关字段由 /settings/auth 独立维护,互不影响。
// 基础设置(canonical: aksrt_settings)
// 后端 /settings/basic 返回基础字段;auth 相关字段由 /settings/auth 独立维护。
const basic = reactive({
comment_enabled: true,
comment_requires_registration: false,
@@ -1,6 +1,6 @@
<template>
<div class="aksrt-page-container">
<PageHeader title="主题信息" desc="主题版本、运行环境、已启用模块、迁移状态和关键系统信息。" />
<PageHeader title="主题信息" desc="主题版本、运行环境、已启用模块和关键系统信息。" />
<div v-if="loading" class="aksrt-theme-info__loading">
<n-spin size="medium" />
@@ -24,9 +24,6 @@
<n-descriptions-item label="数据库 Schema">
<n-tag type="info" size="small">{{ info.dbSchemaVersion }}</n-tag>
</n-descriptions-item>
<n-descriptions-item label="设置迁移版本">
<n-tag type="info" size="small">{{ info.settingsMigrationVersion || '未迁移' }}</n-tag>
</n-descriptions-item>
<n-descriptions-item label="邮箱验证回填">
<n-tag :type="info.emailBackfillDone ? 'success' : 'default'" size="small">
{{ info.emailBackfillDone ? '已完成' : '未触发' }}
@@ -135,7 +132,6 @@ const info = ref({
wpVersion: '',
phpVersion: '',
dbSchemaVersion: '',
settingsMigrationVersion: '',
emailBackfillDone: false,
siteUrl: '',
apiUrl: '',
@@ -181,7 +177,6 @@ onMounted(async () => {
wpVersion: data.wp_version || '',
phpVersion: data.php_version || '',
dbSchemaVersion: data.db_schema_version || '',
settingsMigrationVersion: data.settings_migration_version || '',
emailBackfillDone: !!data.email_backfill_done,
siteUrl: data.site_url || window.aksrtAdminData?.siteUrl || '',
apiUrl: data.api_url || window.aksrtAdminData?.apiUrl || '',
@@ -1,111 +0,0 @@
<template>
<div class="aksrt-page-container">
<PageHeader
title="迁移状态"
desc="查看数据库 schema 版本、设置迁移版本和迁移日志,方便发布前确认历史兼容层状态。"
>
<template #actions>
<n-space>
<n-button quaternary @click="go('/tools/health')">健康检查</n-button>
<n-button quaternary @click="go('/tools/import-export')">导入导出</n-button>
</n-space>
</template>
</PageHeader>
<n-spin :show="loading" style="width: 100%; min-height: 200px;">
<n-card class="aksrt-section-card">
<div class="aksrt-section-header">
<h3>版本摘要</h3>
</div>
<n-space>
<n-tag round type="info">DB Schema:{{ status.schema_version || '0.0.0' }}</n-tag>
<n-tag round type="info">Settings Migration:{{ status.migration_version || '0.0.0' }}</n-tag>
<n-tag round :type="logItems.length ? 'success' : 'default'">迁移日志:{{ logItems.length }} 条</n-tag>
</n-space>
</n-card>
<n-card class="aksrt-section-card">
<n-alert type="info" :show-icon="false">
迁移说明文档位于 `docs/migration-map.md`。如果这里的 schema/version 与文档记录不一致,发布前应先补齐说明。
</n-alert>
</n-card>
<n-card class="aksrt-section-card">
<div class="aksrt-section-header">
<h3>迁移日志</h3>
</div>
<div v-if="logItems.length" class="aksrt-migration-log">
<div v-for="(item, index) in logItems" :key="index" class="aksrt-migration-log__item">
<pre>{{ stringifyItem(item) }}</pre>
</div>
</div>
<n-empty v-else description="暂无迁移日志" />
</n-card>
</n-spin>
</div>
</template>
<script setup>
import { computed, onMounted, ref } from 'vue'
import { useRouter } from 'vue-router'
import { useMessage } from 'naive-ui'
import api from '@/api'
import PageHeader from '@/components/PageHeader.vue'
const router = useRouter()
const message = useMessage()
const loading = ref(true)
const status = ref({})
const logItems = computed(() => {
return Array.isArray(status.value.migration_log) ? status.value.migration_log : []
})
function go(path) {
router.push(path)
}
function extractData(response) {
return response?.data ?? response ?? {}
}
function stringifyItem(item) {
if (typeof item === 'string') {
return item
}
return JSON.stringify(item, null, 2)
}
async function load() {
loading.value = true
try {
status.value = extractData(await api.getMigrationStatus())
} catch (error) {
message.error(error.message || '加载迁移状态失败')
} finally {
loading.value = false
}
}
onMounted(load)
</script>
<style scoped>
.aksrt-migration-log {
display: grid;
gap: 12px;
}
.aksrt-migration-log__item pre {
margin: 0;
padding: 12px 14px;
border-radius: 12px;
background: #101828;
color: #d0d7e2;
font-size: 12px;
line-height: 1.7;
white-space: pre-wrap;
word-break: break-word;
}
</style>
@@ -1,7 +1,6 @@
export const toolsPageLoaders = {
ToolsImportExport: () => import('@/pages/tools/ToolsImportExport.vue'),
ToolsHealth: () => import('@/pages/tools/ToolsHealth.vue'),
ToolsMigration: () => import('@/pages/tools/ToolsMigration.vue'),
ToolsEmailRollback: () => import('@/pages/tools/ToolsEmailRollback.vue'),
ToolsUpdate: () => import('@/pages/tools/ToolsUpdate.vue'),
}
@@ -1,19 +0,0 @@
export const migrationSchema = {
key: 'tools.migration',
title: '数据迁移',
icon: 'fas fa-database',
description: '数据库结构迁移和版本升级。',
defaults: {},
groups: [
{
key: 'status',
title: '迁移状态',
icon: 'fas fa-info-circle',
fields: [
{ key: 'current_version', label: '当前版本', type: 'display' },
{ key: 'pending_migrations', label: '待执行迁移', type: 'display' },
{ key: 'run_migration', label: '执行迁移', type: 'button', help: '手动触发数据库迁移' },
],
},
],
}