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

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

Обследование — 200 000 ₽, 2–3 неделиВход через ваш каталог, права по подразделениям, журнал действийИсходный код в вашем репозитории с первого коммита

С чем приходят

Когда процессу нужно приложение, а не таблица и почта

Процесс живёт в Excel и переписке

Заявки приходят письмами, статус знает только тот, кто ведёт файл, а при его отпуске всё останавливается. Файл копируют, версии расходятся.

Готовая система не ложится на процесс

Коробка требует менять порядок работы под себя, а настройка стоит как разработка. Или пользователей заставили вести данные в двух местах.

Приложение написал один человек

Инструмент работает, но знает его только автор: нет прав, нет журнала, код лежит на его компьютере, а обновление сервера страшно.

Нужны права и след в журнале

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

Типы приложений

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

Тип определяет, сколько будет интеграций и ролей, поэтому оценка начинается с него. Приложения для клиентов и партнёров — другая задача, см. личный кабинет и B2B-портал.

Тип приложения
Что внутри
Кто пользуется
Где ломается
Тип приложенияЗаявки и согласованиямаршруты, статусы, сроки
Что внутриЗаявка со вложениями, маршрут по подразделениям, замещение на время отпуска, напоминания о просрочке
Кто пользуетсяИнициаторы со всех подразделений, согласующие, исполнители
Где ломаетсяМаршрут описан в приказе, а в жизни другой; согласующий в отпуске, и заявка висит
Тип приложенияРабочее место оператораежедневная работа
Что внутриОчередь задач, карточка с данными из учёта, быстрые действия, подсказки, учёт времени
Кто пользуетсяОператоры, диспетчеры, менеджеры: открывают приложение весь день
Где ломаетсяЛишние клики: экран, удобный на показе, неудобен на сотой заявке за смену
Тип приложенияРеестр и учётсправочники и записи
Что внутриРеестр объектов, договоров или обращений с поиском, историей изменений и выгрузками
Кто пользуетсяСпециалисты, которые ведут записи, и руководители, которые читают
Где ломаетсяДанные вводят свободным текстом, и по ним потом нельзя ничего посчитать
Тип приложенияРасчёт и конфигураторправила и формулы
Что внутриРасчёт стоимости, нормы, комплектации или сроков по правилам, которые сейчас живут в таблице одного эксперта
Кто пользуетсяПродажи, технологи, проектировщики
Где ломаетсяПравила не записаны, и результат зависит от того, кто считал
Тип приложенияОтчётность и витринаданные из нескольких систем
Что внутриСводные показатели из 1С, CRM и приложения на одном экране, выгрузка в файл
Кто пользуетсяРуководители подразделений и аналитики
Где ломаетсяЦифры не сходятся с учётом, потому что у каждого поля нет своего источника
Корпоративная среда

Что отличает корпоративное приложение от обычного веб-сервиса

Это перечень требований, которые заказчик часто вспоминает на приёмке. Мы выясняем их на обследовании и записываем до разработки.

Требование
Что это значит на практике
Как делаем
Как проверяем
ТребованиеВхододин вход на все системы
Что это значит на практикеСотрудник не заводит ещё один пароль, а доступ исчезает вместе с учётной записью в каталоге
Как делаемВход через ваш каталог (Active Directory, LDAP) или единый вход; при его отсутствии, свои учётные записи с двухфакторным входом
Как проверяемОтключаем тестовую учётную запись в каталоге и проверяем, что доступ закрылся без участия приложения
ТребованиеРолиправа по подразделению и должности
Что это значит на практикеВидно только своё подразделение, согласовать может только назначенный
Как делаемПрава проверяет сервер на каждый запрос, роли берутся из каталога или из справочника оргструктуры
Как проверяемИз-под каждой роли пробуем открыть чужую заявку и вызвать чужое действие
ТребованиеЖурналкто что сделал
Что это значит на практикеИзменения заявок и прав, входы и выгрузки сохраняются и не удаляются приложением
Как делаемЖурнал отдельно от основных таблиц, читается ответственным; срок хранения записан
Как проверяемМеняем запись и находим её след с автором и временем
ТребованиеРазмещениевнутри вашего контура
Что это значит на практикеПриложение работает на ваших серверах или у выбранного вами хостера, без обязательного выхода в интернет
Как делаемРазвёртывание описано инструкцией; внешние зависимости (шрифты, скрипты, сервисы) вынесены на ваш сервер
Как проверяемРазворачиваем приложение на чистом сервере по инструкции без нашего участия
ТребованиеОбновлениябез остановки рабочего дня
Что это значит на практикеВыкладка в нерабочее время или без остановки, возможность откатить
Как делаемМиграции данных в несколько шагов, версионирование, тестовый стенд, повторяющий боевой
Как проверяемРепетиция выкладки на копии боевых данных, замер времени и проверка отката
Встраивание

