# Команды разработки scan-gateway. Запуск из корня репозитория; рецепты сами переходят в api/ (как и в arm-core), # поэтому backend-команды работают с каталогом api/ и окружением api/.venv. VENV := api/.venv BIN := $(CURDIR)/$(VENV)/bin # docs/dev — соседний репозиторий и в основном workspace, и в worktree .wt/<срез>/ COMPOSE_FILE ?= ../docs/dev/docker-compose.yml COMPOSE_PROJECT ?= arm-ka .PHONY: help venv lint test test-integration check check-full up emulator help: @echo "venv - окружение api/.venv (Python 3.11) с зависимостями без raisa_*" @echo "lint - ruff check, ruff format --check, mypy src" @echo "test - pytest без интеграционных тестов" @echo "test-integration - интеграционные тесты (нужны NATS и MinIO: make up)" @echo "check - lint + test" @echo "check-full - check + test-integration" @echo "up - поднять NATS/MinIO/PostgreSQL общим compose-проектом arm-ka" @echo "emulator - запустить эмулятор ИС Сканирование (python -m src.scan_emulator)" # Python 3.11 (версия платформы); внутренние пакеты raisa_* вне банка недоступны — пропускаем их venv: cd api && uv venv --python 3.11 --allow-existing .venv cd api && grep -v '^raisa_' 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 test: cd api && $(BIN)/pytest -m "not integration" test-integration: cd api && $(BIN)/pytest -m integration check: lint test # Полная проверка перед PR. Сборку docker-образа добавит задача 15 check-full: check test-integration # Общий compose-проект workspace (arm-ka): его используют и другие сервисы, поэтому целей down/stop/restart нет. # --wait — только со списком долгоживущих сервисов: одноразовый minio-init завершается кодом 0, и compose считает это сбоем up: docker compose -f $(COMPOSE_FILE) --project-name $(COMPOSE_PROJECT) up -d --wait postgres nats minio # Эмулятор ИС Сканирование: модуль появится в задаче 9 emulator: cd api && $(BIN)/python -m src.scan_emulator