JS,Python(PHP), – доделать(переделать) бэк + дописать фронт

30 000 руб. за проект
07 октября 2019, 03:38 • 5 откликов • 78 просмотров
ТЗ на сайт moneytime.click (тоже самое в word можно скачать тут - > https://yadi.sk/i/2mPDBtntNQJMtg

На данный момент есть:
- Файлы:

Чистая FrontEnd разработка, представлена в архиве с хэш суммой SHA-1 7CF14F9F64CA49D3D78709562073C0DB6A613760 (Далее ЧФ). BackEnd+FrontEnd разработка, представлена в архиве с хэш суммой SHA-1 1371F66180DD8FD2E9C59452B2A4590A9A973129 (Далее БФ). - чистый фронт на vue.js (ЧФ) (отличается от того, что можно увидеть по адресу moneytime.click)

- бэк на питоне, написанный на flask(БФ), НО немного под другой фронт (чистый фрон, претерпевший изменения), исходники которого (фронта) у меня не сохранились.

- Проект должен включать уже выполненные части сайта и их полный функционал (ЧФ + БФ). (файлы будут предоставлены, чтобы вы смогли их проверить с указанными хэш суммами)

- Все следующие задачи нужно сделать на уже существующем функционирующем сайте, который работает на коде «БФ».

- Сделать оформление сайта в соответствии с уже разработанным фронтом из «ЧФ».







Задачи:

1. Административная панель.

1.1. Кнопка, запускающая поиск победителей. Проводить ежедневный и ежемесячный розыгрыш. При нажатии на кнопку, запускается выбор победителя среди всех участников ИГРЫ, у которых есть очки по формуле (см. правило 11.11.11.11 ниже). 1.2. Вкладка, где можно посмотреть 1.2.1. Количество посещений, общее. 1.2.2. Количество посещений, уникальных пользователей.
1.2.3. Количество всех заработанных очков. 1.2.4. Количество очков среднего пользователя 1.2.5. Количество нажатий по рекламе.
1.2.6. Среднее время игры игроков.
1.2.7. Количество новых пользователей в день, месяц. 1.3. Кнопка, запускающая обновление сертификата let’s encrypt 1.4. Возможность редактировать очки пользователя, как зарегистрированного, так и случайного (пользователя который не зарегистрировался, но сыграл), просматривать пользователей, сортировать их по результатам, осуществлять поиск по id. 1.5. Устанавливать режим работы сайта – технические работы и обычный.
1.6. Возможность загружать цели (картинки) для игры, как поштучно, без использования архивов, форматов svg, png, jpeg, bmp, gif., методом перекидывания файлов в целевую папку сайта через административную панель.
1.7. Возможность добавлять цели (картинки) для игры, как поштучно, без использования архивов, форматов svg, png, jpeg, bmp, gif., методом перекидывания файлов в целевую папку сайта через административную панель.
1.8. Для каждого загружаемого элемента целей, должны быть указаны его размеры и выполняться проверка загружаемой картинки на соответствие нужным размерам. 1.9. Вкладка, где осуществляется добавление рекламных блоков, в ней осуществить разбивку по категориям рекламных баннеров, пять разных подразделов для пяти групп на отдел (Пк, Планшет-горизонт, Планшет-вертикаль, Телефон-горизонт, Планшет-Горизонт).
1. 10. Загрузка рекламного блока, как статичного, так и адаптивного: 1.10.1.Должна осуществляться выбором файла через кнопку «обзор». 1.10.2.Указанием его цены. 1.10.3.Указанием его адреса, на который будет вести переход по данному баннеру (url). 1.10.4.Указанием его номера (от 1 до 4). 1.10.5.Указанием даты старта и даты окончания срока существования баннера (без удаления). 1.10.6. Возможность добавление любого url в адрес рекламного баннера, любой длины, любых символов. 1.10.7. Для каждого загружаемого элемента, должны быть указаны его размеры и выполняться проверка загружаемой картинки на соответствие нужным размерам. 1.11. Вкладка, где видны, уже установленные лимиты и устанавливаются: 1.11.1. Лимит на скорость решения задачи (минимальный и максимальный порог в секундах) 1.11.2. Лимит на количество обновлений – “n” и время “t” за которые эти обновления совершены. 1.11.3. Лимит на количество кликов по рекламным баннерам – “k” и время “t” за которые эти клики совершены. 1.11.4. Лимит на количество ошибок “er” и время “t” за которые эти ошибки совершены (под ошибкой подразумевается -1 бал пользователю). 1.11.5. Лимит на количество игр, после которых выводится гугл рекапча (“min” – минимальное количество игр и “max” – максимальное количество игр, в случайном диапазоне между этими числами будет срабатывать гугл рекапча). 1.11.6. Срок заморозки пользователей «t», количество нарушений «n» и время, за которое они были сделаны «tn». 1.11.7. Лимит на количество нарушений «cer» , время за которые они совершены «tcer», после чего профиль блокируется (но не удаляется, с возможностью ручной разблокировки). 1.12. Возможность редактировать количество целей, как для вывода на баннер «цели», так и количество целей, что появляются на главном игровом окне. 1.13. Возможность редактировать текстовое содержимое сайта без использования кода: 1.13.1. Вывод всех текстов в файл формата .txt (для переводчика) 1.13.2. Загрузка новых переводов для других языков, файлом .txt (загрузка новых языков) 1.13.3. Редактирование всех текстовых элементов сайта. 1.14. Просмотр пользователей, их статистики, редактирования любых значений пользователя. 1.15. Добавлять новые языки: 1.15.1. Загрузка осуществляется нажатием на кнопку «обзор» и загружая .txt файл. 1.15.1. Загрузка ярлыка языка осуществляется нажатием на кнопку «обзор» и загружая картинки форматов svg, png, jpeg, bmp, gif. 1.16. Отправка сообщений пользователям: 1.16.1. Возможность выбора, всем, конкретному, или нескольким пользователям. 1.16.2. Ввод текста этого сообщения и возможность загрузки картинки. 1.17. Установка коэффициентов для реферальной системы.
1.18. Установка количество бонусных очков, за размещения поста в соц. сетях. 1.19. Установка количества игр, до появления предложения разместить пост в соц. сетях.

2. Игра.

2.1. Добавить случайную автоматическую генерацию имени баннерам с целями и рекламой, чтобы исключить возможность блокирования по неизменному имени файла, либо корню. Пояснение: 1) Сервер берет картинку рекламный баннер c именем «advbaner1» из папки «adv» и сохраняет ее со случайным именем в папку «random», запомнив это имя. 2) Сервер берет картинку с целями c именем «goals» из папки «goals» и сохраняет ее со случайным именем в папку «random», запомнив это имя. И потом из папки random случайно загружает две картинки со случайными именами. 2.2. Заморозка пользователя на n время, после того, как 2.2.1. Время, затраченное на игру, не соответствует нормам «1.11.1». 2.2.2. Количество кликов по баннерам не соответствует нормам «1.11.2». (ОСТЛЕЖИВАТЬ ЧЕРЕЗ ПЕРЕНАПРАВЛЕНИЕ С НАШЕГО САЙТА ТОЛЬКО ЧЕРЕЗ КОД БЭКА) 2.2.3. Количество обновлений игровой страницы не соответствует нормам «1.11.3». 2.2.4. Количество его очков уходит за нуль. 2.3. Блокировка пользователя, после чего профиль блокируется (но не удаляется, с возможностью ручной разблокировки в будущем), если пользователь не соответствует нормам «1.11.7». 2.4. Проверка пользователя гугл рекапчей в соответствии с нормами «1.11.5», которая будет выводить в попапе, аналогичным попапу правил на игровой странице «/game». 2.5. Генерация двух картинок (рекламного баннера и целей) на игровой странице «/game»: 2.5.1. Добавить одинаковые ссылки на баннеры «/adv», как для рекламы, так и для целей, с перенаправлением игрока на сайт рекламодателя через наш сайт, после нажатия. 2.5.2. Картинка целей и рекламный баннер, должны быть идентичны во всем, кроме названия файлов (они случайны в соответствии с «2.1»).
2.5.3. Картинка целей должна быть монолитной, неделимой, ничто, кроме содержимого картинки не должно указывать на то, что это цели. 2.5.4. Картинка целей должна быть ТОГО ЖЕ формата, что и рекламный баннер (исключение адаптивный баннер). 2.5.5. На картинку «цели» должен быть наложен цветовой фильтр, чтобы исключить считывание по цвету пикселей ботами. 2.5.6. Цели внутри картинки «цели» должны располагаться: 2.5.6.1. Случайно внутри картинки «цели», но, не залезая на слово «Цели» и сильно друг на друга. 2.5.6.2. Со случайным углом поворота вокруг своей оси относительно математической координатной линии “y” но в плоскости “x”. (Пояснение, т.е. она может стоять вверх тормашками, но не может быть ребром к игроку). 2.5.6.1. Чтобы пользователь мог их распознать легко. 2.5.7. Все цели должны быть разные, а их количество соответствовать значению, установленному через «1.12».
2.5.8. Размеры блоков, за исключением адаптивных вариантов, должны соответствовать значениям ((ширина x высота)px), а располагаться (слева и справа от игрового поля - «р1» или сверху и снизу игрового поля - «р2»), так, чтобы быть максимально прижатыми к краю экрана игрока, но не выходить за его рамки на любом устройстве. 2.5.8.1. Для ПК – (160х600) - «р1» 2.5.8.2. Для планшета ПРИ ВИРТИКАЛЬНОЙ ОРЕИНТАЦИИ – (728х100) - «р2» 2.5.8.3. Для планшета ПРИ ГОРИЗОНТАЛЬНОЙ ОРЕИНТАЦИИ – (125х600) - «р1» 2.5.8.4. Для телефона ПРИ ВИРТИКАЛЬНОЙ ОРЕИНТАЦИИ – (320х100) - «р2» 2.5.8.5. Для телефона ПРИ ГОРИЗОНТАЛЬНОЙ ОРЕИНТАЦИИ – (125х320) - «р1» 2.5.9. Положение рекламного и целевого блока задается СЛУЧАЙНО, но в пределах правила «2.5.8». 2.5.10. Картинка с рекламой обновляется ТОЛЬКО во время обновления страницы. 2.5.11. Рекламный блок обновляется циклично в порядке очереди возрастания их id. (т.е. по кругу) 2.5.12. Если пользователь не авторизирован, то ему показывается случайный рекламный баннер.
2.5.13. Если пользователь авторизирован, то запоминается, как последний баннер. 2.5.14. Если первая игра авторизированного пользователя, то показываем баннер с id = 1.
2.5.12. Картинка с целями обновляется каждый раз по ajax, после успешной или неудачной игры. 2.6. Игровое поле, должно располагаться между рекламными баннерами, максимально широко и высоко, но чтобы помещалось внутри пользовательского экрана и не заходило и не скрывалось за рекламными блоками. 2.7. Внутри игрового поля, загружаются случайные картинки из папки с целями, без повторов. Их количество соответствует значению, установленному через «1.12». Остальное. 2.8. Возможность пользователю привязать свои соц. сети, чтобы он мог авторизироваться через любую из них, при этом попав на свой единственный игровой профиль. 2.9. 2.10. Сделать, чтобы во время игры рекламный блок рекламных агентств не загружался многократно. Т.е. для рекламных систем, вроде яндекса, гугла и других подобных, чей код вставляет непосредственно. Необходимо сделать загрузку рекламы на сам сервер, а затем вставлять ее с нашего сервера, тем самым исключив накрутку просмотров для рекламодателей, загружая рекламу вновь только при полном обновлении страницы (ТОЛЬКО ЕСЛИ ВОЗМОЖНО, ПРЕДУПРЕДИТЬ ЗАРАНЕЕ) 2.11. Добавить попап, с предложением разместить пост в соц. сети, ссылку для размещения поста (т.е. его генерацию). По всем соц. сетям, через который авторизирован/зарегистрирован пользователь с умножением коэффициента зарабатываемых очков за каждый пост +1. Т.е. если пользователь разместил в вк и фб посты, то он за одну игру будет получать не стандартное +1 очков, а +3 (+2 за каждую соц. сеть). (Если нет возможно по всем, то через ту, которую первую, предупредить заранее). Попап будет размещаться так же, как попап с правилами, только с другим содержимым. Размещаться будет через установлено в «1.12» правиле сыгранных игр. 2.12. Необходимо сделать возможность закрывать баннеры с правилами навсегда. Исключением является баннер с предложением разместить пост в соц. сети. (он независимо от значения чекбокса каждый месяц показывается каждому игроку. Баннеры должны закрываться по отдельности, т.е. пользователь сам выбирает какие конкретно попапы с правилами больше не будут появлятся. У каждого попапа должен быть чекбокс. Исключением является попап с предложением разместить пост в соц. сети. Он так же может быть скрыт игроком, но только до розыгрыша, после розыгрыша он снова появится, пока игрок его снова не отменит и т.д. 2.13. Ссылки в виде картинок на соц. Сети на страницу технических работ. 2.14. Любые графические элементы сайта из архивов ЧФ и БФ должны работать без ошибок, кнопки срабатывать с первого раза, отображение не должно ломаться при деформациях размера экрана («зумирование»). 2.15. Перенастроить авторизацию через соц. Сети на мой аккаунт. 2.16. Сделать, чтобы все линки вели в нужные места. 2.17. Сделать, чтобы каждый элемент сайта работал без перезагрузок, чтобы из каждого окна/попапа можно было выходить, взаимодействуя с элементами сайта, а не браузера. 2.18. Должна быть реализована мультиязычность, в виде возможности для пользователя выбирать язык. 2.19. Добавить иконку для авторизировавшихся пользователей, кто не имеет фото или оно не загрузилось. 2.20. Добавить иконку зазывающую кликнуть на нее на человечка, чтобы пользователь авторизировался. 2.21. Добавить выпадающее окно при наведении иконки, где пользователь может увидить, что эта за иконка и где предлагаются методы авторизации через соц. сети. 2.22. Загрузить лого вместо надписи. 2.21. На сайте для рекламодателей сделать рабочим предпросмотр 2.22. Добавить виджета гугла, фб и ок на комментарии. 2.23. Реализовать систему попапов, который будут всплывать у пользователя после авторизации, в случае, если для него есть сообщение.
2.24. Из любого положения на сайте, пользователь должен быть в состоянии выйти, нажав на кнопку, без перегрузки страницы или иного взаимодействием непосредственно с браузером (иначе говоря, чтобы не было мертвых страниц) 2.25. Реферальная система, с учетом коофицентов, за приглашенных пользователей или размещенные посты в соц. сетях. 2.26. Вывод окна для предложения регистрации (после пробной игры, для сохранения результата игры) (в попапе правил, изменяем только текст) через 2 успешных игры. 2.27. Сохранение данных пробной игры, для начисления после регистрации или авторизации. 2.28. Добавить ссылку в подвал, откуда я иконки позаимствовал 2.29. В случае блокировки пользователя, ему выводится попап с ссылкой на правила и наши соц.сети, а так же с причиной блокировки. 2.30 Добавить на страницу для рекламодателей, свободные позиции и время окончания занятых позиций. 2.31. Подгрузка миниатюры фотографии в иконку профиля со страницы соц. сети. 2.32. Возможность отправки сообщений методом обратной связи (перед отправкой должна быть выполнена проверка гугл рекапчей). Возможно ТОЛЬКО для зарегистрированных пользователей. 2.33. Очки в базе данных должны сохраняться в базе пользователя, а не отдельно.



Уже выполненные Задания, что не отменяет необходимость их наличия. 3. Реферальная система. 3.1. Генерация уникальной ссылки. 3.2. Добавление очков пригласившему. 3.3. Автоудаление после месяца с начала регистрации приглашенного. 3.4. Сделать невозможным приглашение пользователей друг другом (т.е. только один может пригласить другого) 4. Регистрация. 4.1. Регистрация и вход через соц.сети. 4.2. Привязка ФИО, ФОТО, ВОЗРАСТА, ПОЛА, МЕСТА ЖИТЕЛЬСТВА к базе данных сайта. 4.3. Генерация статистики по пользователям для рекламодателей. 4.4. Учет реферальной системы при регистрации. 5. Игра. 5.1. Генерация целей и рекламного блока. 5.2. Обработка полученных от пользователя целей, учет времени игры, количества ошибок. 5.3. Генерация гугл капчи и учет ввода (ошибки, успешные попытки, время, отмены). 5.4. Смена местами целей и рекламного блока. 5.5. Генерация цветового фильтра на цели, для исключения возможности ботам выбора целей по пиксильно. 5.6. Подсчет переходов по баннерам и обновлений страницы. 5.7. Учет коэффициентов и пригласивших пользователя игроков, для зачисления дополнительных очков, удаление их после 30 дней с момента приглашения. 5.8. Вывод окна для предложения увеличить коэффициента, путем размещения на странице соц. сети закрепленной записи. 5.9. Вывод окна для предложения регистрации (после пробной игры, для сохранения результата игры). ФОРМУЛА РАСЧЕТА ПОБЕДИТЕЛЯ. 11.11.11.11. Добавить выборку десяти пользователей на основе их очков в конце каждого дня. Выборку осуществлять следующим образом. 1. Находится значение x. 2. Каждому пользователю в порядке возрастания номера его id начиная с 1, присваивается n и wpmax. 3. Вычисляется значение win. 4. Ищется победивший пользователь, чей n ≤ win и wpmax ≥ win. где x – сумма заработанных всеми игроками целых очков за y + с (например, если заработано пользователем 2,7 очков – то в подсчете используется 2 очка). где y – временной интервал с 0 часов 0 минут 1 секунды до момента розыгрыша где z – сумма заработанных целых очков пользователя за y. где с – количество всех игроков. где n – z предыдущего пользователя + 1. где win – rand(x). где – wpmax, n + z, включительно. Пример. 1. x = 35+ с(3*1) = 38. 2. ID1 - Вася – 10 очков заработал, тогда n = 1, wpmax = 11.
ID2 - Лена – 12.7 очков заработал, тогда n = 12, wpmax = 24.
ID3 - Дима – 13.1 очков заработал, тогда n = 25, wpmax = 38. 3. win = rand(38), допустим 13. 4. Победитель – Лена, поскольку ее n = 11 ≤ 13, а wpmax=23 ≥ 13











Файлы
Отзывы
Минус, поскольку:
- Заказ не был выполнен.
- Сроки переносились неоднократно, с обещаниями выполнить, безрезультатно.
- Исполнитель может не отвечать на сообщения, игнорировать.
- С некоторыми поставленными задачами в ТЗ не справлялся.
- Некоторые моменты реализованы были криво.
- Множество ошибок при разработке, которые заказчику приходится находить самому.
Но есть и плюсы.
- Самый важный, пожалуй, исполнитель честно вернул средства.
- На связь все же выходит, готов общаться лично.
- Не боится взяться за сложный проект.
- Фулстек.
4 года назад