# Команды разработки arm-core. Backend — api/.venv; запуск из корня репозитория.
VENV := api/.venv
BIN := $(CURDIR)/$(VENV)/bin
COMPOSE_FILE ?= ../docs/dev/docker-compose.yml
# DBML относительно api/: и в основном workspace, и в worktree .wt/<срез>/ это соседний docs/
DBML ?= ../../docs/model/data-model-v5.13.dbml

.PHONY: venv lint test test-integration dbml-check migration-cycle check check-full up migrate seed seed-dev

# Python 3.11 (версия платформы); внутренние пакеты raisa_* вне банка недоступны — пропускаем их
venv:
	cd api && uv venv --python 3.11 --allow-existing .venv
	cd api && grep -v '^raisa_' requirements.txt | uv pip install --python .venv/bin/python -r -
	cd api && grep -v '^-r' requirements-dev.txt | uv pip install --python .venv/bin/python -r -

lint:
	cd api && $(BIN)/ruff check .
	cd api && $(BIN)/ruff format --check .
	cd api && $(BIN)/mypy src scripts

test:
	cd api && $(BIN)/pytest -m "not integration"

test-integration:
	cd api && $(BIN)/pytest -m integration

# Сверка ORM с DBML (spec data-model): пустой вывод и код 0 — совпадение
dbml-check:
	cd api && $(BIN)/python scripts/check_dbml_vs_orm.py $(DBML)

# Миграции на временной БД (spec data-model): upgrade head -> downgrade base -> upgrade head, пустой autogenerate,
# схема после миграции = create_all ORM. Подключается в check-full (задача 25)
migration-cycle:
	cd api && $(BIN)/pytest -m integration tests/test_migrations.py

check: lint test

# TODO (задача 25): добавить фронт (lint/test/build web/), проверку миграций с нуля и откат, актуальность OpenAPI
check-full: check dbml-check test-integration

up:
	docker compose -f $(COMPOSE_FILE) up -d

migrate:
	cd api && $(BIN)/alembic upgrade head

seed:
	cd api && $(BIN)/python -m scripts.seed

seed-dev:
	cd api && $(BIN)/python -m scripts.seed --dev
