Второй и половина третьего UseCase'а

This commit is contained in:
Антон
2025-08-19 05:58:20 +03:00
parent 95f2737cad
commit 48fd51d01c
2 changed files with 98 additions and 14 deletions
+96 -12
View File
@@ -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.Название: Просмотр схемы лечения
+2 -2
View File
@@ -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`)