Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

Как устроено сейчас:

1. В нашем клубе физически проходит турнир ЧГК (спортивное "Что? Где? Когда"?), его результаты (список команд, количество набранных баллов и таблица того, какие конкретно вопросы отвечены правильно) записываются в гугл-таблицу.

2. Гугл-таблица опубликована и встроена (iframe) на сайт как здесь: http://chgk.tomsk.rocks/sync_results.html. Числа 1-48 в самой верхней строке - номера вопросов, на пересечении номера вопроса и команды стоит 1 или пусто, это означает, ответила ли команда правильно на вопрос или нет. Над списком команд - название турнира.

3. Результаты обновляются в гугл-таблице вручную.

Как хотим чтобы было:

1. В нашем клубе физически проходит турнир. У турнира в 99% случаев есть свой рейтинговый ID (будет объяснено позже).

2. На нашем сайте создаётся сущность "турнир" и задаётся связь этой сущности с рейтиновым ID + возможность задать дату прошедшего турнира (по умолчанию now()).

3. Для 99% турниров результаты турнира загружаются на сайт http://rating.chgk.info/ (это происходит за пределами описываемой задачи, независимо от неё), на наш сайт напрямую НЕ загружаются.

4. В течение нескольких недель после окончания турнира на сайте рейтинга рассматриваются спорные ответы и апелляции. Для разработки неважно, что конкретно происходит, главное для понимания, что результаты немного меняются, поэтому нам надо периодически в бэкграунде синхронизировать содержимое нашей базы с сайтом рейтинга. Синхронизация по API, например: http://rating.chgk.info/api/tournaments/4972/list.json. Важные поля - current_name, questions_total и mask, это название команды, сумма набранных баллов и "таблица" того какие конкретно вопросы отвечены правильно. 4972 тут - это рейтинговый ID, идентификатор турнира на сайте рейтинга. 

5. Для этих 99% турниров ничего вручную нам менять не требуется. 

6. Есть 1% турниров которые проводятся не через сайт рейтинга. Для них надо сделать возможность заливать результаты вручную на наш сайт (.csv например). Фасад при этом должен быть такой же как и у обычных турниров. На странице http://chgk.tomsk.rocks/sync_results.html и 99% и 1% турниров никак не отличаются, так и должно быть.

7. Результаты берутся из базы и более-менее красиво публикуются на нашем сайте в табличном виде, дизайн адаптивный. 

То есть, если вкратце, результаты турнира загружаются либо на сайт рейтинга и оттуда синхронизирующим скриптом заливаются к нам в базу, либо напрямую к нам в базу; из базы результаты отображаются на сайте, сортировка по дате турнира.

В итоге должно получиться подобие этой страницы: http://chgk.tomsk.rocks/sync_results.html, только выглядеть чуть красивее.

База пусть хранится в каком-нибудь бесплатном/дешёвом облаке, 100% аптайма нам не надо. Код должен храниться на гитхабе, мы автоматически подсасываем код оттуда в хероку. Не битрикс, не вордпресс. Язык - PHP или Python.

5 лет назад
fjqtp
Егор 
35 летРоссия
5 лет в сервисе
Был
5 лет назад