/** * 应用启动检查模块 * * 在应用启动时自动执行,确保系统数据完整性 * 客户无需任何手动操作,只需启动应用即可 * * @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 { // 如果已经执行过,直接返回结果 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 }