# CourtFlow 1.9.8

Турниры по пляжному теннису
Организуйте игры, собирайте участников и следите за результатами — в одном месте.

## Обновление с 1.6–1.9.7

Сохраните JSON через Данные → Сохранить JSON, затем установите APK 1.9.8 поверх приложения. Не удаляйте CourtFlow. Пакет и ключ подписи совпадают с 1.6.

## Переход с 1.5 и ранних версий

1. В старом приложении: Данные → Сохранить JSON. Сохраните в Загрузки или другую папку вне приложения.
2. Убедитесь через Файлы, что JSON есть и не пустой. Excel/PDF/PNG не заменяют JSON.
3. Только после сохранения копии удалите старое приложение и установите APK 1.9.8.
4. В новом: Данные → Восстановить → выбрать JSON → подтвердить замену.
5. Проверьте игроков, рейтинги, турниры и счёт. Таймеры автоматически не запускаются.

## Будущие обновления и ключ

Скачайте полный проект CourtFlow-1.9.8-source.zip и зашифрованный CourtFlow-signing-key-backup.zip. Пароль архива находится в чате владельца. Для ZIP AES-256 используйте 7-Zip или WinRAR. Внутри архива — ключ и инструкция с параметрами подписи. Храните копию архива и пароль отдельно от репозитория. Не публикуйте распакованный ключ.

Для будущих APK сохраняйте пакет ru.courtflow.next, тот же ключ подписи и повышайте versionCode выше 17. Имя приложения — CourtFlow.

Одинаковые победы и геймы дают общее место: 1, 1, 2, 2, 3.

Логотип доступен отдельно: brand/CourtFlow-logo.png — PNG с прозрачным фоном и альфа-каналом.

## Пульт тренера

1. Откройте турнир и нажмите «Пульт тренера» или центральную кнопку «Тренер» нижнего меню.
2. Нажмите «Настроить» в плане игры. Укажите дату и время окончания аренды, переход между турами и резерв на сборы. Для игры по геймам задайте прогноз минут на тур.
3. Запустите тур. Большой экран показывает отсчёт или секундомер, текущее время, время от первого старта и остаток аренды.
4. Пауза останавливает только тур. Аренда и общее время турнира продолжают идти. «+ 1 мин» продлевает текущий тур, но не аренду.
5. Внесите результаты всех матчей, затем переходите к следующему туру. Истечение времени не создаёт результатов и не завершает турнир автоматически.
6. Закройте большой экран крестиком: панель турнира остаётся над нижним меню при переходах.
7. Android-уведомление открывает большой таймер. Для фоновых сигналов разрешите уведомления и проверьте громкость будильника. Особенности энергосбережения телефона могут влиять на работу.
8. Сигналы тура: за 2 и 1 минуту и в конце. Аренды: за 15, 5 минут и в конце — можно отключить в плане.

Прогноз учитывает текущий тур, запланированное число туров, переходы и резерв. В режиме по геймам это оценка по заданной длительности. Число матчей — сумма по кортам, не число матчей одного игрока.

Резервная копия сохраняет план и паузу. При импорте таймеры не запускаются автоматически.


## Результаты

В турнире нажмите «Результаты»: таблица с графикой побед, изображение, текст и файлы. Для PNG доступны отправка и скачивание; для текста — отправка, копирование и TXT. Превью показывает содержание выбранного турнира. Длинные имена в PNG могут сокращаться; полностью они доступны в тексте и таблице.

Сайт проекта: https://courtflow.ru · © 2026 CourtFlow.


## Необязательный учёт оплат · 1.9.3

1. Турнир → «₽ Оплаты» → «Включить учёт». Для остальных турниров он не включается автоматически.
2. В «Стоимость и расходы» задайте цену на человека и, при необходимости, общую сумму расходов на корты, мячи, призы. Нулевая цена допустима.
3. Нажмите участника: можно установить индивидуальную цену (пусто — общая, 0 — бесплатно), либо статус «Без оплаты» / «Сам организатор». Оба статуса исключают его из сборов. Если уже есть деньги, сначала оформите возврат. История при этом сохраняется.
4. Нажмите «Отметить полную оплату» либо запишите сумму поступления. Для частичной оплаты и доплаты добавляйте отдельные записи. Примечание — наличные, перевод и т. п. Возврат не может превысить полученное. Ошибочную запись можно удалить с подтверждением; реальный возврат оформляйте отдельной операцией.
5. Сводка показывает ожидаемые сборы, фактически полученное минус возвраты, долги, переплаты и остаток после указанных расходов. Долги и переплаты разных людей не взаимозачитываются. Это личный учёт, без приёма платежей, налогов и бухгалтерии.
6. «Сводка всех турниров» показывает активные и завершённые турниры с включённым учётом, а также итоги по каждому участнику. Она также доступна внизу списка турниров.
7. Скачайте отдельный CSV либо сохраните JSON в «Данные». Только JSON переносит всю историю и настройки. В публичные PNG, текст, Excel результатов и PDF финансовые записи не добавляются. Не публикуйте личную финансовую выгрузку или резервную копию без необходимости.
8. «Скрыть учёт» сохраняет записи, но убирает турнир из общей финансовой сводки. Повторное включение вернёт их.


