flnxi-Wu/lib/startup-check.ts
WuYongJie 63ec6b7dfb fix: 修复排行榜按钮消失、tag排序和输入框浅色模式问题
1. 排行榜悬浮窗关闭后小按钮消失问题
   - 修复面板居中模式关闭时按钮位置错误
   - 保存并恢复按钮的居中状态

2. 首页tag按钮按素材数量排序
   - 添加按素材数量降序排序逻辑

3. 上传弹窗输入框浅色模式文字不可见
   - 添加 text-slate-900 确保浅色模式下文字可见
   - 添加 placeholder 样式确保占位符正确显示
2025-12-14 21:41:29 +08:00

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
}