fix(s30): QuickLoginDemoSeeder больше не кладёт API при сбое

Весь StartAsync обёрнут try/catch — dev-удобство для стенда не должно
класть API. Если сид упал (DbUpdateConcurrencyException и т.п.) — Warning
в лог, SuperAdmin + уже существующие аккаунты по мастер-паролю работают.
Demo-trio можно будет досеять руками или через POST /api/admin/seed-demo
если нужно.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
nns 2026-10-04 16:39:46 +05:00
parent ee24a5ed8e
commit e3a8db3206

View file

@ -54,6 +54,23 @@ public async Task StartAsync(CancellationToken ct)
return;
}
// Весь сидер обёрнут try/catch: dev-удобство для стенда не должно
// класть API. Если что-то упало — пишем Warning и выходим. Админ
// сможет руками подёргать POST /api/admin/seed-demo или починить
// сломанное состояние; стенд при этом остаётся работоспособным.
try
{
await SeedAsync(ct);
}
catch (Exception ex)
{
_log.LogWarning(ex, "QuickLoginDemoSeeder: не удалось засеять демо-данные для стенда. " +
"Это не критично — API остаётся рабочим, SuperAdmin по-прежнему пускает по мастер-паролю.");
}
}
private async Task SeedAsync(CancellationToken ct)
{
using var scope = _services.CreateScope();
var db = scope.ServiceProvider.GetRequiredService<AppDbContext>();
var userMgr = scope.ServiceProvider.GetRequiredService<UserManager<User>>();