Files
WellShe/docs/auth_emergency_system_requirements.md

160 lines
9.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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