fix(generator): усилены проверки startup-history

- Зачем:
  - коммит-гейт не запускал корневые контрактные тесты, а часть подтверждённых обходов могла снова смешать разные миры генератора.
- Что:
  - добавлены цели make test, make lint и contract-test с тихим pytest-выводом через Docker.
  - закрыты обходы через generator-reset, неизвестную версию state и fail-open проверку DM-витрин.
  - усилены поведенческие контракты CHECK_LIVE_SEAM, профиля manifest и pause-check etl_pipeline; обновлены документы и issue 19.
- Проверка:
  - make test; make lint; git diff --check.
This commit is contained in:
2026-07-05 22:46:53 +03:00
parent 0faa5cc219
commit 9b0b063fed
18 changed files with 346 additions and 59 deletions
+16 -9
View File
@@ -176,24 +176,25 @@ make generator-backfill
# Продолжить live-поток из state
make generator-continue
# Начать live-поток как новый мир
# Начать live-поток как новый мир на чистом стенде
make generator-reset
# Чистый аналитический прогон всего стенда
make generated-history-analytics
# Запуск тестов
make generator-test
# Быстрые проверки перед коммитом
make test
make lint
```
Основной ручной путь запуска — глаголы `generator-backfill`, `generator-continue`
и `generator-reset`. Старые `GEN_RUN_MODE`, `GEN_STATE_RESET` и
`GEN_MODEL_T_END` остаются низкоуровневым способом для отладки.
`generator-backfill` и `startup-history-import` перед записью проверяют, что
Kafka data-топики и STG пустые. `generator-continue` продолжает только
совместимый state; старый формат state при `GEN_STATE_RESET=false` даёт отказ с
подсказкой очистить стенд или явно начать новый мир.
`generator-backfill`, `startup-history-import` и `generator-reset` перед записью
проверяют, что Kafka data-топики и STG пустые. `generator-continue` продолжает
только совместимый state; старый формат state при `GEN_STATE_RESET=false` даёт
отказ с подсказкой очистить стенд или явно начать новый мир на чистом стенде.
## Метрики Prometheus
@@ -351,16 +352,22 @@ GEN_STATE_ENABLED=false docker compose up -d generator
```bash
# Через Makefile (рекомендуется)
make generator-test
make test
make lint
# Вручную через Docker
docker build -t generator:test .
docker run --rm -v $(PWD):/workspace -w /workspace/generator generator:test pytest tests/ -v
docker run --rm -v $(PWD):/workspace -w /workspace/generator generator:test pytest tests/ -q
# Конкретный файл тестов
docker run --rm -v $(PWD):/workspace -w /workspace/generator generator:test pytest tests/test_generation.py -v
```
`make test` запускает тесты генератора, контрактные тесты верхнего уровня и
проверку compose-конфигурации. `make lint` проверяет синтаксис Python и Bash,
compose-конфиг и пробелы в diff. Долгие стендовые проверки вроде
`make generated-history-runtime-check` запускаются отдельно.
### Структура тестов
```