generated from Sithas/conan_template
Второй и половина третьего UseCase'а
This commit is contained in:
@@ -20,26 +20,26 @@
|
||||
#### А1.Пользователь с таким логином уже есть в системе
|
||||
* Процедура регистрации проваливается
|
||||
* Выводится нотификация с сообщением об ошибке по причине наличия такого же логина в системе
|
||||
#### А2.Пользователь оставил пустым логин или пароль
|
||||
* При попытке регистрации подсвечиваются незаполненные поля
|
||||
#### А2.Пользователь оставил пустым логин или пустой/неправильный пароль
|
||||
* При попытке регистрации подсвечиваются незаполненные поля, или поле пароля, если пароль неправильный
|
||||
* Выводится сообщение об ошибке
|
||||
### 7.Постусловия
|
||||
* Пользователь с указанным логином сохранен в БД
|
||||
### 8.Маршруты
|
||||
* `/api/v1/auth/register` - Регистрация пользователя
|
||||
### 8.API-Маршруты
|
||||
* `POST /api/v1/Auth/Register` - Регистрация пользователя
|
||||
### 9.Контракт
|
||||
#### Request
|
||||
#### Register-Request
|
||||
```
|
||||
{
|
||||
"login": "ivan_89",
|
||||
"password": "S3cureP@ssw0rd"
|
||||
}
|
||||
```
|
||||
#### Требования к валидации:
|
||||
##### Требования к валидации:
|
||||
* login: 3-50 символов, [a–z0–9._-], уникальное значение
|
||||
* password: ≥ 8 символов
|
||||
* password: ≥ 5 символов
|
||||
|
||||
#### Response - 201 - Created
|
||||
##### Response - 201 - Created
|
||||
```
|
||||
{
|
||||
"user": {
|
||||
@@ -48,13 +48,13 @@
|
||||
}
|
||||
```
|
||||
|
||||
#### Errors
|
||||
* `409 USER_EXISTS` — пользователь с таким логином уже есть
|
||||
* `422 VALIDATION_FAILED` — пустой логин/неправильный пароль
|
||||
##### Errors
|
||||
* `409 USER_EXISTS` — пользователь с таким логином уже есть(`A1`)
|
||||
* `422 VALIDATION_FAILED` — пустой логин/неправильный пароль(`A2`)
|
||||
* `400 BAD_REQUEST` — сервер не смог десереализовать JSON
|
||||
|
||||
### 10. Используемые сущности ДБ
|
||||
* users(guid, login, hashed_password)
|
||||
* users(guid(PK), login(unique), hashed_password)
|
||||
|
||||
## UseCase №2
|
||||
### 1.Название: Авторизация пользователя
|
||||
@@ -79,6 +79,46 @@
|
||||
### 7.Постусловия
|
||||
* Сессия пользователя в виде токена сохраняется на сервере
|
||||
* Пользователь перенаправлен на основную страницу, где выводится его дневник болезни
|
||||
### 8.API-Маршруты
|
||||
* `POST /api/v1/Auth/Login` - Вход пользователя в систему и получение токена
|
||||
* `POST /api/v1/Auth/Logout` - Отозвать токен и выйти из системы.
|
||||
### 9.Контракт
|
||||
#### Login-Request
|
||||
```
|
||||
{
|
||||
"login": "ivan_89",
|
||||
"password": "S3cureP@ssw0rd"
|
||||
}
|
||||
```
|
||||
##### Response - 200 - OK
|
||||
```
|
||||
{
|
||||
"token": af32df3bas739f272bd109c823
|
||||
"expiresIn": 36000000 // 10 часов
|
||||
}
|
||||
```
|
||||
|
||||
##### Errors
|
||||
* `401 BAD_CREDENTIALS` — неверный логин/пароль (А1)
|
||||
* `422 VALIDATION_FAILED` — пустые поля (А2)
|
||||
|
||||
#### Logout-Request
|
||||
```
|
||||
{
|
||||
"login": "ivan_89",
|
||||
"password": "S3cureP@ssw0rd"
|
||||
}
|
||||
```
|
||||
##### Response - 200 - OK
|
||||
```
|
||||
{
|
||||
"token": af32df3bas739f272bd109c823
|
||||
"expiresIn": 36000000 // 10 часов
|
||||
}
|
||||
```
|
||||
|
||||
### 10. Используемые сущности ДБ
|
||||
* users(guid(PK), login(unique), hashed_password)
|
||||
|
||||
## UseCase №3
|
||||
### 1.Название: Вход в систему
|
||||
@@ -100,6 +140,50 @@
|
||||
### 7.Постусловия
|
||||
* Пользователь видит свои последние записи и может по ним кликнуть, чтобы увидеть подробную информацию
|
||||
* Пользователю доступны операции добавления, модификации и удаления записей, а также схем лечения
|
||||
### 8.API-Маршруты
|
||||
* `GET /api/v1/User/Diaries` - получить кусок дневника пользователя (требует Authorization: Bearer <token>) query-параметры: from (int, по умолч. 0), count (int, по умолч. 20)
|
||||
* `GET /api/v1/User/TreatmentSchemes` - получить кусок дневника пользователя (требует Authorization: Bearer <token>) query-параметры: from (int, по умолч. 0), count (int, по умолч. 20)
|
||||
|
||||
### 9.Контракт
|
||||
#### Diaries-Request
|
||||
##### Response - 200 - OK
|
||||
```
|
||||
{
|
||||
diaries: [
|
||||
{
|
||||
"guid": "e89b6a0c-4b0f-4722-a410-1e0c1864bf8a",
|
||||
"time": "10.08.2025",
|
||||
"mania_level": 1,
|
||||
"depression_level": 2,
|
||||
"mood_level": 3,
|
||||
"activity_level": 4,
|
||||
"appetite_level": 5,
|
||||
"dream_level": 6,
|
||||
"anxiety_level": 7,
|
||||
"treatment_scheme": {
|
||||
"guid": "bf6d1555-39e9-4d73-8928-4763627f4dd5"
|
||||
"treatment_name": "Bipolar I Scheme"
|
||||
"medications": [
|
||||
{
|
||||
"guid": "8af2dfa9-3add-413c-9a0e-ff605088f1d5",
|
||||
"name": "Litii Carbonate",
|
||||
"dose": 1800,
|
||||
"unit": "mg",
|
||||
"is_urgent": false
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
##### Errors
|
||||
* `401 TOKEN_REQUIRED|TOKEN_EXPIRED` — токен недействителен, либо отсутствует
|
||||
* `500 DATA_LOAD_FAILED` — ошибка при загрузке данных (А2)
|
||||
|
||||
### 10. Используемые сущности ДБ
|
||||
* users(guid(PK), login(unique), hashed_password)
|
||||
|
||||
## UseCase №4
|
||||
### 1.Название: Просмотр схемы лечения
|
||||
|
||||
@@ -4,7 +4,7 @@ CREATE SCHEMA `up_and_down` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
|
||||
|
||||
CREATE TABLE `up_and_down`.`users` (
|
||||
`guid` CHAR(36) NOT NULL,
|
||||
`login` VARCHAR(128) NOT NULL,
|
||||
`login` VARCHAR(128) UNIQUE NOT NULL,
|
||||
`hashed_password` TEXT NOT NULL,
|
||||
PRIMARY KEY (`guid`),
|
||||
UNIQUE INDEX `guid_UNIQUE` (`guid` ASC)
|
||||
@@ -86,7 +86,7 @@ CREATE TABLE `up_and_down`.`medications` (
|
||||
|
||||
CREATE TABLE `up_and_down`.`treatment_schemes` (
|
||||
`guid` CHAR(36) NOT NULL,
|
||||
`treatnent_name` TEXT NOT NULL,
|
||||
`treatment_name` TEXT NOT NULL,
|
||||
`medication_guid` CHAR(36) NOT NULL,
|
||||
PRIMARY KEY (`guid`),
|
||||
FOREIGN KEY (`medication_guid`) REFERENCES `medications`(`guid`)
|
||||
|
||||
Reference in New Issue
Block a user