Разработка · 7 мин чтения

Веб-приложение для управления заявками: архитектура и функции

Заявки теряются в почте, дублируются в Excel и всплывают через три дня после дедлайна - с такой проблемой ко мне чаще всего приходят за разработкой веб-приложения для управления заявками. За последние два года я собрал больше десятка подобных систем: от простого трекера на 200 обращений в месяц до сервиса с очередями, SLA-таймерами и интеграцией с СДЭК и эквайрингом. Разберу архитектуру, обязательный набор функций и на что смотреть при выборе стека, если планируете такую систему для своей команды.

Зачем компании отдельный сервис учёта заявок

Excel-таблица и почтовый ящик работают, пока заявок меньше 30-40 в месяц и обрабатывает их один человек. Как только подключается второй отдел или клиенты начинают писать в трёх каналах одновременно - в почту, в Telegram и через форму на сайте - начинаются потери: заявка провисает без ответа, два сотрудника берут одну и ту же в работу, руководитель не понимает, сколько обращений открыто прямо сейчас.

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

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

Архитектура: из каких слоёв собрано приложение для обработки обращений

Любая система такого типа состоит из четырёх слоёв, и от того, как они связаны, зависит, переживёт ли приложение рост нагрузки в три-четыре раза.

Клиентская часть. Обычно это два интерфейса: панель для сотрудников (список заявок, фильтры, канбан-доска по статусам) и портал для клиентов, где можно завести обращение и посмотреть его статус. Собираю на React или Vue - оба варианта дают SPA без перезагрузки страницы при каждом действии.

API-слой. Backend принимает заявки из всех каналов через единый интерфейс, независимо от того, пришла заявка с формы на сайте, из письма или от Telegram-бота. Пример запроса на создание заявки через REST API:

curl -X POST https://api.example.com/tickets 
  -H "Authorization: Bearer $TOKEN" 
  -d '{"channel":"telegram","subject":"Не пришла посылка","priority":"high"}'

Очереди и фоновые задачи. Отправка уведомлений, генерация отчётов, проверка просроченных SLA - всё это не должно тормозить основной запрос пользователя. Redis-очередь с воркерами разгружает API и держит время ответа в пределах 100-200 мс даже при 500+ заявках в очереди.

Хранилище. PostgreSQL для основных данных, Redis - для кэша и очередей, S3-совместимое хранилище - для вложений: скриншотов, сканов документов, файлов от клиентов.

Стек технологий: что выбираю под разные объёмы заявок

Стек подбираю не по личным предпочтениям, а по объёму заявок, числу каналов приёма и требованию к реальному времени. Ниже - четыре сценария, с которыми сталкивался на практике.

Сценарий Стек Когда беру этот вариант
MVP-трекер для одного отдела, до 300 заявок/мес React + Laravel + PostgreSQL Нужен рабочий сервис за 5-6 недель без переусложнения
Несколько отделов, SLA и эскалация React + WebSocket, Laravel/Node с очередями на Redis, PostgreSQL Нужны уведомления в реальном времени и автоматическая маршрутизация
Заявки приходят с сайта на Tilda или WordPress Tilda-скрипт / WooCommerce-хук на приём формы + отдельный API на Laravel Сайт трогать не нужно, приём заявок добавляется поверх существующей витрины
Основной канал - Telegram (курьеры, сервисные заявки) aiogram-бот + FastAPI/Laravel backend + PostgreSQL Клиенты и исполнители общаются в мессенджере, веб-панель нужна только для контроля

Для интернет-магазинов на WooCommerce часто заявки на возврат или разбор платежа приходят из связки с эквайрингом - в таких случаях подключаю систему заявок напрямую к вебхукам T‑Bank, чтобы статус оплаты автоматически проставлялся в карточке обращения, а не переносился вручную.

Бесплатный материал

🎁 Полезный скрипт в подарок

Подпишитесь на Telegram - пришлю готовый скрипт по этой теме.

Без спама. Отписка в 1 клик.

Функции, без которых тикет-система не работает

Набор функций, который встречается в 90% моих проектов, вне зависимости от отрасли:

  • Приём заявок из нескольких каналов одновременно - форма на сайте, почта, Telegram, звонок с фиксацией в карточке
  • Автоматический номер и статус при создании: новая → в работе → ожидает ответа → закрыта
  • Маршрутизация по отделам и приоритету, ручная и по правилам
  • SLA-таймеры с эскалацией ответственному или руководителю при просрочке
  • История переписки и вложений в одной карточке, без переключения между почтой и мессенджером
  • Уведомления в Telegram, email или push при смене статуса
  • Ролевая модель: клиент видит свои заявки, сотрудник - заявки отдела, руководитель - всё и отчёты
  • Отчёты по среднему времени ответа, загрузке сотрудников и количеству просрочек за период

