Skip to content

Памятка администратору сайта и БД

leonidfishkis edited this page Apr 3, 2013 · 2 revisions

Соглашения по именованию таблиц и полей

Таблицы называем с большой буквы, поля - маленькими, Пишем комментарии к каждой таблице и полю Обязательно делаем 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 - ссылка на файл с картой. Допускается несколько карт на одном Этапе.