-
released this
2026-05-11 14:01:53 +03:00 | 271 commits to main since this release🛠 Minor 1.13.0 — довести RSVP и напоминания до полного набора событий
Реализован полный набор событий для RSVP и напоминаний из issue #20.
🧩 Что вошло в релиз
src/GmRelay.Bot/Infrastructure/Scheduling/ISystemClock.cs— добавлена абстракция часов + FakeSystemClock для тестов.src/GmRelay.Bot/Infrastructure/Scheduling/ISessionTriggerStore.cs— выделен интерфейс хранилища триггеров, SQL-запросы используют параметр@Nowвместоnow().src/GmRelay.Bot/Infrastructure/Scheduling/SessionSchedulerService.cs— публичныйTickAsyncдля unit-тестов, защита от дублей черезconfirmation_sent_at IS NULL.src/GmRelay.Bot/Features/Confirmation/SendConfirmation/SendConfirmationHandler.cs— записываетconfirmation_sent_at, добавлен guardconfirmation_sent_at IS NULL.src/GmRelay.Bot/Features/Sessions/RescheduleSession/RescheduleVotingDeadlineService.cs— используетISystemClock, сбрасываетconfirmation_sent_atпри переносе.src/GmRelay.Bot/Features/Sessions/RescheduleSession/HandleRescheduleTimeInputHandler.cs— сбрасываетconfirmation_sent_atпри немедленном переносе.src/GmRelay.Bot/Migrations/V014__add_confirmation_sent_at.sql— миграция БД для идемпотентности T-24h RSVP.tests/GmRelay.Bot.Tests/Infrastructure/Scheduling/SessionSchedulerServiceTests.cs— 8 unit-тестов: все триггеры, идемпотентность, обработка ошибок.- Синхронизированы версии:
Directory.Build.props,NavMenu.razor,compose.yaml,deploy.yml→ 1.13.0
🗡 Что это даёт
- RSVP-уведомления за 24 часа теперь идемпотентны: повторный запуск worker-а не рассылает дубликаты.
- Напоминание за 1 час и ссылка перед игрой (T-5мин) проходят через тестируемый scheduler с fake clock.
- Ошибки отправки логируются без падения worker-а.
- Reschedule flow корректно сбрасывает confirmation state, позволяя повторить RSVP после переноса.
📦 Версия и деплой
Downloads