Как приложение встраивается в ваши системы

Корпоративное приложение редко живёт отдельно: заявке нужны номенклатура и контрагенты из 1С, согласованию нужна оргструктура, отчёту нужны данные из учёта.

У каждого поля один хозяин

До разработки записывается таблица: поле, откуда берётся, кто вправе его менять. Номенклатура, контрагенты и остатки остаются в учёте и приходят в приложение копией, оргструктура и состав подразделений берутся из каталога, а статус заявки и комментарии ведёт само приложение. Когда на одно поле претендуют два источника, пользователи видят разные цифры и перестают доверять обоим. Способы обмена с 1С описаны на странице интеграции 1С.

Что делаем при сбое чужой системы

Если 1С недоступна, приложение не должно останавливаться целиком. Справочники берутся из копии с пометкой времени, заявки принимаются и ждут в очереди. Что именно разрешено без учёта, решает владелец процесса до разработки, а не программист во время аварии.

Вход и права в одном месте

Если в компании уже есть единый вход, приложение подключается к нему, а не заводит свою таблицу паролей. Схемы входа, двухфакторность и разграничение прав разобраны на странице SSO и MFA для корпоративных систем; если каталог меняется, смотрите замену Active Directory.

Запуск

Как приложение приживается: пилотная группа, обучение, отказ от старого способа

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

Пилотная группа вместо запуска для всех

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

Критерии приёмки пишутся заранее

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

Чем заменяем старый способ

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

Порядок первых шагов для небольшой команды описан в статье «Корпоративное веб-приложение: с чего начать».

Что делаем

Из чего состоит работа и сколько она стоит

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

Обследование: одно приложение и одна-две системы

Процесс, пользователи, роли, источники данных, способ входа, размещение. На выходе описание первой версии, список «откладываем» и вилка бюджета. Вычитается из первого этапа, если продолжаете с нами.

200 000 ₽ · 2–3 недели

Обследование: приложение и несколько систем

1С, CRM, каталог, документооборот и приложение вместе: схема обменов и матрица источников данных.

350 000 ₽ · 3–4 недели

Лёгкий пилот: один процесс

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

150 000 – 400 000 ₽ · 2–8 недель

Тяжёлый пилот: приложение с интеграциями

Несколько ролей, маршруты согласования, обмен с учётом, отчёты. Подключается к боевым системам.

400 000 – 1 200 000 ₽ · 2–3 месяца

Вывод в эксплуатацию

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

от 1 500 000 ₽ этапами по 300 000 – 700 000 ₽ · от 3 месяцев

Сопровождение

Мониторинг, обращения пользователей по сбоям, разбор инцидентов, плановые доработки с пакета на 60 000 ₽. Сверх пакета — 5 000 ₽ в час.

20 000 / 60 000 / 120 000 ₽ в месяц
Процесс

Как идёт работа

2–3 недели — Обследование

Разговоры с теми, кто работает в процессе, а не только с руководителем. Фиксируем маршрут «как есть», роли, источники данных, вход, размещение и список «входит в первую версию / откладываем».

Перед разработкой — Прототип

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

От 4 недель — Разработка

Работаем в вашем репозитории и раз в две недели показываем рабочую версию на тестовом стенде.

1–2 недели — Проверка

Сценарии приёмки, проверка прав из-под каждой роли, репетиция выкладки и отката, сверка с учётом на копии данных.

Затем — Пилотная группа и запуск

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

Дальше — развитие или сопровождение

Новые разделы по этапам с отдельной приёмкой либо передача команде заказчика.

Цена

Что двигает цену корпоративного приложения

