klg-asutk-app/Makefile

115 lines
5.0 KiB
Makefile
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# КЛГ АСУ ТК — Makefile
# Полный цикл: установка → миграции → запуск → тесты → деплой
.PHONY: help install dev prod migrate test test-be test-e2e lint docker-up docker-down clean fgis-sync
help: ## Показать справку
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'
# ─── Установка ────────────────────────────────
install: ## Установить зависимости (backend + frontend)
cd backend && pip install -r requirements.txt --break-system-packages
npm install
# ─── Development ──────────────────────────────
dev: ## Запустить в режиме разработки
@echo "🔧 Starting development servers..."
docker compose up postgres redis -d
@sleep 3
$(MAKE) migrate
cd backend && uvicorn app.main:app --reload --host 0.0.0.0 --port 8000 &
npm run dev &
@echo "✅ Backend: http://localhost:8000"
@echo "✅ Frontend: http://localhost:3000"
@echo "✅ API Docs: http://localhost:8000/docs"
# ─── Production ───────────────────────────────
prod: ## Запустить production (Docker)
docker compose up -d --build
@echo "✅ Production запущен"
@echo " Frontend: http://localhost:3000"
@echo " Backend: http://localhost:8000"
@echo " Keycloak: http://localhost:8080"
prod-monitoring: ## Production + мониторинг
docker compose --profile monitoring up -d --build
# ─── Миграции ─────────────────────────────────
migrate: ## Применить миграции БД
@echo "📦 Applying migrations..."
@for f in backend/migrations/*.sql; do \
echo "$$f"; \
PGPASSWORD=klg psql -h localhost -U klg -d klg -f "$$f" 2>/dev/null || true; \
done
@echo "✅ Migrations applied"
# ─── Тесты ────────────────────────────────────
test: test-be test-e2e ## Запустить все тесты
test-be: ## Backend тесты (pytest)
cd backend && python -m pytest -v --tb=short
test-e2e: ## E2E тесты (Playwright)
npx playwright test
test-coverage: ## Тесты с покрытием
cd backend && python -m pytest --cov=app --cov-report=html
# ─── Линтинг ──────────────────────────────────
lint: ## Проверка кода
cd backend && python -m ruff check app/
npm run lint
format: ## Форматирование кода
cd backend && python -m ruff format app/
npm run format
# ─── ФГИС РЭВС ───────────────────────────────
fgis-sync: ## Ручная синхронизация с ФГИС РЭВС
@echo "🔄 Syncing with ФГИС РЭВС..."
curl -s -X POST http://localhost:8000/api/v1/fgis-revs/sync/all \
-H "Authorization: Bearer $$(cat .token 2>/dev/null || echo test)" \
| python3 -m json.tool
@echo "✅ Sync complete"
fgis-status: ## Статус подключения к ФГИС РЭВС
curl -s http://localhost:8000/api/v1/fgis-revs/connection-status \
-H "Authorization: Bearer $$(cat .token 2>/dev/null || echo test)" \
| python3 -m json.tool
# ─── Docker ───────────────────────────────────
docker-up: ## Docker: запустить инфраструктуру
docker compose up -d postgres redis minio keycloak
docker-down: ## Docker: остановить всё
docker compose down
docker-logs: ## Docker: логи backend
docker compose logs -f backend
docker-rebuild: ## Docker: пересобрать
docker compose up -d --build --force-recreate backend frontend
# ─── Утилиты ──────────────────────────────────
clean: ## Очистка временных файлов
find . -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true
rm -rf .next node_modules/.cache backend/.pytest_cache
health: ## Проверка здоровья
@echo "Backend:"
@curl -s http://localhost:8000/api/v1/health | python3 -m json.tool
@echo "\nDetailed:"
@curl -s http://localhost:8000/api/v1/health/detailed | python3 -m json.tool
backup-db: ## Бэкап БД
@mkdir -p backups
PGPASSWORD=klg pg_dump -h localhost -U klg klg > backups/klg_$$(date +%Y%m%d_%H%M%S).sql
@echo "✅ Backup saved to backups/"
restore-db: ## Восстановить БД из последнего бэкапа
@LATEST=$$(ls -t backups/*.sql 2>/dev/null | head -1); \
if [ -n "$$LATEST" ]; then \
PGPASSWORD=klg psql -h localhost -U klg -d klg < "$$LATEST"; \
echo "✅ Restored from $$LATEST"; \
else echo "❌ No backups found"; fi