first commit
Some checks failed
CI/CD Pipeline / Run Tests (push) Failing after 0s
CI/CD Pipeline / Code Quality Checks (push) Failing after 1m43s
CI/CD Pipeline / Build Docker Images (push) Has been skipped
CI/CD Pipeline / Push to Gitea Registry (push) Has been skipped

This commit is contained in:
2026-01-21 12:07:35 +01:00
commit e9d7f24aaa
102 changed files with 13890 additions and 0 deletions

149
Makefile Normal file
View File

@@ -0,0 +1,149 @@
# Makefile для удобной работы с проектом
.PHONY: help install dev-up dev-down test lint format migrate createsuperuser shell
help:
@echo "Доступные команды:"
@echo ""
@echo "🔧 Установка и настройка:"
@echo " make install - Установка зависимостей"
@echo ""
@echo "🐳 Docker управление:"
@echo " make dev-up - Запуск разработческого окружения (Docker)"
@echo " make dev-down - Остановка разработческого окружения"
@echo " make logs - Просмотр логов (Docker)"
@echo ""
@echo "🧪 Тестирование:"
@echo " make test - Запуск тестов (по умолчанию все)"
@echo " Примеры:"
@echo " make test # Все тесты"
@echo " make test TARGET=user # Только user app"
@echo " make test TARGET=test_models # Только модели"
@echo ""
@echo "🔍 Качество кода:"
@echo " make lint - Проверка кода линтерами"
@echo " make format - Форматирование кода"
@echo " make type-check - Проверка типов"
@echo " make security-check - Проверка безопасности"
@echo " make pre-commit - Запуск pre-commit hooks"
@echo ""
@echo "🗄️ База данных:"
@echo " make migrate - Выполнение миграций Django"
@echo " make createsuperuser - Создание суперпользователя"
@echo ""
@echo "🛠️ Утилиты:"
@echo " make shell - Запуск Django shell"
@echo " make setup-dev - Настройка окружения разработки"
@echo " make clean - Очистка временных файлов"
install:
uv pip install -r requirements.txt
uv pip install -r requirements-dev.txt
dev-up:
docker-compose up -d
@echo "Сервисы запущены. Приложение доступно по адресу: http://localhost:8000"
dev-down:
docker-compose down
# Универсальная команда для тестирования с поддержкой аргументов
# Использование:
# make test # Все тесты
# make test TARGET=user # Тесты user app
# make test TARGET=models # Тесты моделей
# make test TARGET=views # Тесты представлений
# make test TARGET=serializers # Тесты сериализаторов
# make test TARGET=services # Тесты сервисов
test:
@if [ "$(TARGET)" ]; then \
echo "🧪 Запуск тестов: $(TARGET)"; \
python run_tests_simple.py $(TARGET); \
else \
echo "🧪 Запуск всех тестов..."; \
python run_tests_simple.py; \
fi
lint:
@echo "🔍 Проверка кода линтерами..."
ruff check src/
black --check src/
isort --check-only src/
@echo "✅ Линтинг завершен"
format:
@echo "🎨 Форматирование кода..."
black src/
isort src/
ruff check --fix src/
@echo "✅ Форматирование завершено"
migrate:
@echo "🗄️ Выполнение миграций..."
cd src && python manage.py makemigrations
cd src && python manage.py migrate
createsuperuser:
@echo "👤 Создание суперпользователя..."
cd src && python manage.py createsuperuser
shell:
@echo "🐚 Запуск Django shell..."
cd src && python manage.py shell
logs:
@echo "📋 Просмотр логов..."
docker-compose logs -f
# Дополнительные команды для тестирования
test-cov:
@echo "🧪 Запуск тестов с покрытием..."
python run_tests_simple.py --coverage
test-fast:
@echo "🚀 Быстрые тесты (без медленных)..."
python run_tests_simple.py --fast
test-parallel:
@echo "⚡ Параллельный запуск тестов..."
python run_tests_simple.py --parallel=auto
test-failfast:
@echo "❌ Тесты с остановкой при первой ошибке..."
python run_tests_simple.py --failfast
# Дополнительные команды для качества кода
type-check:
@echo "🔍 Проверка типов с mypy..."
mypy src/
security-check:
@echo "🔒 Проверка безопасности..."
bandit -r src/ -f json -o bandit-report.json || bandit -r src/
pre-commit:
@echo "🔧 Запуск pre-commit hooks..."
pre-commit run --all-files
# Установка и настройка
setup-dev:
@echo "⚙️ Настройка окружения разработки..."
pre-commit install
@echo "✅ Окружение настроено"
clean:
@echo "🧹 Очистка временных файлов..."
find . -type f -name "*.pyc" -delete
find . -type d -name "__pycache__" -delete
rm -rf *.log
rm -rf htmlcov/
rm -rf .coverage
rm -rf coverage.xml
rm -rf bandit-report.json
rm -rf .pytest_cache/
rm -rf .mypy_cache/
rm -rf tests/__pycache__/
rm -rf tests/apps/__pycache__/
rm -rf tests/apps/user/__pycache__/
@echo "✅ Очистка завершена"