Сервисы и платформы

Разработка B2B-портала страновых рисков — Хотлайн

За две недели запустили MVP закрытого портала, где корпоративные клиенты самостоятельно находят события безопасности по доступным им странам

Посетить сайт
Next.js 15TypeScriptPostgreSQL 16Prisma 5Auth.js v5Argon2D3topojsonworld-atlasexceljsDocker ComposeCaddyLet's Encrypt

Задача

ООО «ХОТЛАЙН-СИТИ» помогает компаниям управлять рисками деловых поездок. Аналитики готовили материалы в Excel и отправляли недельные сводки по 150+ странам. Подписчики получали общую рассылку, но не могли самостоятельно искать события и отбирать нужную географию. Изменения шаблона нарушали форматирование, выгрузки приходилось пересобирать вручную. Заказчику требовался закрытый портал: аналитикам — для подготовки и публикации материалов, корпоративным клиентам — для самостоятельной работы с событиями. Каждому клиенту нужно было открывать только назначенный набор стран.

Кабинет с персональной географией

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

Аналитики работают в административной панели: ведут страны и события, готовят черновики и публикуют материалы. Черновики скрыты от клиентов. После публикации событие становится доступно тем, кому назначена соответствующая страна.

Риски на карте и в карточке

Карта мира и интерактивный глобус связаны с доступными пользователю событиями и фильтрами. На глобусе подсвечиваются страны из текущей выдачи. На странице страны можно изучить историю событий и сводку риска.

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

Сохранили принятую в Excel оценку риска: отдельно для сотрудников и бизнеса, по пять уровней. Итог определяется по большей из двух оценок. В клиентской выдаче он отображается по шкале High, Medium и Low.

Разработка и разграничение доступа

Портал разработали на Next.js 15 и TypeScript с базой данных PostgreSQL 16 и Prisma 5. Для авторизации использовали Auth.js v5, для карты и глобуса — D3, topojson и world-atlas.

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

В журнале действий сохраняются публикации, изменения материалов, выдача и отзыв доступа. Для правок видна разница между прежним и новым содержимым.

Обмен с привычными таблицами

Для загрузки материалов реализовали импорт XLSX по шаблону заказчика. Он обрабатывает 12 рабочих колонок и иерархию регионов. Допустимый размер файла — 20 МБ.

Нужную выборку можно выгрузить в XLSX или CSV. Экспорт сохраняет текущие фильтры и учитывает доступ к странам: пользователь получает таблицу с теми событиями, которые отобрал в кабинете. Для работы с XLSX использовали exceljs.

Техническая часть

Запуск на инфраструктуре заказчика

От подписания ТЗ до запуска MVP в продакшене прошло две недели. Портал развернули на VPS заказчика с Docker Compose и Caddy. Продукт готов к подключению корпоративных клиентов и не зависит от хостинга студии.

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

Проект в цифрах

Срок запуска MVP
Две недели

От подписания ТЗ до запуска в продакшене

Цели

  • Перенести публикацию аналитики из Excel и рассылок в закрытый портал
  • Дать клиентам самостоятельный поиск событий
  • Ограничить доступ назначенными клиенту странами
  • Сохранить обмен данными в табличном формате

Целевая аудитория

  • Корпоративные клиенты, которым нужна аналитика рисков деловых поездок
  • Аналитики «ХОТЛАЙН-СИТИ», которые готовят и публикуют события
  • Администраторы, которые управляют клиентами и доступом

Что нужно пользователю

Job to be done — от ситуации к результату

Ситуация

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

Задача

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

Результат

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

Что внутри

1

Поиск по стране, заголовку и описанию события

2

Фильтры по стране и итоговому уровню риска

3

Страница страны с историей событий и сводкой риска

4

Карточка события с влиянием на сотрудников и бизнес

5

Карта мира и интерактивный глобус

6

Черновики и публикация событий

7

Назначение клиентам доступа к странам

8

Импорт XLSX и экспорт выборки в XLSX/CSV

9

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

Как работали

1

Разработка административной панели

2

Разработка клиентского кабинета

3

Добавление карты мира и глобуса

4

Реализация импорта и экспорта таблиц

5

Развёртывание MVP на VPS заказчика

Нужен похожий проект?

Расскажите о задаче — оценим объём, сроки и стоимость, предложим решение. Есть ТЗ — загрузите его и получите предварительную цифру за несколько минут.

Оценить по ТЗ