Часть этих функций закрывается кодом за пару дней - статусы, история переписки. Часть требует отдельной проработки: SLA-таймеры с эскалацией и разграничение прав по ролям обычно занимают 30-40% времени разработки backend.

Интеграции: СДЭК, эквайринг, Telegram и n8n

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

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

Эквайринг. Для магазинов на WooCommerce заявки на возврат средств завязываю на вебхуки T‑Bank - как только приходит статус возврата, заявка закрывается автоматически, без ручной сверки бухгалтером.

Telegram. aiogram-бот закрывает две задачи: приём новых заявок от клиентов и уведомления сотрудникам о новых обращениях или просрочке SLA прямо в рабочий чат - быстрее, чем проверять почту.

n8n. Когда правила маршрутизации меняются часто и нет ресурса переписывать backend под каждое изменение, выношу логику в n8n: заявка попадает по вебхуку, дальше сценарий сам решает, кому назначить и какое уведомление отправить. Для отдела поддержки из 5-7 человек такой подход экономит время на доработках правил в дальнейшем.

Сколько стоит разработка сервиса для управления обращениями

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

  • MVP веб-сервис под один отдел (SPA + backend + БД): от 300 000 ₽
  • CRM/админ-панель с ролями, канбаном и отчётами на React: от 100 000 ₽
  • Отдельный API/бэкенд, если фронтенд уже есть: от 100 000 ₽
  • Telegram-бот как канал приёма и уведомлений: от 30 000 ₽
  • Автоматизация маршрутизации и уведомлений в n8n: от 25 000 ₽
  • Кастомная интеграция с СДЭК или эквайрингом: от 40 000 ₽
  • Техподдержка и доработки после запуска: от 15 000 ₽/мес

На рынке студии просят за похожий функционал от 300 000 до 800 000 ₽ - это не мой прайс, а ориентир по тому, что видел у коллег и в отзывах клиентов, которые до меня уже проходили этот путь через агентство. Разница обычно объясняется числом менеджеров в проекте и накладными расходами студии, а не сложностью самой разработки.

Срок для MVP - 5-6 недель, для системы с SLA, ролями и двумя-тремя интеграциями - 10-14 недель.

Когда нужен не сайт, а сервис

SaaS / SPA

от 300 000 ₽

Подробнее →

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

Чем веб-приложение для управления заявками отличается от готового хелпдеска вроде Zendesk?

Готовый хелпдеск быстрее запустить - учётка и первые настройки за день. Но он рассчитан на типовой процесс: если у вас нестандартная маршрутизация, специфичные статусы или заявка должна дёргать СДЭК и эквайринг одновременно, начинаются доработки через API хелпдеска, которые по стоимости за год-два догоняют кастомную разработку. Подписка на такой сервис для команды из 10 человек на рынке обходится в 40 000-60 000 ₽ в месяц - это тоже не мой прайс, а рыночная цена подписки. Свой сервис через 2-3 года выходит дешевле и точнее ложится на процессы.

Сколько времени занимает разработка такой системы?

MVP с одним каналом приёма и базовыми статусами - 5-6 недель. Система с SLA-таймерами, ролевой моделью и интеграцией с СДЭК или эквайрингом - 10-14 недель. Срок увеличивается, если нужен отдельный клиентский портал с личным кабинетом - добавляю ещё 3-4 недели.

Можно ли встроить приём заявок в существующий сайт на Tilda или WordPress?

Да, и переписывать сайт для этого не нужно. На Tilda ставлю кастомный скрипт на форму, который отправляет данные в API системы заявок, - простая доработка такого рода стоит от 3 000 ₽, комплексная интеграция с проверкой статусов и вебхуками - от 40 000 ₽. На WordPress и WooCommerce работаю через хуки плагина или темы, без переноса сайта на другую платформу.

Нужна ли отдельная мобильная версия?

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

Есть задача?

Обсудим в мессенджере

Расскажите, что нужно сделать — отвечу в течение 4 часов в рабочее время. Первая консультация бесплатно.

Самозанятый Калинкин Н. А. · работаю с физлицами и юрлицами

Продолжая пользование настоящим сайтом Вы выражаете своё согласие на обработку Ваших персональных данных (файлов куки) с использованием Yandex.Metrika.
Понятно