Компания Квазар – ведущий производитель терминалов для медицинского осмотра в России и СНГ.
Мы участвовали разработке клиентской части мобильного приложения для медицинского осмотра.
Приложение обеспечивает взаимодействие между терминалом медицинских осмотров и сервером. Терминал представляет собой комплекс оборудования для измерения параметров здоровья человека: температуры, давления, пульса и наличия паров алкоголя. После выполнения измерений результаты передаются на сервер.
Приложение позволяет взять часть функций терминала на себя: авторизацию пользователя, отображение данных и результатов измерений, рисование подписи и другое. В отличие от программного обеспечения терминала, приложение легко обновить через магазин приложений.
При реализации приложения были использованы BLE (Bluetooth Low Energy) и gRPC. В качестве SDK был выбран Kotlin Multiplatform, используемый для кроссплатформенной разработки.
gRPC позволяет передавать данные между приложением и сервером наиболее оптимальным образом в бинарном виде, минимизируя трафик, что повышает отзывчивость приложения и улучшает впечатление пользователя.
Беспроводная технология Bluetooth Low Energy использована для передачи данных между терминалом и приложением. Эта технология сложна для интеграции из-за проблем с установкой связи между устройствами.
Практика показала, что стандартное API BLE на Android с некоторыми устройствами не работает, могут не устанавливаться связь и появляться ошибки типа 101, 133. Иногда данные подключения могут сохраняться в кеше устройства, что также может приводить к неверному поведению. Сбросить кеш блютуза просто так нельзя, так как в API Android нет доступной функции. Для решения этой задачи была использована библиотека RxAndroidBle.
Для преодоления проблемы соединения с устройствами в приложение были добавлены несколько попыток повторного сканирования с таймаутами.
Nolim — команда, которая обратилась к нам для получения помощи в реализации модификаций для Tilda, популярной платформы для создания веб-сайтов без программирования. «Нолим» занимается разработкой и интеграцией кастомных функциональных возможностей для Tilda, чтобы удовлетворить специфические требования и потребности своих клиентов.
Работая с Nolim, мы помогли им внедрить ряд модификаций, которые позволили улучшить функциональность уже существующих инструментов Tilda, а также разработали функциональность живых примеров, при помощи которых можно настроить и протестировать модификацию до внедрения ее на свой сайт. В частности, мы создали индивидуальные блоки и функции для более гибкого и эффективного использования Tilda.
Для обеспечения максимальной совместимости и отзывчивости веб-сайтов, разработанных с помощью Tilda, мы уделяли особое внимание кросс-браузерной совместимости и адаптивному дизайну. Независимо от устройства или браузера, пользователи могут получить одинаково качественный опыт использования сайта, благодаря работе по оптимизации и тестированию.
С помощью CSS, jQuery и JavaScript мы создавали настраиваемые элементы дизайна для Nolim на основе их уникальных брендовых идентификаторов. Это включало разработку настраиваемых шрифтов, цветовых схем, стилей кнопок, анимаций и переходов между разделами веб-сайта. Таким образом, Nolim могли предоставлять клиентам полностью персонализированные веб-страницы, соответствующие их индивидуальным потребностям и визуальным предпочтениям.
Благодаря сотрудничеству с нами Nolim смогли удовлетворить требования своих клиентов, предлагая индивидуальные решения на основе Tilda, а также обеспечить более высокий уровень функциональности и производительности их сайтов. Это позволило заказчику укрепить свое присутствие на рынке и привлечь новых клиентов.
Мы гордимся тем, что смогли помочь команде Nolim за короткий промежуток дать много качественных модификаций для Tilda. Наш подход к работе был основан на высоком качестве кода, использовании современных технологий и постоянной инновационной мысли. Мы стремились создать гибкое и эффективное решение, которое выделяется среди разработок конкурентов и способствует дальнейшему успеху бизнеса Nolim.
Сотрудничество с командой Nolim было захватывающим и успешным опытом. Наш вклад в реализацию модификаций для Tilda дал Nolim конкурентное преимущество и помог им привлечь больше клиентов. Мы гордимся тем, что наша работа способствовала успеху заказчика. А работа пользователей стала значительно проще и эффективнее, при использовании обновленных инструментов.
Сервис team-finder.ru был запущен в 2019 году группой энтузиастов футбола, которые хотели облегчить людям занятие любимым видом спорта. С помощью сервиса team-finder.ru игроки в футбол любого уровня могут искать команду, а команды — игроков.
Сервис позволяет пользователям создавать профили с указанием личной информации, навыков, предпочтений. Пользователи также могут просматривать игроков, существующие команды, наличие в них свободных мест, отправлять сообщения и присоединяться к матчам. Сервис работает по всей стране, в любом городе.
Заказчик обратился с просьбой устранить ошибку, возникающую при входе в личный кабинет игрока/команды после регистрации, которая мешала дальнейшей работе на сайте. Также нужно было доработать верстку, чтобы карточки зарегистрированных игроков были все одного размера, независимо от загружаемых фото.
В ходе исследований были выявлены ошибки в коде, в части передачи данных с бэкенда на фронтенд. Ошибки были устранены. Но после их ликвидации были выявлены новые недочеты подобного плана при работе в личном кабинете. Новые ошибки отследить до исправления первоначальных было невозможно.
По итогу все ошибки, возникающие при работе в личном кабинете сервиса, были устранены. Также были внесены изменения в верстку, которые позволили более красиво отображать карточки игроков.
uHome - приложение для умного дома. Оно позволяет контролировать и управлять безопасностью и комфортом в помещениях пользователя. Пользователь может видеть состояние датчиков, получать уведомления об изменениях их состояний, управлять устройствами. Это позволяет выполнять постановку и снятие с охраны, управлять приборами через умные розетки и реле, просматривать данные по температуре и влажности, получать push-уведомления в случае открытия дверей, движения, задымления и даже затопления. Важные сообщения могут быть продублированы в Телеграм.
Приложение разработано на основе открытой бесплатной платформы openHAB, включающей в себя также и серверную часть.
В ходе работ была проведена интеграция с дизайном заказчика, доработан функционал, проведен рефакторинг кода, добавлены сценарии автоматизации управления умным домом.
Наиболее значительным и интересным моментом было добавление в приложение возможности создания сценариев. Сценарий представляет из себя логическую связку из условия и действий «если, то», что позволяет связать изменение состояния датчика с управлением устройством, тем самым автоматизировав управление. К примеру, открыли дверь - сработал датчик двери - включился свет; все ушли на работу - в 8:00 включился сценарий «Никого нет дома» - свет и кондиционеры выключились. Можно не только включать/выключать устройства или сценарии, но и отправлять push-уведомления или сообщения в Телеграм.
В ходе работ была преодолена сложность в интеграции с текущими механизмами приложения, в частности, с системой навигации под Android, построенной на менеджере фрагментов, которая на данный момент является устаревшей.
Нередко к нам обращаются за разработкой парсеров.
Парсер — это программа, которая собирает с сайтов информацию по заданным параметрам. Это могут быть название и стоимость товара или контакты ответственных лиц. С помощью парсера собирают контент для своего ресурса, например агрегатора новостей, или информацию о товарах с сайта поставщика. Но чаще всего парсеры заказывают для анализа цен конкурентов с целью сформировать собственное, более выгодное для покупателей предложение.
Сам по себе сбор информации с сайтов не является технически сложной задачей или уголовно наказуемым — информация, размещенная в публичном доступе, обычно не охраняется, кроме отдельных случаев, регулируемых авторским правом. Но, если владельцы сайта-донора не хотят делиться контентом с конкурентами, они прилагают серьезные усилия для защиты своей информации. И тогда задача создания парсера многократно усложняется.
Наш заказчик — владелец онлайн-аптеки — хотел получить информацию о ценах сайта-конкурента.
Парсер должен был иметь следующие функции:
• возможность запуска по расписанию;
• защиту от одновременного запуска нескольких процессов парсинга;
• обход защиты сайта-донора;
• возможность использовать прокси для обхода блокировки IP-адреса, с которого отправляются запросы;
• сбор информации по определенным категориям товаров с возможностью изменения списка категорий;
• сохранение результата работы парсера в txt-файл.
В первую очередь были проведены работы по поиску оптимального решения для сбора информации с наименьшим количеством запросов, так как чем меньше запросов — тем меньше вероятность получить блокировку. Был найден подход, который сочетал в себе как обычный парсинг страниц через браузер, так и прямые запросы к API, который был обнаружен, в ходе изучения структуры сайта-донора.
Путем определенных манипуляций была достигнута возможность отправлять запросы к этому API. Далее уже по полученным из API данным собиралась информация по заданных критериям. Это позволило получить более быстрое и надежное решение, чем обычный парсер страниц.
В разработанном решении обычный парсер отрабатывает при старте. Собирает информацию, получает заголовки для авторизации, запускает первый запрос к API и дальше опрашивает только API.
Для обеспечения работы парсера без обнаружения были использованы следующие библиотеки: selenium-wire и undetected-chromedriver .
Для более легкой сборки проекта и его запуска было решено использовать контейнеризацию Docker. Подход обеспечил возможность первоначального запуска проекта с использованием буквально двух команд без необходимости переживать об установке всех зависимых пакетов. Для этих целей мы использовали Docker image ultrafunk/undetected-chromedriver, который позволяет запускать браузер Chrome внутри виртуального контейнера без необходимости подключения внешнего экрана, что при запуске парсера на сервере является важной составляющей.
Кроме того, для лучшей наглядности процесса и оптимизации работы парсера использовался подход по логированию всех важных действий парсера с указанием описания процессов, происходящих во время парсинга.
Результирующий файл содержит список городов, магазинов, ID товара, название товара и другую требуемую информацию.
К нам обратился заказчик для доработки сервиса Inntravel.ru — сайта выгодных путешествий по России. Задача на первый взгляд небольшая — поправить логику отображения и фильтрации отелей.
Заказчик был уверен, что сайт почти готов.
При изучении проекта мы столкнулись с неожиданными вызовами. Оказалось, что термин «почти готов» в этом контексте означал, что готов был только «каркас» проекта. В частности, обнаружили, что база данных содержит только сырые SQL-запросы, а система backend'а не структурирована. Даже при простой попытке развернуть проект для локальной разработки и анализа кода пришлось исправить большое количество ошибок. Как результат, проект находился в полностью незавершенном состоянии и требовал значительной работы для соответствия требованиям стандартного полноценного сайта.
Backend проекта был написан на Flask. Для взаимодействия с базой данных приняли решение интегрировать библиотеки SQLAlchemy (ORM для взаимодействия с базой данных) и Alembic (для управления миграциями базы данных) в уже существующий код.
Все ранее существующие SQL-запросы переписали через новый ORM и создали соответствующие модели, описывающие структуру базы данных. Это было необходимо как для использования SQLAlchemy, так и для работы с Alembic. В результате этих изменений значительная часть предыдущего кода была переработана, исправили большое количество ошибок, добавили динамический контент в статичные элементы сайта.
Также были успешно интегрированы платежные системы: система быстрых платежей (СБП) и «Альфа-банк». Это решение позволило пользователям сайта выбирать оптимальный способ оплаты и сделало процесс проведения транзакций более удобным и гибким.
Создали систему по указанию цен на конкретную комнату в отеле в пределах от одного дня и до всего года.
Разработали новый личный кабинет для пользователей, который позволяет им создавать и редактировать информацию об отелях, а также осуществлять покупку и продление подписок.
Добавили парсер для сбора данных по сайту hochu-na-yuga и создания на основе этих данных отелей на сайте заказчика. Для его работы интегрировали систему по запуску фоновых задач через Celery.
Также провели большое количество работ с frontend-частью проекта. Несмотря на то что у заказчика уже были готовые шаблоны, во многих аспектах они не удовлетворяли потребностям.
В конечном итоге можно сказать, что большая часть работ коснулась backend-части. Главной задачей было уйти от старой структуры проекта, добавить больше возможностей по настройке контента через админпанель, улучшить производительность и «вылечить» все найденные ошибки. А также, конечно, выполнить все поставленные заказчиком задачи.
Компания «Техника современной съемки» с 2012 года сдает в аренду фото- и видеотехнику, являясь одним из крупнейших сервисов проката Москвы. Перед нами стояли задачи по доработке системы автоматизации и упорядочиванию операций, связанных с обслуживанием клиентов, управлением заказами и оценкой работы персонала:
Следующей задачей было внедрение нового дизайна интернет-магазина аренды, чтобы улучшить пользовательский опыт и увеличить конверсию. Были проведены работы над версткой главной страницы, страниц каталога продукции, товара, а также оформления заказа. Верстка была выполнена валидной, адаптивной и кроссбраузерной и внедрена в текущий магазин на CMS Joomla. Дополнительно были разработаны виджеты популярных товаров и слайдера баннеров.
К нам обратился заказчик для разработки сервиса Socksgate с нуля под ключ по техническому заданию. Это сервис партнерской программы для работы с socks5.
Socksgate-сервис состоит из клиентской и администраторской части, backend, сервера контроля соединений и нескольких дополнительных сервисов проверки соединений socks5, в том числе проверки локации соединения.
Сервис позволяет использовать популярный протокол socks5 при работе через socks-прокси пользователям, которым необходимо по каким-то причинам скрыть реальный IP-адрес или подключиться к сервисам и сайтам с IP-адресом с заранее выбранной локацией.
Работа над проектом заключалась в разработке и реализации:
Клиентской части, администраторской части,backend.
Разработанная и реализованная нами клиентская часть включает в себя:
• доступные для покупки socks5 с отслеживанием доступности в реальном времени;
• информацию по купленным соединениям;
• выбор тарифов для приобретения соединений;
• систему подбора socks по заданным параметрам по стране, городу, ZIP, ZIP-радиусу;
• настройки пользователя.
Разработанная и реализованная администраторская часть включает в себя:
• различную статистику соединений в разбивке, в том числе по странам;
• статистику пользователей, данные по партнерам;
• мониторинг работы всех подсистем сервиса Socksgate;
• управление и настройки подсистем сервиса Socksgate;
• управление и подключение партнеров;
• управление пользователями.
Клиентская и администраторская части реализованы на Vue.js, что сделало страницы легкими и быстро реагирующими на действия пользователей.
Сердцем сервиса Socksgate стал backend, обеспечивающий взаимодействие клиентской и администраторской части, сервисов проверок соединений, сервера соединений и сервиса получения данных от партнеров по доступным соединениям socks5.
Результатом проделанной работы стал продукт, позволяющий партнерам сервиса предоставлять свои доступные соединения socks5 для продажи пользователям сервиса Socksgate.
Сложность сервиса Socksgate стала причиной использования широкого спектра технологий, которые позволили решить все задачи, поставленные заказчиком в техническом задании.
Система управления кандидатами — это программное обеспечение, которое позволяет компаниям эффективно управлять процессом подбора персонала, обеспечивает автоматизацию процессов подбора, улучшение качества кандидатов и сокращение времени на поиск и найм.
Заказчик обратился к нам с задачей разработки фронтенд-части системы, которая состоит из двух проектов: ORC (Operator & Referrer & Company) и AH (Admin & HR Manager). Нам были предоставлены макеты Figma и описание методов API серверной части. В качестве фреймворка был выбран Vue 3.
• разработка максимально понятного пользовательского интерфейса;
• автоматизация процессов подбора персонала;
• создание наиболее удобных решений и эффективных инструментов для сотрудников, которые подбирают персонал;
• повышение эффективности процесса и уменьшение времени при поиске подходящих кандидатов.
Проекты ORC и AH включают разделы и подразделы, предоставляющие инструменты и информацию, которые облегчают и ускоряют работу сотрудника при поиске, собеседовании, тестировании, оценке и найме персонала. Кроме того, система позволяет оценивать работу каждого оператора и создавать новые проекты.
Система ORC представляет собой личный кабинет, который реализует следующие задачи:
• раздел Operator — доступен только пользователям роли Operator;
• раздел Referral — доступен пользователям роли Referral;
• раздел Company — доступен пользователям роли Company.
Личный кабинет оператора состоит из следующих основных функциональных блоков:
• звонки;
• профиль проекта;
• часто задаваемые вопросы и обучающие материалы;
• новости;
• поиск.
Раздел звонков состоит из меню с последними звонками кандидатов, переключаясь по которым можно быстро посмотреть соответствующий профиль.
Также оператор может оставить комментарий любому выбранному звонку.
В основной рабочей области страницы оператору доступна основная информация о кандидате с возможностью ее редактирования, а также просмотра истории редактирования. Из карточки профиля также можно назначить интервью кандидату.
В верхнем подменю также доступны следующие разделы:
• Последние звонки — состоят из списка звонков с выбранным кандидатом и основной информации о звонке, такой как комментарии оператора и менеджера.
• Опросник — состоит из списка ответов кандидата на вопросы менеджера, по результатам которых определяется оценка кандидата.
• Интервью — представляет собой список блоков вопросов, которые заполняет менеджер во время интервью с кандидатом.
После заполнения всех ответов на вопросы строится график с оценкой характеристик кандидата.
• Резюме — позволяет просмотреть резюме кандидата через Google Docs.
• Информация о позиции — информация о компании, куда устраивается кандидат, состоит из общего описания компании, предложения по заработной плате, а также описания вакансии.
Профиль проекта состоит из раздела общей информации, где представлена основная информация о проекте и сотрудниках, а также раздела статистики. В разделе представлена статистика проекта за выбранный период по успешности звонков и интервью.
Является информационным разделом, предназначен для того, чтобы помочь операторам получить ответы на самые распространенные вопросы, включает также список полезных статей.
В верхнем меню доступна кнопка просмотра списка новостей с указанием количества непросмотренных. Список новостей заполняется администратором сайта, при просмотре новости она отмечается просмотренной текущим пользователем.
Поиск
В верхнем меню доступно поле поиска по профилям кандидатов, которое перенаправляет на страницу результатов, где представлен список кандидатов, подходящих под условия поиска с основной информацией и возможностью перехода на страницу профиля.
Раздел содержит список ссылок с возможностью импорта в реестр, а также поиск кандидатов по реестру.
Система AH представляет собой личный кабинет, который реализует следующие задачи:
• раздел Manager — доступен только пользователям роли Manager;
• раздел Admin — доступен пользователям роли Admin.
Раздел менеджера по подбору персонала предоставляет следующие возможности:
• сводная статистика по системе;
• воронки;
• работа с почтой;
• сводная информация по проекту;
• результаты глобального поиска по профилям;
• просмотр профиля.
У менеджера есть возможность работы с несколькими проектами, которые доступны для выбора в шапке сайта. Информация в текущем разделе будет представлена для выбранного проекта.
Сводная статистика по системе — это инструмент, который предоставляет обобщенную информацию о работе системы управления кандидатами. Функциональность сводной статистики может включать следующие элементы:
Сводная информация по конверсии и звонкам — это общая информация о количестве звонков и конверсии в системе. Это количество звонков, которые были сделаны, количество ответов на звонки и количество успешных интервью. Информация позволяет оценить эффективность системы и принять меры для работы операторов.
Сводная информация по операторам — это информация о работе каждого оператора в системе, такая как количество звонков, которые были сделаны каждым оператором, количество ответов на звонки, количество успешных интервью и другие метрики, связанные с работой операторов. Информация позволяет оценить работу каждого оператора.
Сводная информация по опросникам наглядно показывает результаты ответов кандидатов. Количество правильных и неправильных ответов позволяет оценить качество подготовки кандидатов, а также дает возможность, в соответствии с этой статистикой, корректировать качество опросников.
Раздел новостей для операторов — это раздел, который содержит новости и объявления. Например, это может быть информация о новых функциях системы, обновлениях безопасности или других изменениях, которые влияют на работу операторов.
Это инструмент, который позволяет управлять потоком профилей кандидатов через различные этапы жизненного цикла. Воронка представляет собой серию статусов или этапов, в которые может быть переведен профиль кандидата.
Функциональность воронки включает следующие элементы:
Профили, требующие внимания, — это список профилей, которые необходимо обработать в первую очередь. Это новые или существующие кандидаты, которые нуждаются в обновлении или изменении данных. Здесь менеджеры могут просматривать профили, оценивать их потенциал и принимать решение о том, на какой этап должен быть переведен тот или оной профиль.
Профили, идущие по воронке, — это список профилей, которые уже проходят определенный этап. Например, это может быть список профилей, которые находятся в стадии обработки, в стадии ожидания подтверждения или в стадии завершения. В этом списке менеджер должен следить за тем, как происходит продвижение профилей по воронке, и принимать соответствующие меры, чтобы ускорить процесс найма.
Звонки — это список звонков, которые необходимо сделать менеджерам, чтобы уточнить информацию о профиле кандидата. В этом списке менеджер продаж должен отмечать, какие звонки уже были сделаны, а какие нужно сделать в ближайшее время.
Неуспешные регистрации — это список профилей, которые не прошли через воронку и были отклонены. Они сохраняются для дальнейшего анализа и изучения причин неудачи.
Профили, требующие внимания, обычно попадают в первый этап воронки. Этот этап может называться «Новые профили» или «Профили, требующие рассмотрения». Здесь менеджеры могут просматривать профили, оценивать их потенциал и принимать решение о том, каким будет следующий этап для каждого профиля.
Функциональность работы с почтой включает список сообщений, который позволяет просматривать электронные письма и управлять письмами, отправленными из системы. Список может включать сообщения, находящиеся в очереди на отправку, успешно отправленные сообщения и сообщения, которые не удалось отправить по какой-то причине. Это дает менеджерам полный контроль над процессом отправки сообщений и позволяет легко определять и устранять проблемы с доставкой писем.
Сводная информация по проекту включает функциональность, позволяющую просматривать основную информацию по проекту, которая также содержит несколько важных компонентов, таких как:
Список рефералов, включая их реестр вакансий.
Работа с вакансиями на проекте — позволяет создавать, редактировать и управлять вакансиями на проекте. Компонент включает информацию о каждой вакансии: ее название, описание, требования и заработную плату.
Редактирование шаблонов — включает работу с шаблонами писем, звонков и сайта, в том числе их редактирование.
Редактирование опросников — позволяет редактировать опросники, используемые для оценки кандидатов. Включает в себя настраиваемые вопросы, позволяющие менеджерам оценить навыки, знания и опыт кандидатов.
Результаты глобального поиска в целом аналогичны результатам для оператора, но с возможностью добавления звонка и отправления сообщения прямо со страницы результатов.
Этот раздел представляет собой инструменты для более детального анализа кандидата и включает в себя просмотр профиля, последних звонков, резюме, результатов опросника и интервью. Также он содержит нижний функциональный блок, который отвечает за управление аппликантами и включает в себя смену статуса заявки и аппликанта, кроме того, экспорт данных аппликантов, прошедших интервью.
Раздела администратора включает возможности, аналогичные менеджеру, такие как просмотр сводной статистики по системе, результаты глобального поиска по профилям и просмотр профиля. Также есть ряд разделов, которые доступны только администратору системы:
• проекты;
• рефералы;
• пользователи;
• настройки системы.
Администратору системы доступен весь список проектов с возможностью их редактирования и создания новых. По умолчанию отображаются только активные проекты, отсортированные по дате создания, новые проекты отображаются выше. В списке выводится время создания проекта во временной зоне пользователя, имя менеджера, назначенного на проект, имена операторов через запятую и другая информация о проекте.
Процесс создания нового проекта в системе состоит из шести шагов: ввод общей информации о проекте, добавление вакансий, создание учетных записей, добавление сотрудников, выбор шаблонов и подтверждение введенной информации.
Отображаются по умолчанию выбранные активные рефералы с информацией по импортам в свернутом виде. Дополнительная информация разворачивается по нажатию. Слева от карточки отображается ее порядковый номер.
При первом открытии страницы отображаются все активные пользователи системы с возможностью фильтрации по типу пользователя:
• все;
• администраторы;
• менеджеры по подбору персонала;
• операторы;
• рефералы;
• компании.
Список пользователей автоматически обновляется один раз в полторы минуты.
Блок настроек системы включает основные настройки, FAQ, обучающие материалы и шаблоны по умолчанию и позволяет настраивать систему.
В основных настройках можно задать параметры, такие как список федеральных праздников, время отправления писем и звонков. В разделе FAQ администратор задает ответы на наиболее часто задаваемые вопросы, связанные с использованием системы, которые могут помочь пользователям в работе с системой. Аналогично редактируются и обучающие материалы. В разделе шаблонов администратор может менять формы писем, которые можно использовать для автоматической отправки кандидатам.
Новостная витрина – это веб-сайт, предусматривающий определенный контент.
Ротатор – это инструмент, который позволяет чередовать информацию на одном блоке.
Ротатор новостных витрин предоставляет собой проект по арбитражу трафика, суть которого заключается в комплексном подходе к увеличению трафика на сайте и управлению его рекламными кампаниями.
В основе сервиса лежит определенный алгоритм смены рекламных сообщений и новостей, с помощью которого можно добиться наибольшей эффективности рекламной кампании, а, следовательно, и увеличения дохода.
Для удовлетворения требований заказчиков мы осуществляем доработку сервиса.
На первом этапе были изучены и устранены ошибки, касающиеся функционала сайта, улучшен его интерфейс и работа рекламных кампаний в целом.
На следующем этапе, с целью повышения надежности и производительности сервиса, мы осуществили переход на новый хостинг.
Кроме того, были рассмотрены различные предложения хостинг-провайдеров. После этого мы сравнили их на предмет основных характеристик и стоимости. Оценили качество оказываемых услуг и работы техподдержки.
Чтобы сделать управление кампаниями более эффективным, добавили функции массового управления. Это позволяет значительно сэкономить время, так как настройки можно изменять одновременно для нескольких кампаний.
Для упорядочения кампаний по разным параметрам сервис был дополнен функционалом папок, что делает работу с ним намного проще.
Для улучшения работы рекламных кампаний был пересмотрен алгоритм по подсчету рекламных сообщений и новостей.
• учитывает дополнительные параметры;
• повышает качество подбора информации;
• делает работу рекламных кампаний более эффективной.
Для удобства пользования сервисом и его большей привлекательности мы сделали для витрины новый дизайн. Привлекательность сервиса напрямую отражается на эффективности рекламных кампаний. Также мы подготовили верстку нового дизайна и порядок интеграции в сервис.
Есть возможность выбрать дизайн. Для этого следует зайти в административную часть портала.
Далее мы интегрировали сервис с аналитическим трекером для арбитража трафика. При этом внутренняя сервисная аналитика сопоставлялась с аналитикой трекерной. Осуществляли мы это при помощи API-запросов. А с целью расширения функционала провели переход на новый трекер, который самостоятельно отправляет статистику по тому или иному событию.
• появилась возможность изменить трекер, не меняя при этом кода проекта;
• уменьшить нагрузку на сервер;
• улучшить анализ и обработку информации.
Чтобы иметь возможность отслеживать корректность рекламных кампаний, а также чтобы добиться более точной аналитики, мы произвели логирование переходов по внешним ссылкам.
• отследить каждый из переходов (в административной части сайта);
• узнать по нему доход;
• просмотреть статус выплаты.
По мере того как развивался проект, мы решили сделать возможным использование системы для большого количества пользователей, чтобы последние могли использовать ее и получать прибыль.
• мы изменили хранение пользователей в системе;
• перенесли сведения о пользователях в специальную базу, чтобы обеспечить их безопасность.
Теперь администратор может управлять пользователями:
• создавать;
• удалять;
• редактировать.
• просматривать статистику;
• настраивать ссылки для рекламных кампаний;
• совершать иные действия в зависимости от роли.
Редактор — управляет контентом и обеспечивает его качество. В частности, может создавать новости, обновлять их, если они устарели, осуществлять управление рекламой.
Финансист — производит выплаты байерам по доходам.
Байер — осуществляет настройку своих кампаний, отслеживает статистику каждой из них.
Недавно к нам обратился подрядчик itway.ru и передал подряд на доработку портала юридических услуг - ILEGG.ru с задачей улучшить их сайт и расширить существующий функционал.
Платформа ILEGG.ru позволяет получить быстрые юридические консультации физическим лицам и представителям различного бизнеса. На сайте представлено более 250 юристов, работающих в разных областях права. Все консультации предоставляются онлайн.
На сайте ILEGG.ru много юристов и постоянных посетителей. Команде агрегатора потребовалось модернизировать сайт, чтобы специалисты смогли с комфортом вести коммерческую деятельность, а клиенты – удаленно оплачивать услуги. С этими запросами они обратились к нам, в Softorium.
Вот задачи, которые стояли перед нами:
Главная особенность проекта состояла в том, что в модернизации нуждались только некоторые разделы агрегатора юридических услуг. Нам было важно, чтобы реализованные нами решения максимально повысили юзабилити сайта, сделав его комфортным как для юристов, так и для клиентов, нуждающихся в помощи профильного специалиста.
Мы добавили на сайт возможность приема и вывода финансовых активов с автоматическим ведением списка операций. В процессе потребовалось немного изменить функционал создания заявки и добавить туда платные функции.
Главной задачей для наших специалистов стало создание безопасного и надежного сервиса, способного быстро обрабатывать денежные транзакции.
Форма создания платных заявок была встроена в уже имеющуюся структуру юридического агрегатора с учетом существующей архитектуры сайта.
Результатом работы стала понятная система ввода-вывода денег и создания платных заявок с различными дополнительными опциями.
В агрегаторе начала действовать рекомендательная система по подбору специалистов и юридических компаний. Более подходящие кандидаты перемещаются в начало списка. Теперь клиенты смогут быстрее найти квалифицированного юриста для получения помощи по выбранному направлению.
Мы создали 3 уникальные формы профиля пользователя – для юристов, для клиентов и для юридических компаний. В ходе работы был произведен тщательный анализ посетителей агрегатора и выделены главные особенности каждой группы.
Реализован в виде стандартной пользовательской анкеты. Эта группа посетителей сайта не обладает расширенными правами и доступами, так как единственная цель клиента – получение качественной юридической помощи.
При регистрации в качестве юриста пользователь должен указать в профиле информацию, подтверждающую его квалификацию. Помимо фамилии, имени и отчества, а также опыта работы, в анкете содержатся:
Для верификации требуется загрузить скан паспорта. Нами также была реализована возможность привязки профиля специалиста к социальным сетям.
Заполнение профиля юридической компании осуществляется по аналогии с профилем частного юриста. Мы добавили в анкету блок «Реквизиты». Информация туда добавляется автоматически из открытых источников после ввода наименования организации.
Разместили на главной странице информацию о том, как работает агрегатор и как рассчитывается стоимость услуг юристов. Существующие информационные блоки были отредактированы.
Компания «Техноробот» занимается автоматизацией производственных процессов на базе промышленных роботов FANUC и KUKA.
Клиенты компании просили немного доработать программу составления раскроев для машины резки профиля. Программное обеспечение «Раскрои» позволяет проектировать детали и формирует файл с параметрами деталей в раскроях, который отправляется на машины линии резки профиля. Их программное обеспечение берет из файла данные для резки.
Мы доработали интерфейс и функциональность программы для удобства пользователей. Теперь в программе можно делать масштабирование при редактировании 2D-отображения детали и отправлять на станок несколько раскроев одновременно.
Провели отладку функциональности копирования и удаления резов, также добавили дополнительные параметры резов и доработали редактор деталей.
HVALA предоставляет своим пользователям услуги Wi-Fi, а также сервис авторизации с аналитикой и маркетинговыми инструментами.
Клиентами сервиса являются кафе, рестораны, гостиницы, предоставляющие своим гостям доступ к интернету.
HVALA позволяет получить отчеты о посетителях и предоставляет маркетинговые инструменты: информирование об акциях, опросы, сбор отзывов, и другое. Отчеты о гостях содержат информацию о поле, возрасте, MAC-адресе, количестве посещений, последнем визите, дне рождения гостей и тд. С помощью личного кабинета можно настроить таргетированную рекламу в рекламных сетях.
К сети HVALA подключено более 1000 заведений на территории России, Казахстана и Узбекистана.
Специалисты Softorium выполнили интеграцию с новым дизайном админки, доработали способы авторизации, систему отчетов.
Перед нами стояла задача создания маркетплейса одежды зарубежных поставщиков на базе решения от 1С‑Битрикс. В ходе работ была проведена адаптации ядра Битрикс под требования заказчика: доработана корзина, карточка товара, создан компонент распродажи. Разработаны модули для интеграций с платежной системой CONTACT PAY, сервисом доставки Почты России, RetailCRM, сервисом e‑mail маркетинга Mailganer.
Кроме того, был разработан модуль синхронизации каталога с сайтом поставщика, для ежедневной актуализации каталога с 75 000+ позиций. Написан модуль перевода, интегрированный с модулем импорта: на входе файл на языке поставщика, на выходе ─ каталог товаров на русском языке.
Был проведен аудит хостинга для выбора оптимального решения по соотношению производительности и стоимости.
Сервис предоставляет собой информационные материалы и отчеты о продажах преимущественно для зарубежной аудитории. Наша команда реализовала лендинг в связке с серверной частью, осуществляющей обработку материалов и заказов. Разработан интерфейс выбора материалов, языка, оплаты заказов и получения материалов в формате CSV. Перевод отчетов осуществляется на 7 языках, поддерживаются отчеты до 7 миллионов строк.
Независимый коммерческий проект tentrade.kz - универсальная электронная торговая площадка (ЭТП) для организации закупочной и снабженческой деятельности на территории Республики Казахстан и СНГ. В рамках сотрудничества была выполнена доработка системы аукционных торгов, оптимизирован поиск торгов с помощью различных фильтров и сортировки, проведена интеграция ресурсов торговой площадки в сайт-партнёр.
В мобильном приложении литературного портала представлены шедевры казахской литературы, современные литературно-просветительские произведения, новые книги на казахском языке. Вы можете читать и слушать электронные и аудиокниги онлайн и офлайн.
Был доработан интерфейс и функционал приложения, адаптирован дизайн под разные форматы дисплеев, улучшена логика навигации по экранам, добавлена возможность поместить авторов на личную виртуальную полку, исправлены ошибки. Приложение переведено на свежую версию React Native.
Заказчик пришел к нам с идеей и коротким описанием желаемого функционала. Было предложено начать разработку с MVP Android приложения. Применение agile-подхода оправдало себя, так как в ходе работ заказчик несколько раз менял направление разработки. Для разработки серверной части использовался Python, Django; мобильный клиент разрабатывался на Kotlin. Позже началась разработка iOS-приложения (Swift). Мобильное приложение позволяет размещать объявления о совместной покупке, предлагать товары и услуги для закупки в складчину, получать пуш-уведомления, обмениваться сообщениями в чатах.
Заказчик – оптовый продавец автомобильных деталей и узлов. Для поддержания актуальной стоимости потребовалось автоматизировать сравнение цен с конкурентами. В ходе разработки парсера был выполнен механизм авторизации пользователя на сайте. Парсинг выполняется только в случае успешной авторизации пользователя, так как неавторизованному пользователю цены на сайте недоступны. После авторизации пользователь может создать новую сессию парсинга, загрузив файл формата xlsx со списком интересующих артикулов или брендов и выбрав парсер из списка доступных парсеров. Для каждой сессии парсинга создается отдельная фоновая задача в очереди задач. После завершения задачи парсинга создается результирующий файл в формате xlsx для каждого парсера в сессии парсинга. Входящий и результирующие файлы для сессии хранятся на сервере и могут быть скачаны пользователем в любой момент.
Редактор позволяет покупателям самостоятельно сконструировать узоры из плитки и рассчитать количество и стоимость материалов. Наши разработчики участвовали в доработке функционала визуализации. Добавили возможность приблизить, отдалить, переместить камеру относительно картинки. Добавлен функционал комплектов. Были решены проблемы коллизий размеров плитки при составлении узоров.
Интеграции платежной системы в игру «Симулятор Генерального Директора» SGD Игра представляет собой глубоко модернизированный алгоритм - квест делового района Москвы у метро Белорусская, дающий полное погружение в мир предпринимателя-экспортера. Игроку предстоит пройти путь от открытия валютных счетов до поставки своей продукции зарубежным покупателям. Квест составлен максимально приближенным к реалиям жизни. Все персонажи: таможенный представитель, юристы, сотрудники юридического отдела банка, иные «случайные» люди - взяты из делопроизводственной жизни.
В ходе совместной работы с разработчиками игры была выполнена интеграция платежной системы Робокасса и произведены доработки основного сайта с доступом в игру.
Рост бизнеса сложно представить без развития систем автоматизации. FORA – одна из ведущих компаний на рынке Казахстана в сфере продаж цифровой техники. Ее история началась в 1997 с небольшого офиса в городе Актобе. Сейчас компания работает в государственных закупках, а также в сфере оптовых и розничных продаж, в том числе онлайн.
FORA использует программный комплекс автоматизации учёта рабочего времени сотрудников, включающий мобильное и веб- приложения. Регистрация рабочего времени осуществляется путём сканирования, сформированного в системе QR-кода: открытие/закрытие дня. Система собирает информацию по каждому сотруднику и предоставляет администратору возможность просмотра статистики и формирования отчетов.
Развитие сети магазинов FORA потребовало модернизации системы и доработки ее функционала. Мобильное приложение, выполненное на Qt, было полностью переписано на Kotlin Multiplatform для упрощения его сопровождения и обслуживания. Это также помогло избавиться от старой реализации Qt QML и улучшить совместимость с новыми версиями NDK. Использование мультиплатформенного решения сократило время на написание кода для мобильных приложений Android и iOS. Большая часть логики вынесена в общий модуль, за исключением макетов экранов и функционала распознавания QR-кода.
В ходе доработки системы была добавлена функция получения геолокации сотрудника при регистрации. Это позволило на основе геоданных привязывать сотрудника к организации профильного подразделения объекта заказчика. Также был доработан функционал сервера, повысивший безопасность передаваемых данных и сокративший трафик между сервером и клиентом.
Для интеграции ERP-системы ProSklad с ресторанной системой учета iiko планировалось использовать плагин Resto.Front.Api.WebServer. Но оказалось, что плагин не предоставляет информацию о типе платежа: нельзя отличить оплату картой, наличными или смешанным образом. Нашими специалистами был проведен анализ плагина iiko и разработана его копия, но с возможностью передачи данных о типе оплаты.
От владельцев ресторанного бизнеса, являющихся пользователями системы складского учета, поступил запрос на интеграцию с системой R-Keeper. Заказчик обратился к нам с просьбой разработки связующего программного обеспечения для отправления информации о номенклатуре и продажах из программы R-Keeper в систему складского учета. После совершения продажи ПО получает фискальный чек и отправляет его в R-Keeper для печати.
При использовании систем управления часто возникает потребность в отображении аналитики в виде, не предусмотренном коробочной версией.
Существующие средства визуализации в YouTrack не удовлетворяли заказчика - IT службу крупнейшего ювелирного производителя России.
Для YouTrack были разработаны виджеты диаграмм с настраиваемой визуализацией, фильтрацией данных, подготовленных по предоставленным заказчиком алгоритмам.
Система Relays предоставляет возможность производителям, ретейлерам и рекламным агентствам генерировать настраиваемые QR-коды к товарам и отслеживать эффективность их использования. В личном кабинете системы возможно загрузить товары, выбрать форму и цвет кода, редактировать информацию, которая отображается при переходе по этому коду, отслеживать статистику переходов.
Заказчик обратился с незавершенным проектом. Нами была закончена разработка CRM-системы, подключен модуль перевода информации о товаре, доработан личный кабинет пользователя, разработан визард для облегчения освоения принципов работы пользователя в системе, доработана административная панель сайта, проведена отладка различных частей системы.
Компания ЕвразианТек ─ эксперт по снабжению, оказывает услуги по мониторингу рынка и подбору потенциальных поставщиков для энергетических и горно-металлургических предприятий Республики Казахстан.
Перед нами стояла задача реализовать передачу большого числа данных между сервисом заказчика и государственным порталом «Единое окно закупок». Для этого было реализовано получение данных с сервера заказчика, их структуризация и передача через API веб-сервис; составлено описание протокола взаимодействия.
ERP-система ProSklad соответствует требованиям трехкомпонентной интегрированной системы (далее ТИС). ProSklad работает как веб-приложение (SPA на Vue.js). Одним из требований к ТИС является интеграция с POS-терминалами различных банков. Под интеграцией подразумевается процесс, когда пользователь инициирует оплату в веб-приложении, а терминал автоматически подхватывает сумму и готов принять платеж.
Разработка desktop-приложения заключалась в проектировании и разработке модуля, связывающего POS-терминалы различных банков и ERP-систему. Разработчикам ProSklad больше не нужно знать об особенностях работы различных POS-терминалов, их разнородных API и библиотек. Модуль позволят использовать единый интерфейс для работы с POS-терминалами. Поддержка каждого нового банка или терминала осуществляется в самом модуле без необходимости вносить изменения в ERP-систему ProSklad. Таким образом, разработка desktop-приложения позволила привлечь новых потребителей и расширить список банков-эквайеров, подключение которых ранее было затруднительно.
Prosklad – ведущее решение по учету товаров в Казахстане. Мы провели работы по интеграции электронных весов с системой. Ранее пользователи при каждом изменении в товарах формировали Excel-файл и загружали его в товарные весы сети магазинов вручную. Требовалось спроектировать и провести автоматизацию процесса для весов марок Rongta RLS 1000/1100, Масса-К RP и ШТРИХ-ПРИНТ M. Была разработана служба, которая выступает в качестве сокет-сервера, принимает команды на обновление товаров от ERP-системы и отправляет их в весы через низкоуровневое API.
К нам обратился руководитель Центра охраны труда и промышленной безопасности. Требовался сайт для размещения информационных материалов и проведения онлайн-тестирования слушателей курсов. Необходимо было предложить простое и недорогое решение, администрировать которое смогут работники заказчика без привлечения разработчиков. Был реализован сайт, для проведения тестирования, интегрированы Google-таблицы, проведено обучение сотрудника заказчика.
EurasianTech – крупнейшая тендерная площадка Казахстана. Закупщик при публикации информации о закупке подписывает документацию электронной цифровой подписью. Перед нами стояла задача конвертации всех приложений в формат PDF и реализация возможности размещения на каждой странице документов информации о действующей ЭЦП и QR-кода для возможности проверки действительности подписи.
Digital-агентство СайтАктив занимается продвижением с 2006 года. Для своей работы агентство использует внутреннюю CRM, с которой интегрированы Яндекс.Метрика, Яндекс.Вебмастер, Яндекс.Директ, Google Ads. Наша задача заключалась в доработке этого инструмента. Заново выполнена интеграция с Google Ads, доработана система генерации отчетов о результатах продвижения сайтов клиентов. Проводится поддержка и доработка сервиса по запросам заказчика.
Заказчик – поставщик и арендодатель оборудования для аттракционов. Перед нами была поставлена задача разработки умного поиска по сайту https://www.art-active.ru/. Также требовалось разработать парсинг с сайта по его фиду - потоку контента, который автоматически подгружается блоками на веб-странице или в приложении.
Фид представляет из себя XML-файл, содержащий всю информацию, о товарах, отображающуюся на сайте: наименование, цена, категория и прочее. Эти данные определяют объекты, хранимые в базе данных.
Был реализован поиск с учетом морфологии, добавлена необходимая приоритетность поиска, скорректировано разбиение фразы на токены, переработан поиск по ключевым словам. Токены представляют из себя массив слов из которых состоит запрос. Например, токенизатор пробелов, который используется по стандарту, разделит текст на токены, когда увидит пробел. Текст «Быстрая коричневая лиса!» Преобразуется в [«Быстро», «коричневая», «лиса!»].
В работе использована поисковая система Elasticsearch, которая работает с отдельной базой данных. Elasticsearch предоставляет следующие возможности:
Поиск происходит по следующему алгоритму:
Поиск, по ключевым словам, реализован с помощью анализатора «keyword», который подразумевает полное вхождение запроса в результат, учитывающий регистр букв, пробелы и специальные знаки.
Учет морфологии подразумевает разбиение запроса по таким частям как предлоги, частицы и др. С помощью морфологии запрос разбивается на токены, представляющие из себя основу слова, например, «отвертка» после работы анализатора будет представлять из себя «отвертк».
В ходе работы на проекте был разработан и настроен парсинг, который сначала обращается к сайту заказчика и получает фид в виде XML. Далее данные добавляются или обновляются в базе данных сервера заказчика для актуального содержания в результатах поиска. Парсинг работает по указанному времени раз в день или при необходимости запускается вручную заказчиком.
Заказчику были предоставлены консультации по тонкостям работы и настройке поиска.
Кроссплатформенное мобильное приложение позволяет зарегистрированным пользователям хранить памятные даты своих контактов. Каждый пользователь может составить Wish-лист с желаемыми подарками, который могут видеть его друзья. Нашей командой проведена отладка приложения перед публикацией в магазины. В рамках развития сервиса были проведены работы на серверной и клиентской части, значительно доработан функционал, в том числе по сценарию выбора подарков через приложение.
Инжиниринговая компания Экодар ─ один из лидеров по производству, установке и обслуживанию индивидуальных и индустриальных систем очистки воды. Кроссплатформенное мобильное приложение дублирует функционал корпоративного сайта, позволяет выбрать и заказать товар, получить информацию по характеристикам, обслуживанию и акциям. Удобный интерфейс помогает построить маршрут до ближайших магазинов. В рамках сотрудничества существенно доработали и отладили приложение, исправили найденные ошибки и недочеты.
Проект SwimTraining предназначен для людей, которые занимаются плаванием или только планируют научиться плавать. Система состоит из интернет‑магазина и мобильного приложения, в котором размещены обучающие материалы по плаванию.
Когда Visa и Mastercard ушли из России, расчеты картами этих систем в мобильном приложении стали невозможны, как и оплата через Google Play. С этой проблемой заказчик обратился к нам. Наша команда спроектировала и реализовала решение по обеспечению возможности продления или покупки новой подписки в мобильном приложении для российских пользователей. При этом сохранены все существующие способы оплаты для пользователей из других стран.