Микросервис для счетчиков статистики. Сервис взаимодействует с клиентом при помощи REST API запросов.
-
- date — дата события
str
- views — количество показов
int
- clicks — количество кликов
int
- cost — стоимость кликов (в рублях с точностью до копеек)
float
Поля views, clicks и cost — опциональные.
- date — дата события
-
- from — дата начала периода (включительно)
- to — дата окончания периода (включительно)
- sort_by — сортировка по выбранному полю в ответе (опционально)
Дата передается в формате
YYYY-MM-DD
Отвечает статистикой, отсортированной по дате. В ответе поля:
- date — дата события
- views — количество показов
- clicks — количество кликов
- cost — стоимость кликов
- cpc — cost/clicks (средняя стоимость клика)
- cpm — cost/views * 1000 (средняя стоимость 1000 показов)
-
Удаляет всю сохраненную статистику.
- FastAPI — фреймворк.
- PostgreSQL — база данных приложения.
- SQLAlchemy — ORM.
- Pydantic — для сериализации.
- Alembic — для миграций.
- pytest + pytest-asyncio — для асинхронных тестов.
- Docker — контейнеризация приложения.
- Склонируйте репозиторий:
git clone https://github.com/blakkheart/statistic_test_task.git
- Перейдите в директорию проекта:
cd statistic_test_task
- Установите и активируйте виртуальное окружение:
- Windows
python -m venv venv .\venv\Scripts\activate
- Linux/macOS
python3 -m venv venv source venv/bin/activate
- Обновите pip:
- Windows
(venv) python -m pip install --upgrade pip
- Linux/macOS
(venv) python3 -m pip install --upgrade pip
- Установите зависимости из файла requirements.txt:
(venv) pip install -r backend/requirements.txt
Создайте и заполните файл .env
по примеру с файлом .env.example
, который находится в корневой директории.
- Введите команду для запуска докер-контейнера:
docker compose up
- Примените миграции:
docker compose exec backend alembic upgrade head
Сервер запустится по адресу 127.0.0.1:8000
Вы можете посмотреть документацию по адресу 127.0.0.1:8000/docs
Также можно прогнать тесты с помощью команды:
docker compose exec backend pytest