ТЗ

ТЗ

Александр


# Техническое задание на разработку мобильного приложения под OS Aurora


## 1. Введение


Разработка мобильного приложения под OS Aurora для сбора, управления и безопасного хранения личных данных пользователя с использованием Bitwarden Public API. Через данное клиентское приложение пользователь будет хранить: пароли, логины, информацию о банковских картах, личную информацию, а также защищенные заметки. Приложение должно обеспечить пользователям удобный, надёжный и безопасный доступ к данным.


## 2. Функциональные требования


### 2.1 **Авторизация и Регистрация**


1. **Возможность авторизации:**   

- Вход в приложение с использованием учетной записи Bitwarden.

- Ввод email адреса и мастер-пароля.

- Предоставление подсказки к паролю.

- Переход на страницу ввода мастер-пароля после ввода email.

- Переход на страницу со списком записей после успешной авторизации.

- При ошибке получения токена через api необходимо отобразить соответсвующее уведомление.


2. **Возможность регистрации :**

- Регистрация новой учетной записи Bitwarden.

- Обязательные поля: email адрес, мастер-пароль, повторный мастер-пароль.

- Необязательные поля: подсказка к мастер-паролю.

- Минимальная длина мастер-пароля - 12 символов.

- Отображение уровня надежности пароля.

- Уведомление о успешной регистрации и переход на страницу ввода мастер-пароля.


### 2.2 **Управление настройками учетной записи**


1. **Безопасность аккаунта:**

- Возможность настройки ПИН-кода для входа в приложение.

- Возможность настройки входа с использованием биометрии (отпечаток пальца).

- Блокировка акканта (переход на страницу ввода мастер-пароля).

- Выход из аккаунта.

- Удаление акканта.


2. **Настроки хранилища:**

- Создание новых папок для хранения информации. Изменение имени выделенной папки

- Импорт элементов. Импортировать данные в хранилище можно через веб-приложение.

- Экспорт хранилища. Возможные форматы: json, csv, json (encrypted). Для осуществеления этого действия требуется ввод мастер-пароля.


3. **Прочее:**

- Пользователь должен иметь возможность включить синхронизацию жестом. При включении синхронизация осуществляется жестом смахивания вниз.

- Возможность синхронизации "вручную" по нажатию на кнопку "Синхронизовать".

- Отоброжать время последней синхронизации.


4. **Информация о приложении:**

- Отображать номер актуальной версии сборки.


### 2.3 **Управление Записями**


1. **Просмотр записей:**

- Просмотр записей в соответствии с одним из типов элементов. Типы элементов: логин, карта, личная информация, защищенная заметка. 

- Просмотр созданых папок, с последующим переходом в них для просмотра записей.

- Отображать записи без папки.

- Возможность перехода в папку "Корзина".

- Рядом с каждой папкой отображается количетсво элементов, которые она содержит.

- Для элеменетов без папки на главном экране доступны следующие действия: Просмотр, Изменение.


2. **Просмотра информации о конкретной записи:**

- Для записи типа "Логин" отображаются слудующие поля: Название, Имя пользователя, Пароль.

- Для записи типа "Карта" отображаются слудующие поля: Название, Имя владельца карты, Номер, Тип карты, Срок действия, Код безопасности.

- Для записи типа "Личная информация" отображаются заполненые поля из следующих: Название, Имя (обращение + имя, фамилия, отчество), Имя пользователя, Компания, Номер социального страхования, Номер паспорта, ИНН, Email, Телефон, Адрес.

- Для записи типа "Защищенная заметка" отображаются слудующие поля: Название, Заметки.

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

- На эране просмотра элемента доступны действия: Клонировать, Удалить.

- При действии "Удалить" должно отображаться всплывающее окно с подтверждением действия. 

- При действии "Клонировать" происходит переход на экран добавления записи.

- Для каждого элемента должно отображаться время обновления записи.


3. **Добавление новой записи:**

- Осуществляется при нажатии на кнопку на главном эране.

- Осуществляется при нажатии на кнопку внутри папки или типа элемента при отсутвии какой-либо записи.

- В открывшейся странице добавления есть возможность выбрать: Тип (Логин, Карта, Личная информация, Зашифрованные заметки), Название, Заполнения строк спицифичных для отдельных типов записи.

- Выбрать папку для размещения новой записи.

- Включить требование повторного ввода мастер-пароля.

- Добавление записи в избранное.

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


4. **Редактирование существующей записи:**

- Осуществляется при нажатии системной кнопки при просмотре информации об элементе.

- Редактируются все возможные поля для данного типа записи.


5. **Генерации пароля:**

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

- Для генерации пароля указываются слудующие параметры: Тип пароля (пароль, парольная фраза), Длина, Прописные буквы, Строчные буквы, Цифры, Специальные символы, Минимум цифр, Минимум, Возможность избегать неоднозначных символов.


6. **Возможность удаления записи**

- Данная возможность должна быть доступна на страницах: Просмотр элемента, Изменение элемента. 

- При действие "Удаление" элемент помещается в папку "Корзина".

- При действии "Удалить" должно отображаться всплывающее окно с подтверждением действия. 


7. **Перемещение элемента в "Корзину"**

- При нажатии на элемент данной папки происходит открытие экрана "Просмотр элемента".

- На экране просмотра элемента доступны следующие дейсвия: Восстановить, Клонировать, Удалить.

- При действии "Удалить" должно отображаться всплывающее окно с подтверждением действия. 

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


### 2.4 **Синхронизация и Оффлайн-режим**


1. **Синхронизация:**

- При обновлении экрана "Хранилище".

- При нажатии на кнопку на экране "Настройки".

- При данном действии происходит синхронизация с сервером через соответствующий запрос.


2. **Оффлайн-режим:**

- Возможность просмотра всех типов записей в оффлайн-режиме.

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

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


### 2.5 **Экраны Приложения**


- Страница авторизации.

- Страница регистрации.

- Страница ввода мастер-пароля.

- Страница смены пользователя.

- Страница со списком записей. 

- Страница для просмотра информации о конкретной записи.

- Страница с формами для добавления новой записи. 

- Страница с формами для редактирования существующей записи.

- Страница генератора паролей.

- Страница с настройками безопасности (вход по PIN-коду, биометрия).

- Страница с настройками синхронизации.


### 2.6 **Сетевые Операции**


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


## 3. Требования к Безопасности


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

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

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

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

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

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


## 4. Нефункциональные требования


1. **Язык программирования, фреймворк:**

- С++, Фреймворк Qt


2. **Операционная система:**

- Aurora OS


3. **Дизайн интерфейса:**

- Интерфейс должен быть интуитивно понятным и соответствовать стандартам дизайна Aurora OS.

- Использование иконок представленных в Aurora UI Kit. 


4. **Стабильность:** 

- Приложение должно быть стабильным и не вызывать сбоев.


5. **Совместимость:**

- Приложение должно корректно работать с Bitwarden Public API.


## 5. Тестирование


- Провести тестирование функционала, включая сценарии авторизации, регистрации, добавления/редактирования/удаления записей, синхронизации и прочих основных операций.


## 6. Заключение


1. **Сроки:** 

- Разработка должна быть завершена до Апреля 2024 года.

Report Page