- FastAPI - фреймворк для создания API на Python
- SQLAlchemy - ORM для работы с базой данных
- PostgreSQL - СУБД
- Docker - контейнеризация приложения
- Pydantic - валидация данных
- PyJWT - работа с JWT-токенами
auth\auth_ops.py- функции для работы с авторизациейdatabase\crud.py- функции для работы с базой данныхmodels.py- модели таблиц базы данныхschemas.py- схемы для валидации данныхdatabase.py- настройка и инициализация базы данных
routes\admin.py- маршруты для администратораusers.py- маршруты для пользователейroutes.py- общие маршруты (для отладки)webhooks.py- маршруты для вебхуков
main.py- основной файл приложенияDockerfile, docker-compose.yml, .dockerignore- файлы для сборки и конфигурации образа Dockerrequirements.txt- список зависимостейREADME.md- описание проекта
- Склонировать репозиторий:
git clone https://github.com/lanebo1/DimaTech_Test.git- Перейти в папку проекта:
cd DimaTech_Test- Активировать виртуальное окружение:
python -m venv venv
source venv/bin/activate- Установить зависимости:
pip install -r requirements.txt- Запустить проект:
uvicorn main:app --reload- Перейти по адресу:
http://localhost:8000/docs
- Использовать Swagger для тестирования API
- Повтроить пункты 1-4 из предыдущего раздела
- Собрать образ Docker:
docker build -t dimatech-test .- Запустить контейнер:
docker run -d --name dimatech-test -p 8000:8000 dimatech-test- Повторить пункты 6-7 из предыдущего раздела
- Регистрация обычного пользователя (
/create_user)
{
"email": "user@example.com",
"full_name": "user_name",
"password": "user_password",
"is_admin": false
}- Регистрация администратора (
/create_user)
{
"email": "admin@example.com",
"full_name": "admin_name",
"password": "admin_password",
"is_admin": true
}-
Авторизация (
ипользовать значок закрытого замка (Authorize) в Swagger):Заполнить поля username и password -> нажать Authorize -> пользователь авторизован
-
Создание вебхука (
/generate-webhook)-
Создание транзакции генерируя новый счет пользователя:
Заполнить поле user_id -> нажать Execute -> в ответе будет сгенерированный счет
-
Создание транзакции в уже имеющийся счет пользователя:
Заполнить поля user_id и user_account_id -> нажать Execute -> в ответе будет сгенерированный счет
-
-
Обработка вебхука (
/webhook)Вставить в тело запроса вебхук созданный в пункте 4 -> нажать Execute -> в ответе будет обработанный вебхук
-
Проверка показателей пользвателя (
/user/...) (доступно только обычному пользователю, для авторизации использовать пункт 3)- Получение информации о пользователе (
/user/me) - Получение информации о всех аккаунтах (счетах) пользователя (
/user/accounts) - Получение информации о всех транзакциях пользователя (
/user/payments)
- Получение информации о пользователе (
-
Проверка показателей админа (
/admin/...) (доступно только администратору, для авторизации использовать пункт 3)- Получение информации о всех пользователях (
GET /admin/users) - Создание нового пользователя (
POST /admin/users) - Удаление пользователя (
DELETE /admin/users/{user_id}) - Изменение пользователя (
PUT /admin/users/{user_id}) - Получение информации о всех аккаунтах конкретного пользователя (
GET /admin/users/{user_id}/accounts)
- Получение информации о всех пользователях (