Временный режим: период ОСВ из версии консолидации (#103) #104
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "feat/103-osv-period-from-version"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #103. Документация — RSHB/arm-ka-docs#96 (OQ-161, qa-guide §7.4, contour-transfer-guide).
Что и зачем
12.10.2026: ОСВ за 1 кв. 2025, загруженные в консолидацию 2026 Q1 и подтверждённые вручную, не попали в свод —
fitsтребуетdocument.period_year == consolidation.year, документ молча не привязывается. Для тестов на произвольных ОСВ — временный режим.Настройка
CONSOLIDATION_PERIOD_FROM_VERSION(по умолчаниюfalse; в контуре —OPENBAO__APP__CONSOLIDATION_PERIOD_FROM_VERSION=true). В режиме ОСВ, файл которой загружен в консолидацию (stored_file.consolidation_id), а период шапки версии не подходит, считается нарастающей за год и квартал консолидации. ОСВ, подходящие по шапке, не трогаются (квартальные склеиваются как раньше).api/src/domain/version_period.py— чистые функции:takes_version_period,with_version_period→ замороженное представлениеVersionPeriodDocument. Документ в БД не меняется (первичка не мутируется), карточка показывает период из шапки.consolidation_documents.for_consolidation— единая точка подмены. Её используют:fitsи ключ замены R-1,bind_confirmed(подхват),on_document_confirmed,on_documents_mapped, свод (ConsolidatedOsvService._build→select_sources), чек-лист (кандидаты и привязанные), колонка «ОСВ» периметра (repo.osv_accounts).consolidation_id) режим не затрагивает..env.example,.env.test,CLAUDE.md.Rulings I made
fits_by_header), см. O-4.stored_file.consolidation_id), а не все документы ЮЛ периметра. Иначе документы с рабочего стола и из других консолидаций неожиданно меняли бы период.DEBUG— работает и в контуре (решение владельца в чате 12.10.2026).PUT …/members(убрать и вернуть ЮЛ) или новую консолидацию. Миграции данных нет. Описано в qa-guide §7.4 п. 3.period_checkостаётсяUNKNOWN(OQ-120), предупреждение о несовпадении периода в этот PR не входит — вынесено в OQ-161 как открытый выбор постоянного решения.DOCUMENTS_PROCESSING → DATA_CORRECTIONпо маппингу (on_documents_mapped) тоже смотрит на подменённый период — иначе в режиме документNEEDS_CHECKне переводил бы версию в корректировку.Наблюдения
make e2eв составеcheck-fullпервый раз упал по таймауту: на машине запущено ядро стенда (:8000,NATS_ENABLED=true) в той же queue grouparm-core, оно забрало ack/результат tabular-parser (парсер обработал заданиеa0e745a1… status=done). Повторныйmake e2e— PASSED. Не связано с изменением; приcheck-fullядро стенда стоит останавливать. —deferred(кандидат в заметку README «Сквозной прогон»).api/.env.test(test_env_example_and_env_test_have_same_keys) — исправленоa1614b0. —fixed a1614b0select_sourcesотдавал все три, и свод брал строки как есть — задвоение/затроение. Регрессионный тестtest_mode_keeps_header_period_when_it_fits_version(падал: 3 строки вместо 1). —fixed a6418caa1614b0a6418caПроверки (
make check-full, по частям)make check(ruff, ruff format, mypy, unit): 1289 passeddbml-check,check-infra: OKmake test-integration: 901 passed (в т. ч. новыеtests/test_version_period.py— 5 сценариев)make e2e: 1-й прогон — FAILED (O-1, ядро стенда в той же queue group), повтор — 1 passedmake docker-build: OKmake web-check(biome, tsc, build): OK — фронт не менялсяНовые тесты:
tests/test_domain_version_period.py(9, без БД),tests/test_version_period.py(5, integration). Мутационная проверка: при принудительно выключенной подмене 3 позитивных интеграционных теста падают, 2 негативных проходят.Проверка на локальном стенде (12.10.2026, ядро из этой ветки, флаг включён)
osv_accountsконсолидаций РБ 2024 Q3 (1385 строк — контрольная цифра qa-guide §7.2), РБ 2025 Q1 (1421) и Синтетика 2025 Q1 (460) совпадают с ядромmainпобайтно.DATA_CORRECTION, свод 1421 строка, суммы до копейки равны своду РБ 2025 Q1 из тех же файлов; чек-лист —CONFIRMEDпо всем загруженным счетам,MISSINGтолько ББ, ОФР, ОСВ 90.make check1290 passed,make test-integration902 passed.Как включить на стенде / в контуре
Локально:
CONSOLIDATION_PERIOD_FROM_VERSION=trueвapi/.env, перезапуск ядра. Контур: секретOPENBAO__APP__CONSOLIDATION_PERIOD_FROM_VERSION=true. После тестов — убрать.🤖 Generated with Claude Code