В процессе разработки и добавления в продукт новых интеграций архитектура неоднократно пересматривалась. Текущее архитектурное решение — Single Page Application, где бэкенд представляет собой несколько микросервисов и реализует всю бизнес-логику и интеграции со сторонними системами.
Для его реализации использовали фреймворк Svelte, одно из ключевых преимуществ которого — маленький размер бандла и высокая отзывчивость интерфейса. Так как на момент реализации фреймворк еще не успел обрасти экосистемой, при работе над многими задачами мы были первопроходцами и не могли использовать готовые решения для ряда типовых задач (как это было бы в случае, например, с React). Например, собственная реализация была написана для канбан-доски.
Реализован на PHP-фреймворке Laravel 7 (актуальная версия на момент старта разработки). В качестве административной панели используется пакет Backpack, который позволил существенно увеличить скорость разработки в силу того, что имеет в себе большое количество готового функционала (например, ролевую модель).
В качестве брокера очередей используется PostgreSQL, где обрабатывается 4 независимые очереди под разные задачи. В качестве базы данных используется PostgreSQL.
Весь важный для бизнеса функционал покрыт автотестами на PHPUnit.
Для быстрой реализации интерфейсов используется готовый Material Design UI-кит для фреймворка Svelte. Все собранные на основе UI-кита прототипы передаются на разработку, что позволяет сосредоточиться на технической составляющей проекта, минимизируя затраты ресурсов на дизайн.
Специально написанные алгоритмы позволяют рассчитывать себестоимость часа разработки и позволяют детально видеть, сколько часов было отгружено в разрезе дня, недели и месяца.
В системе можно оперативно считать и визуализировать в виде графиков и таблиц основные метрики производства:
Данные можно получить в рамках текущего месяца, года или произвольного периода. Также можно видеть детальную информацию в разрезе определенного проекта или этапа.
Каждый проект разбивается на этапы, где есть данные о его статусе, формате, бюджетах, сроках, сделанных и планируемых отгрузках часов разработки. Отчетность можно формировать как по каждому отдельному этапу, так и в целом по проекту.
В разрезе каждого проекта и этапа осуществляется детальный расчет рентабельности: исходя из выручки, стоимости производства, постоянных издержек компании.
Сервис YO! интегрирован с системой управленческого учета ПланФакт в части взаиморасчетов с клиентами и сотрудниками. С ПланФактом синхронизируется информация о текущих проектах, выставленных счетах, проведенных реализациях, суммах поступления и сроках оплаты. Благодаря этому корректно строятся P&L по кассовому методу и методу начислений.
Система автоматизирует работу с первичными документами: все счета и акты привязаны к конкретным проектам, этапам и клиентам, что позволяет отслеживать их статусы и синхронизировать между учетными системами все их обновления.
При изменении статусов первичных документов ответственному за соответствующий проект приходит уведомление.
Сервис позволяет структурировать информацию по сотрудникам: должность, даты приема и увольнения, данные о зарплате и ее изменениях.
Сервис позволяет фиксировать отсутствия сотрудников (больничные/отпуска) и не забывать о запланированных отпусках. Данные об отсутствиях учитываются при расчете показателей эффективности производства.
Полностью автоматизировано согласование зарплатных реестров. При формировании нового реестра сотрудник получает уведомление и может видеть детали расчета, переписываться с бухгалтерией и подтверждать реестры в интерфейсе платформы.
Реализована работа с внутренней системой лояльности. В рамках компании существует внутренняя валюта — «коины» — и платформа автоматизирует работу с ней со стороны отдела HR и со стороны сотрудников: текущий баланс, история начислений, каталог и заявки на расходование.
Доступ к различным разделам сервиса предоставляется исходя из роли пользователя, при этом ряд разделов доступен всем пользователям. Каждому сотруднику доступна информация об отсутствиях, доступном балансе внутренней валюты, своих зарплатных реестрах и данные о рабочем времени.
В специальном разделе есть информация о товарах, которые можно получить за корпоративную валюту.
Сервис интегрирован со следующими системами:
Теперь в компании есть единый инструмент, который предоставляет всегда актуальные данные от деятельности компании: как о финансах, так и об показателях производства.
Интеграция систем между собой помогла оперативно видеть отчеты с текущими показателями, а увеличение количества сотрудников и объема данных не приводит к увеличению затрат на администрирование работы с этими отчетами. Скорость сбора данных и построения отчетов позволяет принимать управленческие решения, основанные на актуальных данных.
Срок составления и согласования с сотрудниками зарплатных реестров сократился до одного рабочего дня, а также снизилось количество ошибок в расчетах.
Благодаря детальной аналитике рентабельности по проектам своевременно выявляются убыточные проекты.
«Легко сформировать первичные документы по клиентам компании, а также оперативно получить информацию о текущих проектах и выставленных счетах, суммах поступления и сроках оплаты.Можно сразу загрузить печатные формы документов на фирменном бланке организации с логотипом компании. Удобно формировать отчеты по рабочему времени, отсутствиям и выплатам. Также плюс в том, что все суммы можно отредактировать в системе, если, например, предполагаются отпуска, больничные и т. д.»
Елена, главный бухгалтер Spectr
«Функционал позволяет мне видеть всегда актуальные данные о показателях Realization Rate и Utilization Rate в системе, и в случае обнаружения проблем локализовывать их до конкретного проекта или человека. Также очень удобно рассчитывать премии для функциональных руководителей, основанные на объемах отгрузок.»
Олег Казаков, Технический директор Spectr