using Microsoft.Extensions.Hosting; namespace Monitor.Backend.Application; /// /// 启动时最先执行:截断没有索引记录的段文件尾部、创建初始管理员、创建默认的线路任务模板。 /// 宿主按注册顺序依次等待各个 IHostedService 启动,所以它需要最先注册。 /// public sealed class StartupTasks : IHostedService { private readonly IRawStore _raw; private readonly AuthService _auth; private readonly TaskService _tasks; public StartupTasks(IRawStore raw, AuthService auth, TaskService tasks) { _raw = raw; _auth = auth; _tasks = tasks; } public async Task StartAsync(CancellationToken cancellationToken) { await _raw.RecoverAsync(cancellationToken); await _auth.EnsureInitialAdminAsync(cancellationToken); await _tasks.SeedDefaultsAsync(cancellationToken); } public Task StopAsync(CancellationToken cancellationToken) => Task.CompletedTask; }