-
Notifications
You must be signed in to change notification settings - Fork 13
Памятка администратору сайта и БД
Таблицы называем с большой буквы, поля - маленькими, Пишем комментарии к каждой таблице и полю Обязательно делаем PK у каждой таблицы по автоинкерементному полю INT. FK в дочерней таблице именуем также, как и PK в родительской Название таблицы - "сущность" во множественном числе, Название поле (см. исключение для FK) - имя "сущности" в единственном числе _ название поля Примеры: Levels (level_id, level_name, ...) TeamLevels (teamlevel_id, level_id, ...) Скрипт структуры лежит в [подкаталоге database] (/realtim/mmb/tree/master/database)
Перед очередным Марш-броском сделать архив БД, почистить таблицу Sessions. Для присвоения пользователю звания Администратора сервиса необходимо в таблице Users у соответствующей записи в поле user_admin поставить 1 (0 - отозвать права). Администратора сервиса получает расширенные полномочия по правке данных пользоваелей, команд, результатов. Может вводить и править параметры ММБ, делать экспорт справочников и импорт результатов Памятка администратору сервиса
Создание марш-броска осуществляется через интерфейс, но на всякий случай ниже описано, как это выглядит на уровне БД.
Для создания Марш-броска необходимо создать новую запись в таблице Raids Изначально достаточно указать название (raid_name) и не заполнять остальные поля.
Для Марш-броска необходимо завести по крайней мере одну Дистанцию в таблице Distances Необходимо указать ключ Марш-броска (raid_id) и название (distance_name).
В поле raid_ruleslink поставить ссылку на Положение, ссылка о стартовой информации заносится в поле raid_startlink.
Регистрация команд возможна до 23:59 даты окончания регистрации (raid_registrationenddate). При указании этой даты Марш-бросок отображается в списке и доступен для регистрации команд. К этому моменту должны быть заведены все дистанции, которые будут на Марш-броске - регистрация команд производится с привязкой имен к Дистанции.
Для создания Этапа внутри дистанции необходимо вставить запись в таблицу Levels, указав ключ Дистанции (distance_id), название (level_name) и порядок Этапа на Дистанции (level_order).
При вводе или в момент поступления данных от постановщиков необходимо заполнить:
- Тип старта: 1 - по готовности, 2 - общий, 3 - в момент финиша предыдущего этапа
- Минимальное время (дата-время) старта (level_begtime)
- Максимальное время старта (level_maxbegtime)
- Минимальное время финиша (level_minendtime)
- Максимальное время финиша (level_endtime)
При вводе времени старта и финиша команды программа контролирует нахождение внутри этих интервалов. Для типа старта 2 минимальное и максимальное время должно совпадать и равняться времени общего старта. Для типа 3 диапазон указать, как в финише предыдущего этапа. При вводе данных для типа старта 2 и 3 система не отображает время (т.е. контроль ещё до ввода данных) и в БД время старта команды NULL, но границы времени на этапах обязательны к заполнению.
- Список КП (level_pointnames) - заполняется через запятую
- Список штрафов в минутах за невзятие КП (level_penalties) - заполняется через запятую
- Индикатор КП, на которых действует амнистия (level_discountpoints) - заполняется через запятую значениями 0 или 1 (1 - участвует в амнистии, 0 - нет)
- Амнистия в минутах за невзятие КП (level_discount), 0 - нет амнистии (обычный режим)
Число КП, штрафов, индикаторов амнистии должно совпадать - БД это не контролирует (выдаётся ошибка в интерфейсе при попытке внести результат на такой Этап)
Ошибки в полях тип старта, минимальное время (для общего старта - тип 2), штрафы за КП оказывают существенное влияние на подсчёт результатов. Ошибки привязки Этапа к Дистанции, в названии и даже в типе старта, скорее всего всплывут сразу после ввода. Если потребуется менять критические для расчета поля после ввода результатов - необходимо запускать сервисный скрипт пересчёта результатов Марш-броска для всех команд.
Для ввода результатов ММБ с планшета также надо ввести в таблицу LevelPoints все активные точки. Для стандартного ММБ с одной сменой карт их будет 5 штук.
После того, как администартор сайта выложит карты дистанции, необходимо заполнить таблицу LevelMapLinks: level_id - ключ этапа, levelmaplink_url - ссылка на файл с картой. Допускается несколько карт на одном Этапе.