ТЗ
Александр# Техническое задание на разработку мобильного приложения под 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 года.