Задачи проекта

Разработать мобильное приложение, которое облегчит работу товароведов и сократит затраты на подготовку и хранение фото изделий, сдаваемых в залог.

 

На первый взгляд задача довольно простая:

  • фотографировать изделия
  • отправлять фотографии в файлохранилище
  • делать отметку в учетной системе 1C о выполнении задачи

 Но дьявол — в мелочах! Подробнее об этом в описании процесса разработки.

  • время работы

    160 часов
  • дата запуска

    01.02.17
  • уровень сложности

    средние
fianit_storekeeper01.jpg
fianit_storekeeper02.jpg
Андрей Сухоносов
Программист
Чтобы адекватно решить поставленную клиентом "простую задачу", пришлось хорошо в ней покопаться.
Вместе с клиентом увидели кучу подводных камней. Успешно их раскидали.
Зато теперь всё работает, как швейцарские часы.
fianit_storekeeper03.jpg
fianit_storekeeper04.jpg

В итоге за адекватные деньги разработали мобильное приложение, которое реально экономит ресурсы клиента: и деньги, и время.

Приложение на Android?

К приложению предъявлялись следующие основные требования:

  • возможность авторизации/деавторизации пользователя
  • работа в реальном времени (готовность в любой момент принять задачу на фотографирование)
  • возможность добавления любого количества фотографий, их удаление и отправка
  • возможность добавить фотографии к уже выполненной ранее задаче
  • все отснятые фотографии должны быть загружены на ftp и автоматически сделана пометка в 1C о количестве отснятых фотографий по задаче
  • стабильная работа на любых Android-смартфонах от версии 4.1 и выше
  • информирование пользователя о любых ошибках, проблемах или препятствиях, мешающих тому или иному действию, изменениях статусов выполнения задачи и т. п.
  • простой и понятный пользовательский интерфейс, особенно — для не опытного пользователя
  • «защита от дурака» (адекватное реагирование на любые действия пользователя и операционной системы смартфона)
  • соблюдение требований по безопасности к передаваемым данным

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

Но подобное решение очень сомнительно по целому ряду причин, поэтому для обслуживания приложения и связи его со всеми звеньями цепи нужен веб-сервис.

Веб-сервис + приложение!

Веб-сервис — это как серый кардинал — его никто не видит, но он делает самую сложную работу:

  • отвечает на запросы всех копий мобильного приложения:
    • авторизует
    • проверяет сессию
    • принимает фотографии
    • и другие
  • поддерживает постоянное соединение со всеми копиями мобильного приложения
  • принимает задачи на фотографирование от 1C
  • уведомляет в реальном времени нужную копию мобильного приложения о новой задаче
  • загружает фотографии на ftp
  • устанавливает связь с 1C и делает отметку о результатах выполнения задачи

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

— Что значит при необходимости спросите Вы? Разве работа уже не завершена?

— Отличный вопрос! Но всегда нужно учитывать дальнейшие варианты развития продукта. В будущем клиент захочет что-то добавить, расширить функционал и, чтобы каждый раз не начинать все с начала и не переписывать все с нуля при любых доработках, нужно заранее планировать архитектуру.

И это все?

Также мы не будем вам рассказывать (Вы это и так понимаете), что у любой подобной системы должно быть минимум 3 отдельных версии:

  • Development — версия для разработчика (приложение и веб-сервис). Это версия приложения на телефоне разработчика, которая работает в связке с веб-сервисом на машине разработчика
  • Staging — версия для тестирования IT-шниками клиента, которые принимают работу. Это версия на телефонах тестировщиков клиента, которая работает в связке с веб-сервисом на сервере клиента, т. е. должна быть публично доступна в сети. Также для этой версии есть отдельная тестовая 1C и отдельный тестовый ftp.
  • Production — рабочая или боевая версия. С этой версией все понятно — приложения установлены на смартфонах товароведов.

И все эти версии приложений и веб-сервисов надо правильно обслуживать — устанавливать и обновлять. Ведь все должно происходить быстро и ошибки, связанные с человеческим фактором должны быть исключены — нельзя, чтобы тестовое приложение связывалось с рабочим веб-сервисом и наоборот, или рабочий веб-сервис загружал файлы на тестовый ftp или получал задачи от тестовой 1C и т. д. Комбинаций ошибок не мало.

И эту проблему мы предусмотрели и решили заранее.

 

Вот это да!

Таким образом исходная задача, которая реально отражала лишь 10–15% всех проделанных работ была решена во время и с максимальной заботой о клиенте и его бизнесе с применением самых современных технологий.

У Вас есть идея?
Давайте обсудим. И реализуем!
Приезжайте

г. Челябинск,
ул. Маркса, 46,
6 этаж

по будням
с 9:00 до 18:00