С чего начать корпоративное веб-приложение? С одного процесса, который сегодня ведётся в таблицах и переписке и от которого страдают конкретные люди. Затем записываются роли (кто что видит и делает), источники данных и способ входа. Только после этого определяется первая версия и пилотная группа, на которой приложение проверяют до запуска для всех.

Такой порядок нужен потому, что корпоративное приложение отличается от сайта не интерфейсом, а средой: вход через каталог компании, права по подразделениям, журнал действий, размещение внутри контура, обмен с 1С. Эти требования выясняются заранее, иначе всплывают на приёмке. Услуга описана на странице «Разработка корпоративных веб-приложений», здесь только порядок первых шагов.

Коротко. Выберите один процесс, у которого есть боль и владелец. Запишите роли и источники данных, решите про вход и размещение. Первая версия закрывает один маршрут от начала до конца, остальное откладывается. Запускайте на пилотной группе и назначайте дату отказа от старого способа.

Шаг 1. Выберите один процесс

Самая частая ошибка начала: взять «все внутренние процессы» и пытаться сделать единую систему. Она не запускается никогда, потому что у каждого подразделения свои правила, а общего владельца нет. Берите один процесс и проверьте его по критериям:

КритерийХороший признакПлохой признакВопрос владельцу
БольЗаявки теряются, сроки срываются, статус неизвестен, а люди тратят время на переписку«Хочется порядка» без конкретных потерьЧто случилось за последний месяц из-за того, что процесс ведётся так
ВладелецЕсть человек, который отвечает за результат процесса и готов решать спорные вопросыПроцесс «общий», решения откладываются на совещаниеКто скажет, как правильно, если два подразделения не согласны
ПовторяемостьПроцесс повторяется каждый день или неделю, маршрут в целом одинаковКаждый случай особенный и решается руководителемСколько таких случаев в неделю и сколько из них типовых
УчастникиКруг людей известен и ограничен: одно-два подразделения для пилотаУчаствует вся компания, и неизвестно, кто именноНазовите людей, которые будут работать в приложении в первую неделю
ДанныеПонятно, откуда они берутся: из учёта, из справочника или вводятся впервыеДанные разбросаны по файлам, и нет человека, который знает, какой из них правильныйГде лежит эталонный справочник, который можно взять за основу

Если по двум критериям из пяти ответ плохой, процесс лучше сначала упорядочить организационно. Приложение закрепит порядок, но не создаст его: автоматизация беспорядка даёт быстрый беспорядок.

Шаг 2. Опишите людей и права

Приложение обслуживает не «пользователей вообще», а конкретные роли. Для каждой записывается, что человек видит, что делает и как у него отзывается доступ. Это короткая таблица, но она определяет объём работы сильнее, чем число экранов.

РольЧто видитЧто может делатьЧто не должна
ИнициаторСвои заявки и их статусыСоздать заявку, добавить вложение, отозвать до согласованияВидеть заявки коллег и менять заявку после согласования
СогласующийЗаявки своего подразделения, ждущие решенияСогласовать, вернуть с комментарием, передать заместителюСогласовывать собственные заявки
ИсполнительОчередь принятых к исполнению заявокВзять в работу, изменить статус, приложить результатМенять маршрут и состав согласующих
Администратор приложенияСправочники, права, журналДобавить подразделение, назначить замещающего, выгрузить журналМенять содержимое заявок в обход журнала

Вокруг таблицы решаются четыре вопроса, которые чаще всего забывают.

  • Замещение. Согласующий в отпуске, и заявка висит. Замещение настраивается в приложении по датам, а решения замещающего подписаны его именем.
  • Отзыв доступа. Права привязаны к должности и подразделению, а не выданы навсегда. Когда человек переходит в другой отдел или увольняется, доступ меняется сам, а не по заявке в ИТ.
  • Исключения. Если маршрут в реальности регулярно ломается одним и тем же способом, это записывается как правило, а не ловится руками администратора.
  • Проверка на сервере. Права проверяются на каждый запрос к серверу, а не скрытием кнопок. Скрытая кнопка не запрещает действие, если запрос можно отправить напрямую.

Шаг 3. Решите, откуда данные и как входит сотрудник

Здесь принимаются два решения, которые труднее всего менять потом.

Откуда берутся данные

Для каждого поля записывается источник и хозяин. Номенклатура, контрагенты и остатки обычно остаются в 1С и приходят в приложение копией. Оргструктура и состав подразделений берутся из каталога. Статус заявки, комментарии и решения ведёт само приложение. Если поле можно править в двух местах, оно рано или поздно разойдётся, и пользователи перестанут верить обоим источникам. Способы обмена с 1С разобраны в статье «Проектирование API для интеграций», а общая картина обмена — на странице интеграции 1С.

Как сотрудник входит

