Система управления перепиской и финансами с критичными требованиями к безопасности

О проекте

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

Цель проекта

Главная задача разработки нашей экосистемы — создать сеть поддержки, чтобы повысить качество жизни заключенных, ускоряя процесс социальной адаптации и перевоспитания. Для этого нужно максимально упростить осуществление основных потребностей: связь с близкими, покупку лекарств, управление средствами на счету, а для персонала учреждений — автоматизировать обработку запросов и корреспонденции, чтобы снизить время ожидания письма с 2-3 месяцев до 3-5 дней.

Ключевая особенность

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

Решение

Экосистема состоит из нескольких сервисов:
  1. Сервис для переписки и звонков: веб и мобильный интерфейс для родственников, десктопное приложение для цензоров. Приложение для заключенных на стационарном планшете с ограниченным доступом к функционалу.
  2. Личный кабинет для операций с денежными средствами.
  3. Онлайн магазин для покупки лекарств, включающий административную панель для медицинского и управляющего персонала.

Технологии

  • Java
  • JS/CSS/HTML
  • Git
  • MySQL
  • GitLab CI/CD
  • Apache Tomcat
  • SPA React
  • GWT 1.x
  • Swift
  • UIKit
  • WebRTC (VoxImplant)
  • RX Java/Android
  • PhpStorm (IDE)
  • Nginx/Apache
  • PHP
  • Symfony
  • Redis
  • RabbitMq
  • Docker
  • golang

Компоненты системы

  1. Клиентская часть на ReactJS + Typescript.
  2. Система управления базами данных, используемая приложением - MySQL.
  3. Веб-сервер, на котором запускается приложение - Apache Tomcat.
  4. Интернет аудио- и видеозвонки осуществляются через VoxImplant.
  5. Приложение заключённых управляется через KNOX.
  6. Распознавание текстов происходит с помощью инструментов AbbY Lingvo.
  7. Telegram бот написан на PHP.
  8. Фреймворк для интерфейса Администратора - GWT 1.x.
  9. Разворачиваем и поставляем проект при помощи Docker и GitlabCI/CD.

Специальный функционал

Автоматическое распознавание рукописного текста

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

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

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

Кабинет управления расписанием доступа к сервисам для групп и отдельных лиц

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

Центр принятия решений

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

Стандартный функционал

Автоматизация управления сообщениями разных типов

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

Внутренняя финансовая система, интегрированная с популярными платежными инструментами.

Пользователь может оплачивать услуги сервиса с помощью Системы быстрых платежей (СБП), отсканировав QR-код с экрана, по реквизитам банковской карты, с помощью виртуальной карты или через списание с баланса личного кабинета.

Безопасное хранение информации

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

Онлайн-магазин для заказа лекарств

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

Идентификация документов по QR-коду

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

Интернет-звонки с сохранением записи

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

Настройка доступа и общение через Telegram

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

Статистика

Проектные практики

Работа с группой стейкхолдеров

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

Автономность подготовки требований

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

Экосистема

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

Прозрачность разработки

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

Личная ответственность

Мы проводим офлайн воркшопы и приезжаем на встречи с клиентом. Инновационная разработка для нас – не только техническая экспертиза, но и социальная миссия.

630055, г. Новосибирск,
ул. Гнесиных 10/1, 10 этаж