Ядро сверки перенесено из tests/dbml_parity.py в scripts/dbml_parity.py (единственная реализация, R-14); tests/dbml_parity.py и dbml_helpers.py — тонкие обёртки с пропуском теста без docs. Единый формат строк: `<объект>: ожидалось X / фактически Y`, `<объект>: отсутствует в ORM|DBML`; тип и nullability — одной строкой в нотации DBML. Версия из шапки DBML сверяется с DBML_VERSION до сравнения таблиц. Коды: 0/1/2. Без рабочего .env скрипт берёт api/.env.example. Makefile: dbml-check (в check-full), mypy проверяет scripts. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
47 lines
1.7 KiB
Makefile
47 lines
1.7 KiB
Makefile
# Команды разработки 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 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)
|
||
|
||
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
|