docs(e2e): предупреждение о конкуренции за recognition.result
e2e подписывается на реальный recognition.result в queue group arm-core: другой экземпляр ядра (контейнер arm-core профиля services, локальный сервер с NATS_ENABLED=true) заберёт часть ack/результатов. README и docstring теста требуют остановить такие экземпляры; комментарий: MATCH достигается по имени (ИНН в шапке нет). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
This commit is contained in:
parent
f361fae79b
commit
96525f1ace
@ -544,6 +544,12 @@ docker compose -f ../docs/dev/docker-compose.yml -p arm-ka --profile services st
|
||||
|
||||
Образ собирается из `../tabular-parser` (main соседнего репозитория workspace).
|
||||
|
||||
**Перед e2e остановите другие экземпляры ядра, подписанные на `recognition.result`** (контейнер `arm-core` из профиля
|
||||
`services`, локальный `make run`/`run_server.py` с `NATS_ENABLED=true`): тест подписывается на реальный subject в боевой
|
||||
queue group `arm-core`, подписчики группы получают сообщения по очереди (round-robin), и ack/результат парсера уйдут
|
||||
чужому экземпляру (он отбросит их как `unknown_job`, у него другая БД) — тест упадёт по таймауту 60 с. Поднимайте только
|
||||
`tabular-parser` (`--no-deps`), как в команде выше.
|
||||
|
||||
### Проверка ORM и DBML
|
||||
|
||||
Модель данных — `../docs/model/data-model-v5.15.dbml`. ORM обязана совпадать с ней один в один:
|
||||
|
||||
@ -5,6 +5,10 @@
|
||||
tabular-parser (читает файл из MinIO, пишет результат в MinIO) → inbox (ack, результат) → цикл маппинга → файл
|
||||
`PROCESSED`, документ и строки ОСВ. Предусловие — профиль `services` (`tests/e2e/conftest.py`); иначе тест пропускается.
|
||||
Очистка: `DELETE /files/{id}` через API и удаление временной БД (фикстура `committed_sessionmaker`).
|
||||
|
||||
ВНИМАНИЕ: приложение подписывается на реальный `recognition.result` в боевой queue group `arm-core`; если в это время
|
||||
работает другой экземпляр ядра (контейнер `arm-core` профиля `services`, локальный сервер с `NATS_ENABLED=true`),
|
||||
часть ack/результатов уйдёт ему и тест упадёт по таймауту. Перед прогоном остановите такие экземпляры (README).
|
||||
"""
|
||||
|
||||
import asyncio
|
||||
@ -135,6 +139,7 @@ async def test_real_osv_is_parsed_end_to_end(
|
||||
(brief,) = card["documents"]
|
||||
assert (brief["document_type"], brief["osv_account_code"]) == ("OSV", "66")
|
||||
assert (brief["period_year"], brief["period_quarter"], brief["is_cumulative"]) == (2024, "Q4", True)
|
||||
# MATCH достигается именно по имени: ИНН в шапке ОСВ нет (D-8), имя ЮЛ совпадает с шапкой
|
||||
assert brief["counterparty_check"] == "MATCH"
|
||||
assert brief["status"] == "RECOGNIZED"
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user