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   ## Полный деплой: модели + запуск
