• v1.7.0 a1ec688ec8

    Release 1.7.0: голосование за перенос сессии
    Deploy Telegram Bot / build-and-push (push) Successful in 3m44s
    Deploy Telegram Bot / deploy (push) Successful in 11s
    Stable

    Toutsu 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