Разработка личного кабинета: для клиента, партнёра, поставщика и сотрудника

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

Нижняя граница — от 250 000 ₽Данные из 1С и CRM, права проверяются отдельным прогономИсходный код в вашем репозитории с первого коммита

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

Когда нужен кабинет на заказ, а не модуль в коробке

Модуль CMS или конструктор упёрся

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

Нужны цены и остатки по каждому партнёру

У каждого свои условия: скидка, склад, отсрочка. В типовом модуле это может не поместиться или ведётся руками в двух местах.

Данные нельзя отдавать чужому сервису

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

Кабинет есть, но им не пользуются

Данные устарели на сутки, статусы не меняются, документов нет, и люди вернулись к звонкам. Чинить надо обмен, а не интерфейс.

Типы кабинетов

Четыре типа кабинета: кто пользуется, что внутри и где ломается

Перечень систем со сроками — на странице порталов и личных кабинетов.

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

Как данные из 1С и CRM попадают на экран кабинета

Основные данные в кабинет не вводят, их берут из учёта. От способа доставки зависит, что клиент увидит при сбое 1С. Какие дыры в учёте вскрывает кабинет, описано на странице порталов.

У каждого поля один источник

Цену и остаток ведёт 1С или ERP, обращения — CRM, профиль и настройки уведомлений — сам кабинет. Это записывается до начала работ: поле, источник истины, кто вправе его менять. Если на поле претендуют два источника, кабинет показывает то одно значение, то другое. Схема обмена и матрица источников — на странице интеграции 1С.

Три способа доставить данные на экран

  • Запрос в учёт на лету. Данные свежие, но каждое открытие страницы нагружает 1С. Годится для редких запросов.
  • Копия в кабинете, обновляемая по изменению. Кабинет работает, даже если 1С занята. Нужны очередь, журнал обмена и решение, что показывать при остановке.
  • Копия по расписанию. Проще всего, но данные устаревают между обновлениями. Подходит для справочников и документов, не подходит для остатков.

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

Что кабинет пишет обратно и как сверяется

Заказ или заявка из кабинета должны попасть в учёт. У записи есть состояние («принято кабинетом», «передано в учёт», «проведено», «ошибка»), повторная отправка не создаёт дубль, а ошибка видна менеджеру. Раз в сутки кабинет и учёт сверяются по количеству заказов, суммам и выборке остатков, расхождения попадают в журнал, и регламент говорит, кто их разбирает. Без сверки о расхождении узнают от клиента.

Источники

Данные в кабинете: источник, способ доставки и поведение при сбое

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

Данные в кабинете
Источник
Как доставляем
Что видит пользователь при сбое
Данные в кабинетеОстатки и ценыусловия партнёра
Источник1С или ERP
Как доставляемКопия в кабинете, обновление по изменению; из остатка вычитаем резервы
Что видит пользователь при сбоеМетку «данные на 14:20» и предупреждение, а не молча устаревшее число
Данные в кабинетеЗаказы и статусыв обе стороны
Источник1С и кабинет
Как доставляемЗаказ уходит в очередь и в учёт, статус возвращается по событию
Что видит пользователь при сбоеЗаказ «принят кабинетом», пока учёт недоступен; дубля при повторе нет
Данные в кабинетеДокументысчета, акты, накладные
Источник1С или система ЭДО
Как доставляемФайл попадает в кабинет после проведения и подписания
Что видит пользователь при сбоеПояснение «документ ещё не сформирован», а не пустой экран
Данные в кабинетеОбращения и заявкиподдержка, согласования
ИсточникCRM или база кабинета
Как доставляемЧерез API CRM либо в кабинете с выгрузкой в CRM
Что видит пользователь при сбоеОбращение сохранено и видно менеджеру, отправлять второй раз не нужно
Роли

Ролевая модель: что видит кто и как это проверить

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

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

  • Организация. Пользователь принадлежит контрагенту и видит только его заказы и документы; один человек может работать с несколькими организациями.
  • Роль внутри организации. Закупщик оформляет заказы, бухгалтер видит счета и акты, директор видит всё и приглашает коллег.
  • Объект. Доступ не ко «всем заказам», а к заказам по своим договорам или складам.
  • Поле. Партнёр видит свою цену, но не себестоимость и не цену соседа.
  • Действие. Смотреть, оформлять, отменять, согласовывать: отмена заказа и смена реквизитов — отдельные права.

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

