SHELL := /bin/bash .DEFAULT_GOAL := help # Detect whether `docker compose` v2 or `docker-compose` v1 is available COMPOSE := $(shell command -v docker-compose 2>/dev/null || echo "docker compose") .PHONY: help init pull-models up down restart logs status clean test deploy help: ## Показать эту справку @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf " \033[36m%-15s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST) init: ## Создать .env из .env.example (если его нет) @if [ ! -f .env ]; then \ cp .env.example .env && \ echo "Created .env from .env.example"; \ echo "==> Edit .env with real secrets, then run: make deploy"; \ else \ echo ".env already exists, skipping"; \ fi pull-models: ## Загрузить модели (rsync + fallback на download_models.py) @bash scripts/pull_models.sh up: ## Запустить контейнеры (build + -d) $(COMPOSE) up --build -d @$(COMPOSE) logs --tail=30 transcription || true down: ## Остановить контейнеры $(COMPOSE) down restart: ## Перезапустить transcription $(COMPOSE) restart transcription logs: ## Логи transcription (follow) $(COMPOSE) logs -f transcription status: ## Статус контейнеров $(COMPOSE) ps @echo "" @cmd /c "curl -s http://localhost:8000/api/health" 2>/dev/null || \ curl -s http://localhost:8000/api/health || \ echo "(service not responding on :8000)" clean: ## Удалить контейнеры + volumes (ОСТОРОЖНО: стирает uploads/processed/data) $(COMPOSE) down -v test: ## Прогнать pytest pytest tests/ -q deploy: pull-models up ## Полный деплой: модели + запуск