build: копия arm_statements в линтерах и тестах, statements-check в check-full (#44)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
56c0f01d86
commit
5e031fde7a
@ -13,6 +13,8 @@
|
||||
старт — запись файла во «Входящие». **Нет доступа к БД.**
|
||||
|
||||
## Правила
|
||||
- `api/arm_statements/` — копия пакета `arm-statements`, напрямую не править: обновление — `../docs/scripts/sync-statements.sh`
|
||||
(`--in-place` в PR фичи), свежесть — `make statements-check` (в `check-full`).
|
||||
- Нормализация по фактическим ответам `../fixtures/ocr/aep_*.json`, а не по ТЗ (OQ-13, OQ-14), по `05-domain-rules.md`
|
||||
§11 и §11.1: правило, которого там нет, не реализуется, а поднимается вопросом. Функции очистки
|
||||
(`src/normalizer/ocr/`) перенесены из старого ядра **дословно** (единственное исключение для `reference-old-arm`):
|
||||
|
||||
17
Makefile
17
Makefile
@ -6,17 +6,19 @@ BIN := $(CURDIR)/$(VENV)/bin
|
||||
COMPOSE_FILE ?= ../docs/dev/docker-compose.yml
|
||||
COMPOSE_PROJECT ?= arm-ka
|
||||
IMAGE ?= scan-gateway:dev
|
||||
ARM_KA_DOCS ?= ../docs
|
||||
|
||||
.PHONY: help venv lint test test-integration check docker-build check-full up emulator golden-update
|
||||
.PHONY: help venv lint test test-integration check docker-build check-full statements-check up emulator golden-update
|
||||
|
||||
help:
|
||||
@echo "venv - окружение api/.venv (Python 3.11) с зависимостями без raisa_*"
|
||||
@echo "lint - ruff check, ruff format --check, mypy src"
|
||||
@echo "lint - ruff check, ruff format --check, mypy src arm_statements"
|
||||
@echo "test - pytest без интеграционных тестов"
|
||||
@echo "test-integration - интеграционные тесты (нужны NATS и MinIO: make up)"
|
||||
@echo "check - lint + test"
|
||||
@echo "docker-build - собрать docker-образ $(IMAGE) (контекст — корень репозитория)"
|
||||
@echo "check-full - check + test-integration + docker-build (по порядку, до первой ошибки)"
|
||||
@echo "statements-check - свежесть копии api/arm_statements (sync-statements --check), входит в check-full"
|
||||
@echo "up - поднять NATS/MinIO/PostgreSQL общим compose-проектом arm-ka и создать бакет (minio-init)"
|
||||
@echo "emulator - запустить эмулятор ИС Сканирование (python -m src.scan_emulator)"
|
||||
@echo "golden-update - пересобрать эталоны нормализатора ../fixtures/ocr/expected_normalize/ (diff смотреть в fixtures)"
|
||||
@ -30,7 +32,7 @@ venv:
|
||||
lint:
|
||||
cd api && $(BIN)/ruff check .
|
||||
cd api && $(BIN)/ruff format --check .
|
||||
cd api && $(BIN)/mypy src
|
||||
cd api && $(BIN)/mypy src arm_statements
|
||||
|
||||
test:
|
||||
cd api && $(BIN)/pytest -m "not integration"
|
||||
@ -49,6 +51,7 @@ docker-build:
|
||||
# так порядок check -> test-integration -> docker-build и остановка на первой ошибке гарантированы и при make -j.
|
||||
check-full:
|
||||
$(MAKE) check
|
||||
$(MAKE) statements-check
|
||||
$(MAKE) test-integration
|
||||
$(MAKE) docker-build
|
||||
|
||||
@ -67,3 +70,11 @@ emulator:
|
||||
# Эталоны нормализатора на реальных ответах ИС: пишет ../fixtures/ocr/expected_normalize/<name>.json; diff смотреть в fixtures
|
||||
golden-update:
|
||||
cd api && $(BIN)/python -m tests.golden_update
|
||||
|
||||
# Свежесть копии api/arm_statements/ (../docs/dev/checks.md): 0 — синхронна; 10 — отстала или перечень кодов в docs
|
||||
# новее (цель зелёная, предупреждение вписать в описание PR); 20 и 2 — красная. Читает ../docs и ../arm-statements,
|
||||
# поэтому только в check-full, не в check
|
||||
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
|
||||
|
||||
@ -12,7 +12,7 @@ select = ["E", "F", "I", "UP", "B", "PL"]
|
||||
"tests/**" = ["PLR2004"]
|
||||
|
||||
[tool.ruff.lint.isort]
|
||||
known-first-party = ["src"]
|
||||
known-first-party = ["src", "arm_statements"]
|
||||
|
||||
[tool.mypy]
|
||||
python_version = "3.11"
|
||||
@ -22,10 +22,11 @@ plugins = ["pydantic.mypy"]
|
||||
mypy_path = "."
|
||||
explicit_package_bases = true
|
||||
|
||||
# Строгий режим для собственного кода сервиса (`src`). `strict = true` в overrides mypy (2.x) применяется глобально,
|
||||
# Строгий режим для собственного кода сервиса (`src`) и копии общего кода (arm_statements: sync-statements, не править —
|
||||
# в строгом режиме, как в репозитории arm-statements). `strict = true` в overrides mypy (2.x) применяется глобально,
|
||||
# а не к модулю, поэтому флаги семейства strict перечислены явно.
|
||||
[[tool.mypy.overrides]]
|
||||
module = ["src.contract.*", "src.core.clients", "src.core.health", "src.core.nats", "src.core.worker", "src.gateway.*", "src.normalizer.*", "src.scan_emulator.*"]
|
||||
module = ["src.contract.*", "src.core.clients", "src.core.health", "src.core.nats", "src.core.worker", "src.gateway.*", "src.normalizer.*", "src.scan_emulator.*", "arm_statements", "arm_statements.*"]
|
||||
disallow_any_generics = true
|
||||
disallow_subclassing_any = true
|
||||
disallow_untyped_calls = true
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
pythonpath = .
|
||||
testpaths =
|
||||
tests
|
||||
arm_statements/tests
|
||||
python_files =
|
||||
test_*.py
|
||||
tests*.py
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user