• Release v1.13.0 — довести RSVP и напоминания до полного набора событий
    Deploy Telegram Bot / build-and-push (push) Successful in 3m54s
    Deploy Telegram Bot / deploy (push) Successful in 13s
    Stable

    Toutsu 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, добавлен guard confirmation_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 после переноса.

    📦 Версия и деплой

    • версия обновлена до 1.13.0
    • Docker-образы используют тег 1.13.0
    • Gitea Actions run #155 (PR checks) — success
    • Gitea Actions run #156 (deploy) — success
    Downloads