Асинхронное REST API приложение для управления счетами и платежами.
- Python 3.12 + Sanic
- PostgreSQL 16
- SQLAlchemy (async)
- Docker Compose
| Роль | Password | |
|---|---|---|
| Пользователь | user@example.com | user123 |
| Администратор | admin@example.com | admin123 |
docker compose up --buildПриложение будет доступно на http://localhost:8000.
- PostgreSQL (запущенный на localhost:5432)
- Python 3.12+
- pip
# 1. Создать базу данных
createdb dimatech
# 2. Установить зависимости
pip install -r requirements.txt
# 3. Настроить .env (или использовать переменные окружения)
cp .env_example .env
cp alembic.ini_example alembic.ini
# Отредактировать DATABASE_URL при необходимости или задайте переменные окружения другим способом
# 4. Запустить приложение
python -m app.main��аза данных и таблицы создаются автоматически при запуске приложения (через Base.metadata.create_all).
POST /api/v1/auth/login— авторизация (email, password) → token
GET /api/v1/users/me— данные пользователяGET /api/v1/users/me/accounts— список счетов с балансамиGET /api/v1/users/me/payments— список платежей
GET /api/v1/admin/users— список пользователейPOST /api/v1/admin/users— создание пользователяPUT /api/v1/admin/users/<id>— обновление пользователяDELETE /api/v1/admin/users/<id>— удаление пользователяGET /api/v1/admin/users/<id>/accounts— счета пользователя
POST /api/v1/webhook/payment— обработка платежа
{
"transaction_id": "5eae174f-7cd0-472c-bd36-35660f00132b",
"user_id": 1,
"account_id": 1,
"amount": 100,
"signature": "7b47e41efe564a062029da3367bde8844bea0fb049f894687cee5d57f2858bc8"
}curl -X POST http://localhost:8000/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"email": "user@example.com", "password": "user123"}'Ответ:
{"token": "eyJ...", "user": {"id": 1, "email": "user@example.com", ...}}Использование токена:
curl http://localhost:8000/api/v1/users/me \
-H "Authorization: Bearer eyJ..."