- О проекте
- Начало работы
- Работа с базой данных
- Разработка
- CI/CD и деплой
- Запуск приложения
- Справочник команд Makefile
Tabit — онлайн-сервис для HR-специалистов и собственников компаний, который помогает:
- 📊 Измерять эмоциональный климат в компании
- 🔍 Выявлять выгорающих сотрудников
- 💡 Обнаруживать внутренние проблемы компании
- 📈 Отслеживать ключевые показатели (текучесть кадров, уровень конфликтности и доверия)
Требования к окружению: Python 3.12 или выше.
Poetry — это инструмент для управления зависимостями и виртуальными окружениями Python. В проекте Poetry является обязательным для разработки.
🔽 Установка Poetry
Следуйте официальной инструкции или используйте один из способов:
Через pip:
pip install poetry==1.7.1 # Последняя стабильная версия 1.x
Для UNIX-систем и WSL:
curl -sSL https://install.python-poetry.org | python - --version 1.7.1
Для Windows PowerShell:
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python - --version 1.7.1
⚠️ Примечание: Рекомендуется использовать версию 1.x, так как версия 2.x может иметь отличия в командах и работе.
poetry --version
⚠️ Примечание: Если poetry не найден, добавьте путь установки в переменную PATH вашей системы.
-
Настройте создание виртуального окружения в папке проекта:
poetry config virtualenvs.in-project true
-
Установите зависимости проекта:
poetry install
🔽 Работа с Poetry
В Poetry 1.x:
poetry shell
В Poetry 2.x:
В версии 2.0.0 и выше команда poetry shell
не доступна по умолчанию. Используйте один из следующих методов:
# Рекомендуемый способ: активация окружения
poetry env activate
# Альтернатива: установка плагина shell
poetry self add poetry-plugin-shell
poetry shell
# Или напрямую активируйте окружение
source .venv/bin/activate # Linux/macOS
.venv\Scripts\activate.bat # Windows cmd
.venv\Scripts\Activate.ps1 # Windows PowerShell
📘 Подробнее в документации: Poetry: Activating the environment
poetry run <команда>
Примеры:
poetry run python src/main.py
poetry run pytest
poetry run ruff format
Добавление основной зависимости:
poetry add <имя_пакета>
Добавление зависимости для разработки:
poetry add <имя_пакета> --dev
Обновление зависимостей:
poetry update
🔽 Настройка pre-commit
-
Проверьте, что pre-commit установлен:
pre-commit --version
-
Настройте git hook:
pre-commit install
После настройки при каждом коммите будет автоматически запускаться проверка линтером и форматирование кода.
🔽 Способ 1: Установка с использованием WSL (рекомендуется)
-
Откройте PowerShell от имени администратора и выполните:
wsl --install
-
Перезагрузите компьютер и завершите настройку Ubuntu.
-
Подробная инструкция доступна по ссылке: Установка и настройка WSL
-
Установите Docker Desktop:
# Скачайте и установите с официального сайта: https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe
-
Установите VS Code с расширением Remote - WSL.
-
Установите Make в WSL:
sudo apt update sudo apt install make
-
Установите Poetry в WSL:
curl -sSL https://install.python-poetry.org | python3 - --version 1.7.1
-
Клонируйте репозиторий:
git clone git@github.com:Studio-Yandex-Practicum/Tabit.git cd Tabit
-
Настройте Poetry:
poetry config virtualenvs.in-project true poetry install
-
Активируйте виртуальное окружение:
source .venv/bin/activate # или poetry shell
-
Запустите приложение:
make up # Запуск контейнера с БД # Если миграции уже существуют: make apply-migrations # Применение существующих миграций # Если это первая инициализация: make init-db # Создание и применение начальных миграций make create-superuser # Создание суперпользователя make fill-db # Заполнение тестовыми данными make run # Запуск приложения
🔽 Способ 2: Установка на чистом Windows
-
Установите Chocolatey (менеджер пакетов для Windows):
Set-ExecutionPolicy Bypass -Scope Process -Force [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072 iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
-
Установите Make:
choco install make
-
Установите Docker Desktop:
# Скачайте и установите с официального сайта: https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe
-
Установите Python:
# Скачайте и установите с официального сайта: https://www.python.org/downloads/
-
Клонируйте репозиторий:
git clone git@github.com:Studio-Yandex-Practicum/Tabit.git cd Tabit
-
Установите и настройте Poetry:
pip install poetry==1.7.1 poetry config virtualenvs.in-project true poetry install
-
Активируйте виртуальное окружение:
.venv\Scripts\activate.bat # для cmd .venv\Scripts\Activate.ps1 # для PowerShell
-
Запустите приложение:
make up # Запуск контейнера с БД # Если миграции уже существуют: make apply-migrations # Применение существующих миграций # Если это первая инициализация: make init-db # Создание и применение начальных миграций make create-superuser # Создание суперпользователя make fill-db # Заполнение тестовыми данными make run # Запуск приложения
⚠️ Примечание: На чистом Windows могут возникнуть проблемы совместимости. Если столкнетесь с ошибками, рекомендуется перейти на WSL.
Для работы с базой данных создайте файл .env
в корне проекта на уровне с директорией src
.
Пример всех необходимых параметров можно найти в файле
.env.example
.
# Настройки БД
POSTGRES_USER=warlock # Имя пользователя БД
POSTGRES_PASSWORD=zTudS8LBSquBMwvS3ky5 # Пароль к БД
POSTGRES_DB=tabit # Название БД
PORT_BD_POSTGRES=5432 # Порт для подключения к БД
DB_TYPE=postgresql # Тип базы данных
DB_API=asyncpg # API для работы с БД
DB_HOST=localhost # Хост для подключения к БД
Актуальная ER-диаграмма базы данных доступна по ссылке
🔽 Подключение к БД через DBeaver
- Скачайте и установите DBeaver
- Создайте новое подключение (
Ctrl+Shift+N
) - Выберите PostgreSQL
- Введите параметры подключения:
- Хост: localhost
- Порт: 5433 (или порт, указанный в
.env
) - База данных: tabit (или имя, указанное в
.env
) - Пользователь: warlock (или имя, указанное в
.env
) - Пароль: (указанный в
.env
)
- Нажмите "Тест соединения", затем "Готово"
🔽 Работа с pgAdmin
pgAdmin — веб-интерфейс для управления PostgreSQL. В проекте доступен через контейнер Docker по адресу http://localhost:5600/
-
Добавьте в
.env
файл переменные:PGADMIN_DEFAULT_EMAIL=admin@email.com PGADMIN_DEFAULT_PASSWORD=admin
-
Запустите контейнер с pgAdmin:
make up-pgadmin
или
docker compose -f infra/docker-compose.local-with-pgadmin.yaml up -d
-
Откройте в браузере http://localhost:5600/
⚠️ Важно: Инициализация pgAdmin может занять до 8 минут (особенно на HDD).
Остановка контейнеров:
make down-pgadmin
Удаление контейнеров и томов:
make down-pgadmin-volumes
🔽 Git-процесс в проекте
master
— production-ready код, используется для CI/CDdev
— предрелизная ветка с рабочим и выверенным кодом
- Новые ветки всегда создаются от ветки
dev
- Названия веток:
feature/название-функционала
— для нового функционалаbugfix/название-багфикса
— для исправления ошибок
- Создайте новую ветку от
dev
- Внесите необходимые изменения
- Отправьте ветку в репозиторий
- Откройте Pull Request в ветку
dev
- Добавьте ссылку на PR в соответствующую задачу в Kaiten
🔽 Система логирования
В проекте доступны два типа логирования:
- Автоматическое логирование запросов через middleware
- Ручное логирование через функцию
logger
-
Импортируйте логгер:
from src.logger import logger
-
Добавьте логи нужного уровня:
logger.trace('Трассировочное сообщение') logger.debug('Отладочное сообщение') logger.info('Информационное сообщение') logger.success('Сообщение об успехе') logger.warning('Предупреждение') logger.error('Сообщение об ошибке') logger.critical('Критическая ошибка')
Уровень логирования задается в .env
переменной LOG_LEVEL
. Доступные уровни:
- TRACE
- DEBUG
- INFO
- SUCCESS
- WARNING
- ERROR
- CRITICAL
🔽 Проверка качества кода
В проекте используется Ruff для форматирования и проверки кода.
- Максимальная длина строки: 99 символов
- Исключены из проверки: директории "alembic"
- Проверки: "E" (ошибки), "F" (предупреждения), "I" (импорты)
- Стиль строк: одинарные кавычки
- Импорты: с учетом внутренних модулей
src
poetry run ruff check .
poetry run ruff format .
В проекте настроены следующие автоматизированные процессы:
Workflow | Описание | Триггер |
---|---|---|
build_and_push.yaml | Сборка и публикация образа Docker | При необходимости |
pytest.yaml | Запуск тестов | Push в репозиторий |
ruff.yml | Проверка кода линтерами | Push, Pull Request |
stage_deploy.yaml | Деплой на Stage-окружение | Push в определенную ветку |
🔽 Конфигурации Docker
-
Только база данных
make up # Запуск make down # Остановка
-
База данных с pgAdmin
make up-pgadmin # Запуск make down-pgadmin # Остановка
-
Полное окружение
make up-dc # Запуск make down-dc # Остановка make logs-dc # Просмотр логов
Конфигурация для Stage расположена в директории infra/stage
:
docker-compose.stage.yaml
— конфигурация Docker Composestage.Dockerfile
— Dockerfile для сборки образаtabit.service
— Systemd-сервис для запуска на сервере
🔽 Процесс деплоя
Деплой на Stage-окружение выполняется через GitHub Action workflow stage_deploy.yaml
:
- Сборка Docker-образа
- Публикация образа в GitHub Container Registry
- Подключение к stage-серверу по SSH
- Загрузка конфигурационных файлов
- Запуск/перезапуск приложения через Systemd
Для работы деплоя необходимы следующие секреты в репозитории GitHub:
STAGE_HOST
— хост stage-сервераSTAGE_SSH_KEY
— приватный SSH-ключSTAGE_SSH_USER
— пользователь для SSHSTAGE_SSH_PASSWORD
— пароль для SSH (если используется)
python src/main.py [опции]
--reload
или-r
— отслеживание изменений в коде--host
или-h
— указание хоста (по умолчанию 127.0.0.1)--port
или-p
— указание порта (по умолчанию 8000)--create-superuser
или-c
— создание суперпользователя
python src/main.py -r -h 127.0.0.1 -p 1234
- Заполните
.env
параметрами (примеры из .env.example):
FIRST_SUPERUSER_EMAIL=yandex@yandex.ru # Почта
FIRST_SUPERUSER_PASSWORD=Password123 # Пароль (мин. 8 символов)
FIRST_SUPERUSER_NAME=Ип # Имя
FIRST_SUPERUSER_SURNAME=Ман # Фамилия
- Запустите:
python src/main.py -c
или
make create-superuser
🔽 Локальное тестирование CI/CD
Создайте файл .env
в корне проекта с необходимыми переменными (см. .env.example
)
make up-dc
make logs-dc
make migrate-dc
make down-dc
🔽 Docker Compose команды
Команда | Описание |
---|---|
make up |
Запуск контейнеров в фоновом режиме |
make down |
Остановка и удаление контейнеров |
make logs |
Вывод логов всех контейнеров |
make up-pgadmin |
Запуск контейнеров с pgAdmin |
make down-pgadmin |
Остановка контейнеров с pgAdmin |
make down-pgadmin-volumes |
Остановка и удаление volumes |
make up-dc |
Запуск полного окружения |
make down-dc |
Остановка полного окружения |
make logs-dc |
Просмотр логов полного окружения |
🔽 Миграции и база данных
Команда | Описание |
---|---|
make init-migrations |
Создание новой миграции с автогенерацией |
make auto-migration m='commit' |
Создание миграции с указанным именем |
make empty-migration m='commit' |
Создание пустой миграции |
make apply-migrations |
Применение всех миграций |
make migrate-dc |
Выполнение миграций в контейнере |
make clean-volumes |
Удаление Docker volumes |
make reset-db |
Сброс базы и применение миграций |
make init-db |
Запуск контейнеров и создание структуры БД |
🔽 Запуск и тестовые данные
Команда | Описание |
---|---|
make run |
Запуск приложения с Uvicorn на порту 8000 |
make create-superuser |
Создание суперпользователя |
make fill-db |
Заполнение БД фейковыми данными |
make fill-companies |
Создание 5 фейковых компаний |
make fill-company-users |
Создание 5 фейковых сотрудников компаний |
make fill-tabit-admin-users |
Создание 5 фейковых сотрудников платформы |
make fill-company-departments |
Создание компании с 5 департаментами |
make fill-license-type |
Создание 5 лицензий для компаний |