-
released this
2026-04-27 15:03:38 +03:00 | 0 commits to main since this release🚀 Этап 4 — Расширение командных сценариев
Этот релиз закрывает следующую задачу этапа «Этап 4 — Расширение командных сценариев»: перенос сессии теперь работает как небольшое голосование по нескольким вариантам времени. GM больше не обязан угадывать единственный удобный слот — группа выбирает лучший вариант до заданного дедлайна.
✅ Закрытые issues
- #11 — feat: улучшить перенос сессии до голосования по нескольким вариантам времени: owner/co-GM предлагает 2-3 новых времени и дедлайн, участники голосуют кнопками в Telegram, сообщение показывает текущие результаты, а по дедлайну бот применяет победивший вариант или отклоняет перенос при ничьей/нуле голосов.
🧩 Что вошло в релиз
- сценарий
⏰ Перенеститеперь просит 2-3 варианта времени и строкуДедлайн: ДД.ММ.ГГГГ ЧЧ:ММ; - добавлен парсер
RescheduleVotingInput, который проверяет количество вариантов, повторы, будущие даты и дедлайн раньше первого предложенного времени; - голосование создаёт отдельную кнопку для каждого варианта и использует callback
reschedule_vote:<optionId>; - Telegram-сообщение голосования показывает дедлайн, варианты, счёт по каждому слоту, проголосовавших игроков и список тех, кто ещё не выбрал время;
- игрок может изменить голос до дедлайна: повторное нажатие обновляет его выбор вместо создания второго голоса;
- добавлен
RescheduleVotingDeadlineService, который раз в минуту финализирует просроченные голосования; - правило выбора зафиксировано явно: побеждает вариант с наибольшим числом голосов, а ничья или отсутствие голосов отклоняют перенос;
- при успешном переносе бот обновляет
scheduled_at, сбрасывает RSVP активных участников вPending, очищает старые confirmation/link сообщения и перерисовывает batch-сообщение; - DM-режим batch теперь отправляет игрокам личные уведомления о старте голосования и об итоговом результате переноса;
- база данных расширена миграцией
V009__add_multi_option_reschedule_votes.sql: добавленыvoting_deadline_at,selected_option_id,reschedule_optionsиreschedule_option_votes; - README и wiki обновлены под 1.7.0 и новый сценарий multi-slot переноса.
🛡 Что это даёт
- перенос стал удобнее для живых групп: GM предлагает несколько реалистичных слотов, а не один компромиссный вариант;
- участники видят текущую картину голосования прямо в Telegram и могут поменять решение до дедлайна;
- дедлайн убирает вечные подвисшие переносы: бот сам применяет победителя или оставляет старое время при спорном результате;
- Web и Telegram сохраняют общий источник правды в БД, а расписание в Telegram остаётся актуальным после финализации;
- существующие одиночные таблицы переноса не ломаются, а новые голосования используют отдельную multi-option модель.
📦 Версия и деплой
- версия проекта обновлена до 1.7.0 в
Directory.Build.props,compose.yaml, README, Web design system, wiki и Gitea Actions workflow; - Docker-образы и deploy-конфигурация используют тег 1.7.0;
- локально пройдены
dotnet test tests/GmRelay.Bot.Tests/GmRelay.Bot.Tests.csproj --collect:"XPlat Code Coverage"иdotnet build GM-Relay.slnx -c Release; - Gitea Actions run #44 успешно собрал, опубликовал и задеплоил bot/web образы.
Downloads