У сотрудников права следуют за должностью в каталоге пользователей, если он у вас есть. Внешних пользователей приглашает администратор их организации, и клиент сам отключает уволенного закупщика.

Вход

Способ входа: почта, телефон или корпоративная учётная запись

Способ входа выбирается по тому, кто пользуется. В одном кабинете может быть два-три.

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

Что закрываем в безопасности кабинета

Права на сервере и сессии

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

Журнал действий

Кто, что и когда смотрел, менял и скачивал. Вход «от имени клиента» для поддержки возможен, но записывается, как и смена прав.

Файлы и документы

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

Учётные системы не видны снаружи

Из интернета доступен только кабинет. 1С остаётся внутри контура, облачная CRM подключается по API с отдельным ключом и минимальными правами. Ответы кэшируются, чтобы клиенты не нагружали учёт.

Что делаем

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

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

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

Кто пользуется, что видит, откуда берутся данные. На выходе роли в проверяемом виде, схема обмена и вилка бюджета. Вычитается из первого этапа, если продолжаете с нами.

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

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

1С, CRM, склад, ЭДО и кабинет вместе: схема обменов и матрица источников истины.

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

Простой кабинет с одной ролью

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

от 250 000 ₽ · разработка от 4 недель

Кабинет партнёра или дилера

Индивидуальные цены, остатки по доступным складам, заказ с проверкой, сверка. Существенно дороже нижней границы.

после обследования · разработка от 6 недель

Кабинет поставщика или сотрудника

Для поставщика: заявки на поставку, статусы, документы. Для сотрудника: заявки и согласования — от 4 недель, с регламентами и справочниками (внутренний портал) — от 5 недель.

после обследования · разработка от 4 недель

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

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

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

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

2–4 недели — Обследование: разбор данных и ролей

Пользователи, таблица «поле — источник — хозяин», роли в проверяемом виде, способы входа. Выясняем, есть ли в учёте то, что вы хотите показать.

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

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

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

Интерфейс, права и обмен. Работаем в вашем репозитории, раз в две недели показываем работающую версию на тестовом стенде.

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

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

3–7 дней — Запуск

Заводим одну-две организации, а не всех сразу, и смотрим журнал и обращения.

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

Новые разделы и роли по этапам с отдельной приёмкой. Объём работ в месяц записан в договоре.

Цена

Что двигает цену кабинета внутри вилки

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

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

Число ролей и разделов

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

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

У каждой системы свой способ доступа: OData или HTTP-сервисы у 1С, API у CRM, файлы у старой учётной системы, и свой владелец.

Вход и документы

Корпоративный вход, двухфакторность, ЭДО и оплата через подключённый эквайринг добавляют работы и на разработке, и на приёмке.

Контроль

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

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

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

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

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

Кабинет, веб-сервис или SaaS-платформа: где проходит граница

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

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

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

Инструменты

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

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

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

Статья

Личный кабинет для партнёров: что в него включать

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

  • Что обязательно
  • Откуда данные
  • Ролевая модель
Читать →
Статья

CommerceML: обмен 1С с сайтом и где он ломается

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

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

Мультиарендность в SaaS: как разделить данные клиентов

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

  • Три схемы
  • Политики на уровне строк
  • Тесты изоляции
Читать →
Заявка

Разберём, кто будет пользоваться кабинетом и что он увидит

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

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

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

Вопросы

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

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

Нижняя граница — от 250 000 ₽: простой кабинет с одной ролью или витрина данных. Кабинет партнёра с индивидуальными ценами и сверкой существенно дороже, цену называем по итогам обследования (200 000 ₽ за один-два процесса, 350 000 ₽ за несколько систем). Оно вычитается из первого этапа, если продолжаете с нами; для работ дороже 500 000 ₽ обязательно, для простого кабинета решаем после созвона.

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

Разработка кабинета клиента, поставщика или сотрудника с заявками и согласованиями занимает от четырёх недель, сотрудника с регламентами и справочниками — от пяти, партнёра с ценами и сверкой — от шести. До неё идут обследование (2–4 недели) и прототип, после неё проверка (1–2 недели) и запуск (3–7 дней). Если данные в учёте не в порядке, добавляется время на их разбор.

Можно ли подключить кабинет к нашей 1С или CRM?

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

Что делать, если в учёте беспорядок?

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

Как защищены данные пользователей?

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

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

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

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

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

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

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