# Команды разработки tabular-parser. Backend — api/.venv; запуск из корня репозитория. VENV := api/.venv BIN := $(CURDIR)/$(VENV)/bin COMPOSE_FILE ?= ../docs/dev/docker-compose.yml .PHONY: venv lint test test-integration test-fixtures golden-update golden-check check docker-build check-full up statements-check # 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 arm_statements test: cd api && $(BIN)/pytest -m "not integration" test-integration: cd api && $(BIN)/pytest -m integration # Тесты на реальных данных из ../fixtures (ARM_KA_FIXTURES): golden-снимки, покрытие словарей, property-тест test-fixtures: cd api && $(BIN)/pytest -m fixtures # Golden-снимки разбора ОСВ: перезапись в ../fixtures/golden/expected_osv_parse/ + unified diff изменившихся. # Результат обязательно просмотреть и коммитить в репозиторий fixtures отдельным коммитом (снимок — регрессия, не оракул) golden-update: cd api && ENV_FILE=.env.test $(BIN)/python scripts/golden_update.py # То же без записи: код возврата 1, если снимки расходятся с разбором golden-check: cd api && ENV_FILE=.env.test $(BIN)/python scripts/golden_update.py --check check: lint test # Сборка образа из корня репозитория docker-build: docker build -t tabular-parser . # Полная проверка перед PR: быстрые проверки, затем NATS/MinIO из compose (make up), затем образ check-full: check statements-check test-integration docker-build # Только инфраструктура, нужная сервису (без arm-core): NATS и MinIO; postgres — для общей среды compose up: docker compose -f $(COMPOSE_FILE) up -d --wait postgres nats minio # Свежесть копии api/arm_statements/ (../docs/dev/checks.md): 0 — синхронна; 10 — отстала или перечень кодов в docs # новее (цель зелёная, предупреждение вписать в описание PR); 20 и 2 — красная. Читает ../docs и ../arm-statements, # поэтому только в check-full, не в check ARM_KA_DOCS ?= ../docs statements-check: @rc=0; $(ARM_KA_DOCS)/scripts/sync-statements.sh --check --host-dir . || rc=$$?; \ if [ $$rc -eq 10 ]; then echo "statements-check: ПРЕДУПРЕЖДЕНИЕ — впишите в описание PR"; \ elif [ $$rc -ne 0 ]; then exit $$rc; fi