Приложение для сбора дефектов люков по окрестностям

Цена договорная • безналичный расчёт, электронные деньги
20 августа 2017, 18:56 • 5 откликов • 60 просмотров
Создать одностраничное веб-приложение, состоящее из формы с кнопкой для отправки этой формы:
- с возможностью загрузки нескольких (до четырех) фотографий
- чекбоксы A, A1, B, C, D с подписями:
- - A на проезжей части
- - A1 больше 2 см от поверхности
- - B зазоры больше 3 мм
- - C нет отверстий на поверхности
- - D неправильная маркировка

Форма должна отправлять на сервер данные о геопозиции устройства. В случае отсутствия таких данных должно выдаваться сообщение об ошибке.
Если отсутствие данных о геопозиции вызвано отсутствием у страницы разрешения пользователя на доступ к геопозиции, такое разрешение должно запрашиваться повторно при загрузке страницы (или при попытке отправки формы).

Полученные сервером данные формы должны обрабатываться следующим образом:
1) загруженные фотографии обрезаться до объема 1 мегабайт
2) составляться текст, на основе переданных чекбоксов по следующему принципу:

Текст A (только если чекбокс A)
Текст A1 (только если чекбокс A и A1)
Текст B (только если чекбокс B)
Текст C (только если чекбокс C)
Текст D (только если чекбокс D)

Тексты следующие:
  • A: Согласно п.п. 3.1.10, 3.1.11 ГОСТ Р 50597-93, люки смотровых колодцев и дождеприемников должны соответствовать требованиям ГОСТ 3634, а согласно п. 3.1.12, устранение недостатков, указанных в пп.3.1.9 и 3.1.10, следует осуществлять в течение не более суток с момента их обнаружения, а разрушенные крышки и решетки должны быть немедленно ограждены и обозначены соответствующими дорожными знаками и их замена должна быть проведена в течение не более 3 ч. ГОСТ Р 50597-93 не регламентирует критериев аварийности, и устанавливает строгие сроки устранения дефектов и несоответствий.
  • A1: Крышка люка отклонена относительно уровня покрытия больше 2 см, что нарушает п 3.1.10 ГОСТ Р 50597-93.
  • B: Между крышкой и корпуском зазоры, превышающие 3 мм, что нарушает п. 5.2.5 ГОСТ 3634-99.
  • C: На крышке люка отсутствуют технические отверстия, что нарушает п.п. 5.2.6, 5.2.4 ГОСТ 3634-99.
  • D: На крышке люка отсутствует маркировка с условным обозначением наименования инженерной сети, типа люка, исполнения, размеров лаза и обозначения ГОСТ, что нарушает п.п. 5.5.1 и 4.5 ГОСТ 3634-99.

3) Определять адрес по полученной геопозиции (https://geocode-maps.yandex.ru/1.x/?geocode=27.525773,53.89079&results=1)
4) Данные, а именно загруженные фотографии, текст и адрес или геолокация должны отправляться на порталы:
- "Наш Петербург" (http://gorod.gov.spb.ru/problems/add/?city_object=14&reason=230), текст идет в поле "Описание проблемы"
- "Сердитый Гражданин" (https://www.angrycitizen.ru/problems/one/130, форма по кнопку "Решить проблему")
- "Красивый Петербург" (http://xn--80accfiasjf8cghbfut2k.xn--p1ai/request?g=112)

5) в базу данных должна делаться запись, включающая:
- время создания записи
- URL созданной проблемы на "Наш Петербург"
- URL созданной проблемы на "Сердитый Гражданин"
- URL созданной проблемы на "Красивый Петербург"

Примеры созданных проблем:
- http://gorod.gov.spb.ru/problems/411822/
- https://www.angrycitizen.ru/case/756773
- http://krasimir.org/doc?nid=189423


Платформа: Ruby on Rails 5.1, запуск сервера на Heroku. Разработка в открытом git репозитории.
По необходимости покрыть тестами.
Мне как RoR разработчику легче будет понять, хорошо или плохо выполнено технически, я смогу развивать проект самостоятельно, и легче будет искать кого-то на поддержку.

Приложение должно читать конфигурационные настройки (логины и пароли к порталам) из переменных окружения.

Приложение предназначено исключительно для использования с мобильных устройств.

Оформление не имеет значения.

Корректность работы приложения не должна зависеть от разрешения экрана мобильного устройства.
Файлы