ВариантКогда подходитЧто платитеНа что смотреть
Вход через каталог (Active Directory, LDAP)В компании уже есть каталог, а приложение стоит внутри сетиПодключение к каталогу и сопоставление групп с ролямиЧто будет, если каталог недоступен, и кто управляет группами
Единый вход (SSO)Несколько приложений, нужна общая точка входа и политика паролейРазвёртывание и поддержка сервера входа или подключение к существующемуОдин отказ сервера входа останавливает все приложения
Свои учётные записиКаталога нет или приложением пользуются внешние людиХранение паролей, восстановление доступа, двухфакторный входОтзыв доступа остаётся ручным: его нужно регламентировать

Если каталога нет или он меняется, смотрите страницы «SSO и MFA для корпоративных систем» и «Замена Active Directory на Linux». Сравнение подходов к входу — в статье «SSO и MFA: что выбрать».

Шаг 4. Выберите, где будет жить приложение

Размещение влияет на цену и сроки больше, чем кажется. Вопросы, на которые нужен ответ до разработки:

  • Где работает. На вашем сервере, у выбранного вами хостера или в облаке, которое одобрила служба безопасности. Если данные относятся к ограниченному доступу, внешние облачные сервисы часто не подходят по требованиям заказчика. Персональные данные граждан России обычно должны храниться на серверах в России. Общее сравнение вариантов — в статье «On-premise или облако».
  • Нужен ли доступ извне. Работа только из корпоративной сети проще и безопаснее, а доступ из дома или с выезда добавляет защищённое подключение и требования к устройствам.
  • Кто ставит обновления. Серверу нужны обновления системы и зависимостей. Если за него отвечает ваш ИТ-отдел, договоритесь об окне. Если никто, это надо поручить подрядчику в сопровождении.
  • Копии и восстановление. Копия, из которой ни разу не восстанавливались, не считается. Проверку восстановления записывают в регламент.
  • Тестовый стенд. Должен повторять боевой, иначе выкладка превращается в эксперимент на живых пользователях.

Если в приложении будут персональные данные сотрудников, юридические вопросы (согласия, статус оператора, документы) решает юрист заказчика. Мы даём технические меры: шифрование, права, журнал.

Шаг 5. Определите первую версию и что откладывается

Первая версия закрывает один маршрут от начала до конца на реальных данных. Всё, без чего этот маршрут работает, откладывается. Работает правило: если пилотная группа может обойтись без функции, её нет в первой версии.

Часть приложенияВходит в первую версиюОткладываемКогда возвращаемся
ЗаявкиОдин тип заявки, поля, вложения, статусыКонструктор типов заявок, настраиваемые поляПоявился второй процесс с похожим маршрутом
МаршрутФиксированный маршрут по подразделениям, замещение по датамСложные условия («если сумма больше порога и категория X»)Исключения повторяются и их можно описать правилом
УведомленияПисьмо о новой задаче и о просрочкеМессенджеры, настройки уведомлений по пользователямСотрудники жалуются, что не видят задачи
ОтчётыСписок заявок с фильтрами и выгрузка в файлПанели показателей, сводные отчёты из нескольких системРуководитель регулярно собирает отчёт руками
ИнтеграцииСправочники из учёта копией, вход через каталогЗапись результата обратно в 1С, обмен с документооборотомРучной перенос результата стал занимать заметное время
ПраваТри-четыре роли, подразделения из каталогаПрава на уровне отдельных полей и документовПоявилась задача, где часть данных нельзя показывать части участников

Оба списка подписываются до начала разработки. Новая функция оценивается отдельно, а не добавляется молча: так работает приёмка, и так сохраняется бюджет. Подробнее про ограничение объёма — в статье «Как составить техническое задание на разработку».

Шаг 6. Запустите пилотную группу и назначьте дату отказа от старого

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

  1. Критерии приёмки пишутся заранее. Заявка проходит весь маршрут; из-под каждой роли недоступно чужое; доступ закрывается при отключении учётной записи; выгрузка совпадает с учётом на выборке.
  2. Обучение короткое. Двадцать минут и страница инструкции для каждой роли. Если приложение нельзя объяснить за двадцать минут, интерфейс надо упрощать, а не обучение удлинять.
  3. Журнал читается каждую неделю. Где пользователи останавливаются, какие поля оставляют пустыми, какие действия повторяют. Это дешевле интервью и точнее.
  4. Старый способ отключается по дате. Пока рядом живут таблица и почта, часть людей продолжит ими пользоваться. Дату согласует руководитель подразделения, а если параллельная работа неизбежна, определите, какая система главная.
  5. Правки до расширения. Остальные подразделения подключаются после исправлений по итогам пилота, а не вместе с ними.

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

Типичные ошибки при старте

Ошибки повторяются от проекта к проекту, поэтому их стоит проверить до заказа.

