generated from Sithas/conan_template
Второй и половина третьего UseCase'а
This commit is contained in:
@@ -20,26 +20,26 @@
|
|||||||
#### А1.Пользователь с таким логином уже есть в системе
|
#### А1.Пользователь с таким логином уже есть в системе
|
||||||
* Процедура регистрации проваливается
|
* Процедура регистрации проваливается
|
||||||
* Выводится нотификация с сообщением об ошибке по причине наличия такого же логина в системе
|
* Выводится нотификация с сообщением об ошибке по причине наличия такого же логина в системе
|
||||||
#### А2.Пользователь оставил пустым логин или пароль
|
#### А2.Пользователь оставил пустым логин или пустой/неправильный пароль
|
||||||
* При попытке регистрации подсвечиваются незаполненные поля
|
* При попытке регистрации подсвечиваются незаполненные поля, или поле пароля, если пароль неправильный
|
||||||
* Выводится сообщение об ошибке
|
* Выводится сообщение об ошибке
|
||||||
### 7.Постусловия
|
### 7.Постусловия
|
||||||
* Пользователь с указанным логином сохранен в БД
|
* Пользователь с указанным логином сохранен в БД
|
||||||
### 8.Маршруты
|
### 8.API-Маршруты
|
||||||
* `/api/v1/auth/register` - Регистрация пользователя
|
* `POST /api/v1/Auth/Register` - Регистрация пользователя
|
||||||
### 9.Контракт
|
### 9.Контракт
|
||||||
#### Request
|
#### Register-Request
|
||||||
```
|
```
|
||||||
{
|
{
|
||||||
"login": "ivan_89",
|
"login": "ivan_89",
|
||||||
"password": "S3cureP@ssw0rd"
|
"password": "S3cureP@ssw0rd"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
#### Требования к валидации:
|
##### Требования к валидации:
|
||||||
* login: 3-50 символов, [a–z0–9._-], уникальное значение
|
* login: 3-50 символов, [a–z0–9._-], уникальное значение
|
||||||
* password: ≥ 8 символов
|
* password: ≥ 5 символов
|
||||||
|
|
||||||
#### Response - 201 - Created
|
##### Response - 201 - Created
|
||||||
```
|
```
|
||||||
{
|
{
|
||||||
"user": {
|
"user": {
|
||||||
@@ -48,13 +48,13 @@
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Errors
|
##### Errors
|
||||||
* `409 USER_EXISTS` — пользователь с таким логином уже есть
|
* `409 USER_EXISTS` — пользователь с таким логином уже есть(`A1`)
|
||||||
* `422 VALIDATION_FAILED` — пустой логин/неправильный пароль
|
* `422 VALIDATION_FAILED` — пустой логин/неправильный пароль(`A2`)
|
||||||
* `400 BAD_REQUEST` — сервер не смог десереализовать JSON
|
* `400 BAD_REQUEST` — сервер не смог десереализовать JSON
|
||||||
|
|
||||||
### 10. Используемые сущности ДБ
|
### 10. Используемые сущности ДБ
|
||||||
* users(guid, login, hashed_password)
|
* users(guid(PK), login(unique), hashed_password)
|
||||||
|
|
||||||
## UseCase №2
|
## UseCase №2
|
||||||
### 1.Название: Авторизация пользователя
|
### 1.Название: Авторизация пользователя
|
||||||
@@ -79,6 +79,46 @@
|
|||||||
### 7.Постусловия
|
### 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
|
## UseCase №3
|
||||||
### 1.Название: Вход в систему
|
### 1.Название: Вход в систему
|
||||||
@@ -100,6 +140,50 @@
|
|||||||
### 7.Постусловия
|
### 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
|
## UseCase №4
|
||||||
### 1.Название: Просмотр схемы лечения
|
### 1.Название: Просмотр схемы лечения
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ CREATE SCHEMA `up_and_down` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
|
|||||||
|
|
||||||
CREATE TABLE `up_and_down`.`users` (
|
CREATE TABLE `up_and_down`.`users` (
|
||||||
`guid` CHAR(36) NOT NULL,
|
`guid` CHAR(36) NOT NULL,
|
||||||
`login` VARCHAR(128) NOT NULL,
|
`login` VARCHAR(128) UNIQUE NOT NULL,
|
||||||
`hashed_password` TEXT NOT NULL,
|
`hashed_password` TEXT NOT NULL,
|
||||||
PRIMARY KEY (`guid`),
|
PRIMARY KEY (`guid`),
|
||||||
UNIQUE INDEX `guid_UNIQUE` (`guid` ASC)
|
UNIQUE INDEX `guid_UNIQUE` (`guid` ASC)
|
||||||
@@ -86,7 +86,7 @@ CREATE TABLE `up_and_down`.`medications` (
|
|||||||
|
|
||||||
CREATE TABLE `up_and_down`.`treatment_schemes` (
|
CREATE TABLE `up_and_down`.`treatment_schemes` (
|
||||||
`guid` CHAR(36) NOT NULL,
|
`guid` CHAR(36) NOT NULL,
|
||||||
`treatnent_name` TEXT NOT NULL,
|
`treatment_name` TEXT NOT NULL,
|
||||||
`medication_guid` CHAR(36) NOT NULL,
|
`medication_guid` CHAR(36) NOT NULL,
|
||||||
PRIMARY KEY (`guid`),
|
PRIMARY KEY (`guid`),
|
||||||
FOREIGN KEY (`medication_guid`) REFERENCES `medications`(`guid`)
|
FOREIGN KEY (`medication_guid`) REFERENCES `medications`(`guid`)
|
||||||
|
|||||||
Reference in New Issue
Block a user