1. 排行榜悬浮窗关闭后小按钮消失问题 - 修复面板居中模式关闭时按钮位置错误 - 保存并恢复按钮的居中状态 2. 首页tag按钮按素材数量排序 - 添加按素材数量降序排序逻辑 3. 上传弹窗输入框浅色模式文字不可见 - 添加 text-slate-900 确保浅色模式下文字可见 - 添加 placeholder 样式确保占位符正确显示
91 lines
2.2 KiB
TypeScript
91 lines
2.2 KiB
TypeScript
/**
|
|
* 应用启动检查模块
|
|
*
|
|
* 在应用启动时自动执行,确保系统数据完整性
|
|
* 客户无需任何手动操作,只需启动应用即可
|
|
*
|
|
* @module startup-check
|
|
*/
|
|
|
|
import { ensureBuiltinTemplates } from './system-integrity'
|
|
|
|
// 标记是否已执行过启动检查
|
|
let startupCheckExecuted = false
|
|
let startupCheckResult: {
|
|
success: boolean
|
|
templatesCreated: string[]
|
|
errors: string[]
|
|
} | null = null
|
|
|
|
/**
|
|
* 执行启动检查
|
|
*
|
|
* 这个函数会在应用首次处理请求时自动调用
|
|
* 设计为幂等操作,多次调用不会重复执行
|
|
*/
|
|
export async function runStartupCheck(): Promise<typeof startupCheckResult> {
|
|
// 如果已经执行过,直接返回结果
|
|
if (startupCheckExecuted && startupCheckResult) {
|
|
return startupCheckResult
|
|
}
|
|
|
|
console.log('[StartupCheck] 开始执行启动检查...')
|
|
const startTime = Date.now()
|
|
|
|
try {
|
|
// 确保内置模板存在
|
|
const templateResult = await ensureBuiltinTemplates()
|
|
|
|
startupCheckResult = {
|
|
success: templateResult.errors.length === 0,
|
|
templatesCreated: templateResult.created,
|
|
errors: templateResult.errors,
|
|
}
|
|
|
|
const duration = Date.now() - startTime
|
|
|
|
if (templateResult.created.length > 0) {
|
|
console.log(
|
|
`[StartupCheck] 自动创建了 ${templateResult.created.length} 个内置模板:`,
|
|
templateResult.created
|
|
)
|
|
}
|
|
|
|
if (templateResult.errors.length > 0) {
|
|
console.warn('[StartupCheck] 启动检查有错误:', templateResult.errors)
|
|
}
|
|
|
|
console.log(`[StartupCheck] 启动检查完成 (${duration}ms)`)
|
|
} catch (error) {
|
|
const errorMsg = error instanceof Error ? error.message : String(error)
|
|
console.error('[StartupCheck] 启动检查失败:', errorMsg)
|
|
|
|
startupCheckResult = {
|
|
success: false,
|
|
templatesCreated: [],
|
|
errors: [errorMsg],
|
|
}
|
|
}
|
|
|
|
startupCheckExecuted = true
|
|
return startupCheckResult
|
|
}
|
|
|
|
/**
|
|
* 获取启动检查状态
|
|
*/
|
|
export function getStartupCheckStatus() {
|
|
return {
|
|
executed: startupCheckExecuted,
|
|
result: startupCheckResult,
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 重置启动检查状态(仅用于测试)
|
|
*/
|
|
export function resetStartupCheck() {
|
|
startupCheckExecuted = false
|
|
startupCheckResult = null
|
|
}
|