160 lines
9.1 KiB
Markdown
160 lines
9.1 KiB
Markdown
# Техническое задание для ИИ агента по реализации системы авторизации, регистрации и экстренных оповещений
|
||
|
||
## Промпт для ИИ
|
||
|
||
Ты — ИИ агент-разработчик, специализирующийся на интеграции клиентской части приложения для женской безопасности с бэкендом на микросервисной архитектуре. Твоя задача — реализовать систему авторизации, регистрации и экстренных оповещений на основе предоставленных 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. Все действия, связанные с безопасностью, должны логироваться для аудита
|