## Быстрые оплаты и заставка · 1.9.5

В «₽ Оплаты» выберите источник над списком, затем «✓ Оплатил» у участника: запишется оставшаяся сумма. Повторное нажатие не дублирует платёж. Последнюю быструю отметку можно отменить. Для поиска используйте имя и фильтры. В настройках можно добавить до 5 своих источников; история хранит название источника каждой операции. Сводка по источникам учитывает возвраты.

Нажмите имя для частичной суммы, возврата, индивидуальной цены и истории. Статусы участия и источник выбираются переключателями. Комментарий раскрывается по желанию. Старые операции без источника остаются как «Не указан». Источники включены в CSV и JSON.

В шапке платформа, версия и режим расположены под названием отдельными строками. APK 1.9.8 офлайн; наличие интернета не означает включение серверной синхронизации.

В текущей версии мяч равномерно вращается только в шапке и приостанавливается в фоне. Главная иллюстрация статична. Уменьшенное движение и недоступная графика используют статичный логотип. Подключение компонента описано в docs/brand-motion.md исходников.


## Участники, микст и адаптивное вращение · 1.9.6

На главной нажмите «Создать турнир» или плитку списка турниров / участников. Платформа, версия и режим показаны справа от названия. Форматы и основные настройки выбираются кнопками; ручное название и числа сохранены. Американы идут первыми.

Вставка списка доступна и при создании турнира, и в базе участников. Нажмите «Вставить» для буфера Android либо вставьте текст обычным способом. По одному человеку на строку, можно только имя. Перед добавлением проверьте предпросмотр и совпадения с базой; неоднозначные сокращения автоматически не объединяются. Новым людям допустимы неизвестные пол и рейтинг. Кнопки «Всем М / Всем Ж» применяются только к выбранным новым строкам, не к существующей базе.

Поиск работает по первым буквам имени и фамилии, инициалам и некоторым опечаткам; порядок слов не важен. Скрытые поиском выбранные люди остаются в составе — проверяйте общий счётчик.

В карточке игрока: «Рейтинг пока неизвестен» или ползунок 0–5 с шагом 0,01. Неизвестному при создании назначается медиана известных оценок выбранного состава; при отсутствии оценок — 2,5. Это техническая оценка для баланса, а не утверждение об уровне. Настоящий ноль не подменяется. Старые турниры не пересчитываются.

«Микст · только М + Ж» — строгое правило для всех четырёх форматов: нужны подтверждённые М / Ж и минимум 2 мужчины и 2 женщины на корт. Для постоянных пар нужно равное число М и Ж; партнёрства при запуске фиксируются. В личной Американе микст-круг содержит только МЖ-партнёрства; обычное правило «каждый с каждым в паре» на игроков одного пола не распространяется. В Мексикано и командном формате лишние игроки отдыхают. В командном миксте каждой стороне нужны мужчина и женщина на каждый корт; при ручном изменении команд проверьте состав перед стартом. Замены в миксте — на человека того же пола.

Микст помечен в интерфейсе, тексте и выгрузках. A / B различаются цветами; команда игрока видна в таблице и результатах. Места по-прежнему определяются победами, затем геймами, равенство — общее место.

Вращение в покое медленное, при открытии создания и возврате на главную ускоряется и мягко замедляется. Это не блокирует управление. В фоне кадры приостанавливаются. Уменьшенное движение / экономия трафика / недоступная графика используют статичный логотип. Линии строятся замкнутой периодической функцией, а фаза вращения ограничена одним оборотом для точности долгой работы.


## Смешанный турнир и компактные разделы · 1.9.7

Разделы турнира — сетка плиток без прокрутки вбок. Над ними отдельная плитка отправки результатов. В списке игроков доступны сортировка по имени / рейтингу (повторное нажатие меняет направление), М / Ж-фильтр и поиск. Неизвестные рейтинги при сортировке остаются после известных. Тип на карточке турнира открывает фильтр по типу; «Сбросить» снимает и тип, и поисковую строку.

Новый турнир называется «Турнир · дата», а карточка-предпросмотр показывает выбранный формат, микст, геймы/время и состав. Стартовые значения — 7 геймов и 15 минут. Изменённые допустимые значения сохраняются локально и подставляются в следующих турнирах; они не заменяют параметры старых турниров.

«Смешанный» — отдельный формат, не переключатель строгого микста. Нужно минимум 4 М и 4 Ж с подтверждённым полом. В одном расписании формируются МЖ–МЖ, ММ–ММ и ЖЖ–ЖЖ. Целевое соотношение числа матчей 50% / 25% / 25%; доступность людей и кортов важнее точного процента. Мало туров может не вместить все категории — планируйте минимум 4 матча и при необходимости добавляйте туры. Отдыхающие и повторы партнёров учитываются при подборе. Запрещена подмена категории заменой игрока другого пола.

