diff --git a/Makefile b/Makefile index 5ccd6d2..0cab025 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ CHANGE ?= slice-0-skeleton # Текущая версия модели данных — по ней рисуются диаграммы (make diagrams) DBML ?= model/data-model-v5.18.dbml -.PHONY: venv validate-contracts validate-openspec test-snapshot test-sync-web test-sync-statements sync-web check diagrams +.PHONY: venv validate-contracts validate-openspec test-snapshot test-sync-web test-sync-statements sync-web sync-statements statements-check check diagrams # Зависимости скриптов проверки контракта — jsonschema и PyYAML (перечни кодов форм contracts/statement-code-orders.yaml) venv: @@ -38,7 +38,18 @@ test-sync-statements: sync-web: scripts/sync-web.sh $(SYNC_ARGS) -check: validate-contracts validate-openspec test-snapshot test-sync-web +# Копия пакета arm_statements в хост одной командой (worktree, issue, PR); SYNC_ARGS="--host arm-core [--check|--dry-run|--in-place]" +sync-statements: + STATEMENTS_PY=$(PY) scripts/sync-statements.sh $(SYNC_ARGS) + +# Обзор свежести копий во всех хостах; в check не входит — читает соседние репозитории. +# Коды 0 и 10 — зелёные, любой другой — цель завершается кодом 1 после проверки всех трёх хостов. +statements-check: + @rc=0; for h in arm-core tabular-parser scan-gateway; do \ + STATEMENTS_PY=$(PY) scripts/sync-statements.sh --check --host $$h || { c=$$?; [ $$c -eq 10 ] || rc=1; }; \ + done; exit $$rc + +check: validate-contracts validate-openspec test-snapshot test-sync-web test-sync-statements # Диаграммы model/diagrams/part01…09.{svg,png} из $(DBML); нужен npx (Node.js), зависимостей Python нет diagrams: diff --git a/dev/checks.md b/dev/checks.md index caf5c65..8fb4c63 100644 --- a/dev/checks.md +++ b/dev/checks.md @@ -133,7 +133,10 @@ PR убедитесь, что `docs` и `fixtures` доступны (пропу | `make venv` | `.venv` (Python 3.11, `uv`) с `jsonschema` — единственной зависимостью скриптов | | `make validate-contracts` | `python scripts/validate_contracts.py`: примеры `contracts/examples/` против трёх схем JSON Schema 2020-12 (3 схемы, 8 примеров); код 1 при любой ошибке | | `make validate-openspec` | `openspec validate slice-0-skeleton --strict` (другое изменение: `make validate-openspec CHANGE=`) | -| `make check` | обе проверки выше | +| `make check` | все проверки выше и `test-snapshot`, `test-sync-web`, `test-sync-statements` | +| `make test-sync-statements` | сценарии `sync-statements.sh` на синтетических репозиториях: коды `--check`, `--in-place`, `--dry-run`, отказ при прямой правке | +| `make sync-statements` | копия пакета `arm_statements` в хост одной командой (worktree, issue, PR); `SYNC_ARGS="--host arm-core [--check\|--dry-run\|--in-place]"` | +| `make statements-check` | обзор свежести копий по трём хостам рядом (`arm-core`, `tabular-parser`, `scan-gateway`): строка итога на хост; в `check` не входит | Без `make`: `python scripts/validate_contracts.py` (нужен `jsonschema`) и `openspec validate --strict`. Менять `contracts/**` нужно осознанно: байтовые копии схем лежат в `api/contracts/` каждого сервиса, после правки их