feat(#20): довести RSVP и напоминания до полного набора событий
PR Checks / test-and-build (pull_request) Successful in 3m12s
PR Checks / test-and-build (pull_request) Successful in 3m12s
- Добавлена абстракция ISystemClock + SystemClock / FakeSystemClock для тестируемого scheduling. - Добавлена миграция V014: confirmation_sent_at в sessions. - Обновлен SendConfirmationHandler: записывает confirmation_sent_at. - Обновлен SessionSchedulerService: - выделен ISessionTriggerStore / DbSessionTriggerStore - SQL-запросы используют параметр @Now вместо now() - добавлен публичный TickAsync для тестов - защита от дублей через confirmation_sent_at IS NULL - Обновлен RescheduleVotingDeadlineService: использует ISystemClock. - Добавлены интерфейсы ISendConfirmationHandler, ISendOneHourReminderHandler, ISendJoinLinkHandler для unit-тестируемости. - Добавлены 8 unit-тестов SessionSchedulerService: - все 3 триггера (T-24h, T-1h, T-5min) - идемпотентность при повторном запуске - ошибки handler не падают и не блокируют другие сессии - ошибки store логируются без падения worker-а Bump version -> 1.13.0 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
+1
-1
@@ -15,7 +15,7 @@ internal sealed record OneHourReminderSession(
|
||||
public sealed class SendOneHourReminderHandler(
|
||||
NpgsqlDataSource dataSource,
|
||||
DirectSessionNotificationSender directSender,
|
||||
ILogger<SendOneHourReminderHandler> logger)
|
||||
ILogger<SendOneHourReminderHandler> logger) : ISendOneHourReminderHandler
|
||||
{
|
||||
public async Task HandleAsync(Guid sessionId, CancellationToken ct)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user