В «Итогах» смешанного турнира: «Личный» — все матчи; «Микст», «М», «Ж» — личные результаты только в соответствующей категории. «Пары» содержит реально сыгранные пары отдельно для микста, мужских и женских матчей. Пара определяется двумя участниками независимо от порядка. Ранг — победы, затем выигранные геймы; равенство даёт общее место. «Матчи» в этих зачётах — только матчи с введённым счётом. Геймы и очки здесь — один показатель, выигранные геймы, дополнительная шкала очков не вводится.

Отдельный зачёт можно отправить, скопировать или скачать CSV. Excel включает дополнительные личные и парные листы всех трёх категорий. Стандартная PNG-выгрузка показывает общий личный зачёт; текст и Excel также содержат категории. JSON сохраняет расписание и категории; финансовый учёт работает с обычным общим составом. Общий системный ориентир рейтинга учитывает все сыгранные матчи, как раньше.

«Без оплаты» — новое название прежнего статуса «За счёт организатора», записи и исключение из сборов сохранены. «Организатор» остаётся отдельным статусом.

Логотип равномерно вращается только в маленькой шапке. Главные иллюстрации статичны, переходы не разгоняют мяч. В фоне кадры приостанавливаются; уменьшенное движение сохраняет статичный вариант. Android и версия — одной строкой, ниже подписанный цветной режим: онлайн зелёный, офлайн золотистый. Текущий APK работает офлайн.


## Корты, площадки и сигналы · 1.9.8

В карточке матча метки A / B и пола стоят перед именами, рейтинг каждого игрока выровнен колонкой, Σ пары — сумма двух рейтингов. Оценка неизвестного рейтинга отмечена ≈. Справа изображён корт: верхний счёт соответствует A, нижний — B. Нажмите половину корта, чтобы сразу перейти к соответствующему полю счёта. Правила записи счёта и расчёт мест сохранены.

В фильтрах турниров «Завершён» означает закрытый турнир. «Текущий» — есть результат или уже наступил первый старт / запуск таймера. «Планируется» — ещё не было старта и результатов; таймер на будущее относится сюда. Окончание аренды не завершает спортивный турнир автоматически. Тип, статус и поиск сочетаются; «Сбросить» очищает все три. Счётчики статусов учитывают выбранный тип и поиск.

На главной — участники базы, число турниров и каталог площадок. Выбор локации фильтрует последние турниры и подставляет площадку в создание; он не бронирует время. Счётчики — данные этого устройства, не общая онлайн-статистика платформы.

Площадки → Роджер → «Указать корты и адрес»: заполните реальные названия кортов, адрес и при желании часы работы. Они не были предоставлены и поэтому не выдуманы. Затем в календаре выберите день → «Записать время». Выберите один или несколько кортов, начало / окончание и ответственного организатора. Контакт и заметка необязательны. Ответственный последней записи подставляется при следующем добавлении.

Календарь использует Саратов / Самару, UTC+4, независимо от часового пояса телефона. Запись — до 24 часов, окончание позже начала. Пересечения на том же корте блокируются; соседние интервалы допускаются. Отменённые записи остаются в истории и освобождают время в локальном календаре. Пока есть будущие записи, удалить используемый корт в настройках нельзя. Для связанного турнира нужно выбрать все необходимые ему корты; конец записи переносится в пульт тренера. Отмена связанной записи снимает этот срок, если он не был отдельно изменён. Удаление турнира не отменяет запись корта, а снимает связь с удалённым турниром.

ВАЖНО: это локальные записи организатора, не общая подтверждённая онлайн-бронь. Между устройствами календарь пока не синхронизируется. Пустой день означает отсутствие записей на этом устройстве, а не подтверждённую доступность площадки. Общая бронь требует сервера, аккаунтов и API; текущая версия не показывает их как подключённые. «Июль» и FITLETO ведут на официальные сайт / связь, бронирование подтверждается у самой площадки. Проверенные ссылки: https://t.me/clubbeachjuly и https://fitleto.ru/lk (переход «Онлайн-запись» на https://fitleto.ru/).

Звуки: Данные → «Библиотека сигналов» или «Сигналы» в пульте тренера. Три набора по 4 сигнала: свисток (синтез), судейский сигнал (синтез), исходные мелодии. Выберите набор, общую громкость и события. Можно отключить весь звук или отдельные сигналы. Сигналы тура и аренды используют эти же настройки, включая фоновый сервис Android. Громкость будильника телефона влияет дополнительно; приложение не изменяет её само. Нажмите ▶ для прослушивания, ■ для остановки. Новая библиотека не объявляется официальными сигналами судьи.

JSON-копия сохраняет площадки, календарь, ответственных и звуковые настройки. Импорт проверяет ссылки, даты и пересечения и заменяет текущие данные после подтверждения, а не объединяет разные календари. Храните копию вне приложения. Подробности и план реального API: docs/venues-and-booking.md, docs/sound-library.md в исходниках.
