arm-core/Makefile
Andrey Epifancev 2db0a66a86 feat(models): DBML v5.19 — колонки форм, document_issue, file_ordinal, crm_id ГСК (миграция 0007)
Модели и upgrade ревизии 0007_dbml_v5_19: пять enum'ов, колонки строк/значений/колонок/шапок форм,
document.file_ordinal (уникален в файле, уникальность типа только для не-форм), recognition_job.statements_version,
related_group.crm_id, таблица document_issue; заполнение по умолчанию (row_index, needs_review, header_source и др.).
delete_file_statements удаляет document_issue; make_document берёт следующий file_ordinal; маппер пока нумерует
документы по порядку создания. downgrade — заглушка (задача A2).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 19:04:40 +04:00

76 lines
3.9 KiB
Makefile
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Команды разработки 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.19.dbml
.PHONY: venv lint test test-integration e2e dbml-check migration-cycle check check-infra docker-build web-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"
# e2e (профиль services, реальный tabular-parser) идёт отдельной целью `e2e`, поэтому здесь исключён
test-integration:
cd api && $(BIN)/pytest -m "integration and not e2e"
# Сквозной прогон загрузки ОСВ (Срез 2c): нужны compose-инфраструктура и сервис tabular-parser из профиля `services`
# (README, «Сквозной прогон (e2e)»); без профиля тест пропускается с причиной «профиль services не поднят», код 0
e2e:
cd api && $(BIN)/pytest -m e2e -rs
# Сверка 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. Входит в test-integration, отдельно запускается для быстрой проверки миграций
migration-cycle:
cd api && $(BIN)/pytest -m integration tests/test_migrations.py
check: lint test
# Быстрая проверка доступности PostgreSQL и NATS из api/.env.test (порты compose); иначе — подсказка поднять инфраструктуру
check-infra:
cd api && $(BIN)/python scripts/check_infra.py
# Сборка образа из корня репозитория (Dockerfile — бэкенд)
docker-build:
docker build -t arm-core .
# Фронт: установка зависимостей (raisa-* без Nexus пропускаются как optionalDependencies), biome, типы, сборка
web-check:
cd web && npm install
cd web && npx biome check src
cd web && npx tsc --noEmit
cd web && npm run build
# Полная проверка перед PR. Порядок: быстрые без БД (check, dbml-check), затем БД/NATS из compose (test-integration),
# затем docker, затем web. Цикл миграций upgrade -> downgrade -> upgrade на чистой БД входит в test-integration
# (tests/test_migrations.py), поэтому отдельным шагом не гоняется: второй запуск только удлинил бы прогон. e2e — после
# test-integration; без профиля `services` пропускается (не падает)
check-full: check dbml-check check-infra test-integration e2e docker-build web-check
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