1 Назначение ПО
«Платформа для управления психологическим здоровьем «Просебя»» является программным обеспечением, разработанным для оказания пользователям услуг в области психологической поддержки через мобильное устройство. ПО представляет собой единое мобильное приложение, реализованное для двух мобильных операционных систем — iOS и Android, с единым набором функций и единым пользовательским интерфейсом.
Приложение представляет собой комплексное мобильное решение, обеспечивающее авторизацию и идентификацию пользователя, подбор специалистов, проведение онлайн-консультаций (чат, аудио- и видеозвонки), ведение личного профиля, доступ к образовательному и медиаконтенту (статьи, подкасты, практики), а также оформление и оплату услуг.
2 Описание функциональных характеристик
Функциональные характеристики, перечисленные ниже, одинаково реализованы в приложении для iOS и для Android. Там, где для реализации функции используются различные системные механизмы операционных систем, это указано в скобках.
1. Авторизация и идентификация пользователя. Приложение обеспечивает регистрацию и вход пользователя, включая онбординг, вход по коду доступа (PIN-коду) и подтверждение биометрией (Face ID / Touch ID на iOS; отпечаток пальца или распознавание лица на Android), безопасное хранение токена авторизации.
2. Подбор и просмотр специалистов. Приложение позволяет осуществлять поиск специалистов, просматривать карточки специалистов, добавлять специалистов в избранное, просматривать расписание и записываться на консультацию.
3. Онлайн-консультации. Приложение обеспечивает проведение консультаций со специалистом в формате текстового чата, а также аудио- и видеозвонков (модуль VoIP-звонков на основе WebRTC), включая маршрутизацию аудио, сигнализацию вызова и push-уведомления о вызове (на iOS — с использованием PushKit).
4. Личный кабинет и профиль пользователя. Пользователь может просматривать и редактировать профиль, управлять настройками (в т. ч. настройками уведомлений и разрешений устройства), просматривать историю записей.
5. Оплата услуг. Приложение поддерживает оформление и оплату заказов на консультации, применение промокодов и оформление подписки.
6. Образовательный и медиаконтент. Приложение обеспечивает доступ к полезным материалам, таким как статьи, подкасты, быстрые практики.
7. Push-уведомления и напоминания. Приложение поддерживает получение и обработку push-уведомлений (в т. ч. о звонках, консультациях, новых сообщениях), напоминания о предстоящих консультациях.
8. Диплинки и маршрутизация. Приложение обрабатывает переходы по диплинкам из внешних источников (push-уведомления, ссылки) и осуществляет внутреннюю навигацию (роутинг) между пользовательскими сценариями (на iOS — на основе RxFlow, на Android — на основе Cicerone).
9. Аналитика и диагностика. Приложение собирает обезличенные данные об использовании и технические метрики для аналитики, а также отчёты о сбоях приложения (AppMetrica).
10. Обратная связь и поддержка. Приложение предоставляет пользователю возможность обратиться в службу поддержки и оставить оценку качества обслуживания.
3 Программные и аппаратные требования
Программные требования:
Операционная система. Приложение совместимо с мобильными устройствами Apple iPhone под управлением iOS версии не ниже 16.0 и с мобильными устройствами под управлением Android версии не ниже 9.0 (API level 28).
Среда разработки и сборки. Для сборки приложения для iOS используются среда разработки Xcode, менеджер зависимостей CocoaPods, генератор проекта XcodeGen, система автоматизации сборки Fastlane, язык программирования Swift версии 5.7. Для сборки приложения для Android используются среда разработки Android Studio, система сборки Gradle, язык программирования Kotlin версии 2.2.
Push-уведомления. Для доставки push-уведомлений используются системные сервисы мобильных платформ: на iOS — Apple Push Notification service (APNs), на Android — Firebase Cloud Messaging (FCM).
Аппаратные требования:
Мобильное устройство. Требуется устройство Apple iPhone, поддерживающее iOS 16.0 и выше, либо устройство на платформе Android, поддерживающее версию 9.0 (API 28) и выше.
Объем памяти. Рекомендуется не менее 200 МБ свободного пространства на устройстве для установки приложения и хранения локального кеша.
Сетевое подключение. Для работы приложения требуется подключение к сети Интернет (Wi-Fi или мобильная сеть передачи данных); для аудио- и видеозвонков рекомендуется устойчивое соединение с пропускной способностью не менее 1 Мбит/с.
Периферийные устройства. Для проведения аудио- и видеоконсультаций требуется наличие микрофона и камеры устройства.
4 Состав системы
ПО имеет единую функциональную архитектуру и реализовано в виде двух сборок — для iOS и для Android — на нативных языках программирования соответствующих платформ. Ниже приведено описание технической инфраструктуры и структуры приложения для каждой из операционных систем.
4.1 Описание технической инфраструктуры
Язык программирования — Swift (iOS); Kotlin (Android).
Используемая платформа разработки — Xcode, XcodeGen, CocoaPods, Fastlane (iOS); Android Studio, Gradle (Android).
Архитектурный подход — на iOS: VIPER-модули с MVVM, конфигурация через Storyboard + Swinject (DI), реактивное программирование на RxSwift/Combine, навигация — RxFlow; на Android: многомодульная Clean Architecture (модули api/impl по фичам), MVVM (Android Architecture Components ViewModel), внедрение зависимостей — Dagger2, навигация — Cicerone, частично используется Jetpack Compose.
Используемые сторонние компоненты (основные) — на iOS: RxSwift, RxCocoa, RxDataSources, RxFlow, Swinject, SnapKit, Kingfisher, RealmSwift, Moya, SwiftDate, R.swift, MaterialComponents, IGListKit, SkeletonView, IQKeyboardManagerSwift, Chatto/ChattoAdditions (чат), WebRTC-lib (аудио/видеозвонки), SwiftSignalRClient, KeychainAccess, AppMetrica; на Android: Retrofit (сеть), Room (локальная БД), Coil (загрузка изображений), Lottie (анимации), WebRTC и SignalR (аудио/видеозвонки и онлайн-сессии), Firebase Cloud Messaging (push-уведомления), AppMetrica (аналитика), Timber (логирование).
4.2 Общая структура приложения для iOS
- Application Layer — верхний слой приложения: запуск, конфигурация, сборка, роутинг (Coordinator, Deeplinks), обработка push-уведомлений (PushKit).
- Presentation Layer — слой представления (UI), разделен по пользовательским сценариям (UserStory): авторизация, онбординг, PIN-код, главный экран, профиль, чат, звонки, поиск специалистов, трекеры, подписки, полезный контент, настройки разрешений и др.
- Business Logic Layer — бизнес-слой: фасады (Auth, Chat, Pin) и сервисы (сеть, хранение, вычисления) по направлениям — авторизация, аналитика, биометрия, чат, конфигурация, документы, специалисты, избранное, файлы, платежи, разрешения, профиль, промокоды, push-уведомления, поиск специалистов, подписки, поддержка, расписание.
- Core Layer — ядро приложения: сетевые клиенты и клиенты хранения данных (Memory, Keychain, UserDefaults, Realm), логирование, аналитика, работа с зашифрованным хранилищем (EncryptedProvider), планировщик задач.
- Models — DTO (объекты, полученные из сети), VO/Model (модели для конфигурации модулей и представлений), DBO (объекты хранения).
- WebRTC — отдельный модуль, реализующий сигнализацию, маршрутизацию аудио и обработку VoIP-вызовов для проведения видео- и аудиоконсультаций.
- Modules — переиспользуемые внутренние Pod-модули: CoreUI (общие UI-компоненты), CombineHelpers (вспомогательные инструменты для Combine).
4.3 Общая структура приложения для Android
- app — корневой модуль приложения: запуск, сборка, конфигурация DI-графа, интеграция с системами сбора аналитики.
- Feature-модули (api/impl) — каждая функциональная область приложения оформлена в виде пары модулей «api» (контракты, публичный интерфейс) и «impl» (реализация): auth (авторизация), pin (код доступа), onboarding, profile/editprofile, favoritedoctors, psymatch (подбор специалиста), doctorcall/doctorchat (звонки и чат со специалистом), telemedappointment/consultations-remind (запись и напоминания о консультациях), moodtracker (трекер состояния), health-tests/psychotest-results (тесты), tracker (треки), subscription/selectsubscription (подписка), documents, supportchat (поддержка), notification/notification-preferences (уведомления) и другие.
- domain / core — общие доменные модели и базовые компоненты, используемые feature-модулями (сетевые и доменные абстракции, общие use-case).
- remote — сетевой слой: клиенты Retrofit, обработка сетевых запросов приложения.
- db — локальное хранилище данных на основе Room.
- designsystem / base-ui / base-ui-compose / ui — общие переиспользуемые UI-компоненты и элементы дизайн-системы приложения (часть экранов реализована на Jetpack Compose).
- webrtc / webrtc-lib — модуль, реализующий сигнализацию и обработку VoIP-вызовов на основе WebRTC и SignalR для проведения аудио- и видеоконсультаций.
- analytics / analytics-api — единая точка сбора аналитических событий (AppMetrica).
- router — модуль навигации между экранами на основе Cicerone.
5 Эксплуатация системы
5.1 Запуск системы
Запуск приложения осуществляется пользователем на мобильном устройстве (Apple iPhone или устройстве Android) путем нажатия на значок приложения. При первом запуске приложение проводит онбординг и предлагает пройти авторизацию; при последующих запусках — вход по коду доступа (PIN-коду) или биометрии в соответствии с настройками пользователя.
5.2 Управление
Управление функциями приложения осуществляется пользователем через интерфейс мобильного приложения. Мониторинг состояния приложения в продуктивной эксплуатации осуществляется с использованием систем сбора аналитики использования (AppMetrica).
5.3 Резервное копирование и восстановление
Данные учетной записи пользователя (профиль, история консультаций, результаты тестов, настройки) не привязаны к конкретному устройству: при переустановке приложения, смене устройства или очистке локальных данных они автоматически восстанавливаются после повторной авторизации пользователя. Локальный кеш приложения на устройстве не содержит данных, не подлежащих восстановлению, поэтому выполнение резервного копирования пользователем не требуется.
5.4 Обновление
Обновление приложения производится через официальные магазины приложений: App Store (iOS), Google Play или RuStore (Android). Приложение поддерживает механизм проверки актуальности версии и уведомления пользователя о необходимости обновления.
5.5 Техническая поддержка
Пользователи могут обратиться в службу технической поддержки непосредственно из приложения (раздел поддержки, форма обратного звонка), а также через иные каналы связи.
5.6 Завершение работы
Последовательность действий для завершения работы с приложением обеспечивает сохранность введенных пользователем данных и корректное закрытие активной сессии. Рекомендуемые шаги для завершения работы:
1. Убедитесь, что все незавершенные действия пользователя (заполнение форм, оформление заказа, обмен сообщениями) сохранены или отправлены.
2. При необходимости завершите активный звонок или консультацию корректно, используя соответствующие элементы управления приложения.
3. Закройте приложение стандартными средствами операционной системы (iOS или Android).
4. При необходимости выйдите из учетной записи пользователя через раздел профиля, что приведет к очистке сессионных данных на устройстве.
5. Периодически проверяйте наличие обновлений приложения в App Store, Google Play или RuStore для обеспечения актуальности и безопасности используемой версии.