# Техническое задание для ИИ агента по реализации системы авторизации, регистрации и экстренных оповещений ## Промпт для ИИ Ты — ИИ агент-разработчик, специализирующийся на интеграции клиентской части приложения для женской безопасности с бэкендом на микросервисной архитектуре. Твоя задача — реализовать систему авторизации, регистрации и экстренных оповещений на основе предоставленных API-эндпоинтов. ## Общие требования 1. Создай модули для работы с авторизацией и регистрацией пользователей 2. Реализуй механизм хранения и обновления токенов доступа 3. Разработай интерфейс для экстренных оповещений 4. Обеспечь надежную обработку ошибок и восстановление соединения 5. Следуй современным практикам безопасности при работе с API ## Часть 1: Система авторизации и регистрации ### Эндпоинты для работы #### Регистрация - **URL**: `/api/v1/auth/register` - **Метод**: `POST` - **Требуемые поля**: - email (string) - username (string) - password (string) - first_name (string) - last_name (string) - phone (string) - **Обработка ответа**: Создать локальный профиль пользователя и перенаправить на экран авторизации #### Авторизация - **URL**: `/api/v1/auth/login` - **Метод**: `POST` - **Требуемые поля**: - username (string) или email (string) - password (string) - **Обработка ответа**: Сохранить полученный токен доступа и refresh token #### Обновление токена - **URL**: `/api/v1/auth/refresh` - **Метод**: `POST` - **Требуемые поля**: - refresh_token (string) - **Обработка ответа**: Обновить сохраненный токен доступа #### Выход из системы - **URL**: `/api/v1/auth/logout` - **Метод**: `POST` - **Заголовки**: Authorization: Bearer {token} - **Обработка ответа**: Удалить все локальные данные аутентификации ### Функциональные требования 1. **Валидация данных**: - Проверка корректности формата email - Проверка надежности пароля (минимум 8 символов, одна заглавная буква, одна цифра, один специальный символ) - Валидация номера телефона (международный формат) 2. **Хранение данных**: - Безопасное хранение токенов доступа (использовать Secure Storage) - Автоматическое обновление токенов при истечении срока действия 3. **Обработка ошибок**: - Четкие сообщения об ошибках для пользователя - Автоматические повторные попытки при проблемах с сетью - Логирование ошибок для отладки ## Часть 2: Экстренные оповещения ### Эндпоинты для работы #### Создание экстренного оповещения - **URL**: `/api/v1/emergency/alert` - **Метод**: `POST` - **Заголовки**: Authorization: Bearer {token} - **Требуемые поля**: - location (object): { latitude: float, longitude: float } - message (string, optional): Дополнительная информация - **Обработка ответа**: Отобразить статус отправки и ID оповещения #### Получение статуса экстренного оповещения - **URL**: `/api/v1/emergency/alert/{alert_id}` - **Метод**: `GET` - **Заголовки**: Authorization: Bearer {token} - **Обработка ответа**: Обновить интерфейс с информацией о статусе оповещения #### Отмена экстренного оповещения - **URL**: `/api/v1/emergency/alert/{alert_id}/cancel` - **Метод**: `POST` - **Заголовки**: Authorization: Bearer {token} - **Требуемые поля**: - reason (string, optional): Причина отмены - **Обработка ответа**: Обновить статус оповещения в интерфейсе ### Функциональные требования 1. **Интерфейс экстренных оповещений**: - Кнопка SOS, заметная и легко доступная - Подтверждение перед отправкой для предотвращения случайных активаций - Индикатор статуса активного оповещения - Возможность отмены оповещения 2. **Геолокация**: - Автоматическое получение местоположения пользователя - Периодическое обновление координат при активном оповещении - Отправка обновлений локации на сервер 3. **Уведомления**: - Push-уведомления о статусе экстренного оповещения - Звуковые сигналы при изменении статуса - Вибрация для незаметного активирования 4. **Отказоустойчивость**: - Кэширование данных для работы офлайн - Повторная отправка при восстановлении соединения - Локальное хранение истории экстренных вызовов ## Технические требования 1. **Архитектура**: - Использовать паттерн MVVM или Redux для управления состоянием - Разделить код на модули по функциональности - Инкапсулировать работу с API в отдельный сервис 2. **Безопасность**: - Шифрование хранимых данных - Проверка SSL-сертификатов - Защита от CSRF и других уязвимостей 3. **Производительность**: - Минимизировать использование ресурсов - Оптимизировать сетевые запросы - Эффективное управление жизненным циклом приложения 4. **Тестирование**: - Модульные тесты для каждого компонента - Интеграционные тесты для проверки взаимодействия с API - UI-тесты для проверки пользовательского интерфейса ## Ожидаемые результаты 1. Полностью функциональная система авторизации и регистрации 2. Интерфейс для экстренных оповещений с полной интеграцией API 3. Документация по архитектуре и интеграции 4. Покрытие кода тестами не менее 80% ## Ограничения и особые требования 1. Приложение должно работать на устройствах с API 21 и выше (Android) или iOS 12 и выше 2. Учитывать различные размеры экрана и ориентации 3. Обеспечить доступность для людей с ограниченными возможностями 4. Минимальное потребление батареи даже при использовании геолокации ## Примечания 1. Все взаимодействия с API должны учитывать возможные задержки и проблемы с сетью 2. Система должна быть протестирована на восстановление при потере соединения 3. Пользовательский интерфейс должен быть интуитивно понятным и легким в использовании 4. Все действия, связанные с безопасностью, должны логироваться для аудита