Число ролей и правил

Одна роль и один маршрут — одно, десять подразделений с исключениями и замещением — другое. Работа растёт по числу правил, а не экранов.

Число систем и их возраст

У каждой системы свой способ доступа и свой владелец. Файловый обмен со старой системой может стоить больше, чем современное API.

Вход и безопасность

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

Состояние данных

Если справочники ведутся в нескольких местах и расходятся, первые недели уходят на них, а не на приложение.

Контроль

Что остаётся у вас и чего мы не делаем

Остаётся у вас

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

Мы этого не делаем

  • Не внедряем учётную, производственную или документооборотную систему целиком: делаем одно приложение вокруг одного процесса.
  • Не делаем мобильные приложения: интерфейс адаптивный, нативные iOS и Android не берём.
  • Не оказываем хостинг и не обучаем сотрудников на месте у вас: готовим инструкцию и проводим показ для пилотной группы.
  • Не проводим аттестацию, лицензии ФСТЭК у нас нет; требования к защите информации выясняем на обследовании и фиксируем.
  • Не берём работы дешевле 150 000 ₽ и не дежурим круглосуточно.
Граница

Корпоративное приложение, веб-сервис или готовая система: что выбрать

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

Общие вопросы про веб-сервисы, включая публичные и внутренние, описаны на странице разработки веб-сервисов и веб-приложений. Если вам нужна система учёта объектов, договоров и обращений, см. CRM на заказ. Кабинет для клиентов, партнёров или поставщиков описан на странице личных кабинетов, а серверная часть и обмен между системами — на странице API и бэкенда.

Если приложение уже есть, но его трудно менять, сначала нужен аудит кода и архитектуры.

Инструменты

На чём собираем

Серверная часть и данные
  • Python (Django, FastAPI) или Go
  • PostgreSQL с политиками на уровне строк там, где это нужно
  • Очередь обмена с учётными системами в PostgreSQL или RabbitMQ
  • S3-совместимое хранилище для вложений (своё или у хостера)
Интерфейс, вход и развёртывание
  • React или Vue, TypeScript
  • Вход через LDAP, Active Directory или Keycloak; двухфакторный вход
  • Docker, Nginx, GitLab CI
  • Журнал действий и мониторинг
Материалы

Материалы по теме

Статья

Корпоративное веб-приложение: с чего начать

Как выбрать первый процесс, описать роли, решить, где будут данные, и запустить пилотную группу.

  • Первый процесс
  • Роли и вход
  • Первая версия
Читать →
Статья

Коробочное ПО или заказная разработка

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

  • Стоимость владения
  • Когда коробка
  • Когда заказное
Читать →
Статья

Как составить техническое задание на разработку

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

  • Структура
  • Критерии приёмки
  • Частые ошибки
Читать →
Заявка

Разберём процесс, который хотите перенести в приложение

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

Спасибо, заявка отправлена. Ответим в течение рабочего дня.

Не удалось отправить. Напишите в телеграм или позвоните.

Вопросы

Частые вопросы: разработка корпоративных веб-приложений

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

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

Чем корпоративное приложение отличается от обычного веб-сервиса?

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

Можно ли подключить приложение к Active Directory и 1С?

Да. К каталогу подключаем через LDAP или единый вход, с 1С работаем через OData, HTTP-сервисы или обмен файлами. Если у системы нет ни интерфейса, ни выгрузки, скажем об этом до договора.

Нужно ли приложение, если у нас уже есть Excel и почта?

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

Где будет работать приложение и кому принадлежит код?

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

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

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

Что делать, если пользователи не хотят переходить на приложение?

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

Как устроено сопровождение?

Ежемесячно: 20 000, 60 000 или 120 000 ₽ в месяц, до 4, 12 или 25 часов. Часы уходят на мониторинг, обращения пользователей по сбоям и разбор инцидентов; плановые доработки входят с пакета на 60 000 ₽. Сверх пакета — 5 000 ₽ в час по согласованию до начала. Круглосуточного дежурства у нас нет.

Вы работаете только в Ростове-на-Дону?

Мы в Ростове-на-Дону, работаем с заказчиками по всей России: удалённо и в вашем контуре. Доступ к системам и обследование согласуем на старте с вашей службой безопасности.