ОшибкаК чему приводитКак избежать
Начали с интерфейсаЭкраны утверждены, а выяснилось, что нужные данные недоступны или права устроены иначеСначала роли и источники данных, потом макеты интерфейса
Описали процесс «как должно быть»Приложение не совпадает с реальной работой, и люди обходят егоЗаписать процесс «как есть» со слов исполнителей, а не из приказа
Согласовали только с руководителемПользователи узнали о приложении в день запускаПоказать макеты интерфейса тем, кто будет работать, до разработки
Пытаются заменить всё сразуБюджет и сроки растут, запуск откладываетсяОдин маршрут, одна группа, расширение после пилота
Не назначили владельцаПриложение развивается рывками или не развивается совсемОдин человек со стороны заказчика принимает решения и отвечает за результат
Забыли про сопровождениеПосле запуска сервер не обновляется, копии не проверяются, обращения идут к авторуЗаранее решить, кто отвечает за мониторинг, обновления и обращения

Когда своё приложение не нужно

Иногда дешевле не писать приложение. Три случая:

  • Процесс типовой. Учёт клиентов, обращения, документооборот: существует много готовых систем. Если компания готова подстроиться под них, начните с готового решения. Как сравнивать по стоимости владения, описано в статье «Коробочное ПО или заказная разработка».
  • Участников мало, процесс простой. Если заявок несколько в неделю и ими занимается один человек, таблица с общим доступом и правилами обойдётся дешевле.
  • Процесс не договорён. Если подразделения не согласны, как работать, приложение только закрепит спор. Сначала решение владельца, потом разработка.

Если приложение нужно клиентам или партнёрам, а не сотрудникам, это другая задача: личный кабинет или B2B-портал. Если речь об учёте объектов и договоров, см. CRM на заказ.

Что делаем мы и с чего начать

Начинаем с обследования: 200 000 ₽ и 2–3 недели за одно приложение и одну-две системы, 350 000 ₽ и 3–4 недели, если приложение связано с несколькими системами. На выходе маршрут процесса «как есть», таблица ролей, таблица источников данных, решение о входе и размещении, список «входит в первую версию / откладываем» и вилка бюджета. Стоимость вычитается из первого этапа, если продолжаете с нами, а документом можно пользоваться и без нас.

Дальше, если нужно, лёгкий пилот (150 000–400 000 ₽, 2–8 недель) или тяжёлый (400 000–1 200 000 ₽, 2–3 месяца), затем вывод в эксплуатацию от 1 500 000 ₽ этапами по 300 000–700 000 ₽, и на любой ступени можно остановиться. Мы делаем одно приложение вокруг одного процесса, а не внедряем систему целиком, не делаем мобильные приложения и не дежурим круглосуточно. Исходники лежат в вашем репозитории с первого коммита. Все цены и сроки — на странице «Тарифы», описание услуги — на странице «Разработка корпоративных веб-приложений».

Частые вопросы

С чего начать разработку корпоративного веб-приложения?

С выбора одного процесса, у которого есть конкретная боль и владелец, и с описания ролей: кто что видит и делает. Затем решаются вопросы данных, входа и размещения, и только после этого определяется первая версия. Макеты интерфейса и технологии идут последними.

Сколько стоит разработка корпоративного приложения?

Точная цена называется после обследования: 200 000 ₽ за одно приложение и одну-две системы, 350 000 ₽ при нескольких системах. Простое приложение укладывается в лёгкий пилот (150 000–400 000 ₽), с ролями и интеграциями — в тяжёлый (400 000–1 200 000 ₽). Вывод в эксплуатацию начинается от 1 500 000 ₽.

Сколько времени занимает запуск?

Обследование занимает 2–3 недели, разработка простого приложения — от четырёх недель, затем проверка и пилотная группа. Сроки растут вместе с числом ролей, систем и требований к входу и размещению. Точные сроки называем по итогам обследования.

Нужно ли подключать приложение к Active Directory?

Если в компании есть каталог, лучше подключить: сотрудник не заводит ещё один пароль, а доступ закрывается вместе с учётной записью. Если каталога нет или приложением пользуются внешние люди, используются свои учётные записи с двухфакторным входом.

Можно ли начать с готового решения?

Можно, и для типовых процессов это часто разумно. Заказное приложение оправдано, когда процесс отличает вас от остальных, а готовая система потребует переделки или заставит вести данные в двух местах. Сравнивать нужно стоимость владения, а не цену лицензии.

Как не допустить, чтобы приложением не пользовались?

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

Где хранятся данные и кому принадлежит код?

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

Делаете ли вы мобильное приложение для сотрудников?

Нативные приложения для iOS и Android не делаем. Интерфейс адаптивный и открывается на телефоне в браузере; если нужна установка на экран, это возможно как адаптивное веб-приложение. Нативное приложение оценивается отдельно, а мы подскажем, когда оно действительно нужно.