AURORA-1644: автозамена не вытесняет документ другой организации (#181) #185

Merged
aep merged 1 commits from feat/181-supersede-inn-guard into main 2026-10-27 00:05:26 +03:00
Owner

Closes #181 · Jira AURORA-1644 · правило — RSHB/arm-ka-docs#169 (§9.5 п. 3)

Что было

Автозамена (supersede_previous) искала файлы того же ЮЛ по ключу «тип, счёт, год, квартал» и не смотрела на ИНН шапки. Три скана ББ разных организаций, загруженные в одну карточку, вытесняли друг друга: оставался последний, version_no рос 1→2→3.

Что сделано

  • Пара «новый документ — прежний» с counterparty_check = MISMATCH у любого из двух в замене не участвует (_replaceable). Проверка с обеих сторон: иначе правильный документ организации карточки, загруженный позже, вытеснил бы все чужие сканы.
  • UNKNOWN (пустая шапка) заменяется как прежде.
  • Файл, оставленный только из-за MISMATCH, — предупреждение в mapping_warnings нового файла: «автозамена не выполнена: файл «…» (версия N) оставлен рядом с этим — …» (_skip_warnings).
  • Спека primary-files, «Автозамена прежних версий»: правило и три сценария.

Тесты

  • test_mismatch_pair_is_not_superseded (MATCH/чужой, чужой/свой, чужой/чужой): прежний файл PROCESSED, у нового version_no = 1, FILE_REPLACE нет, предупреждение с именем и версией. До правки падали все три.
  • test_unknown_header_still_supersedes (UNKNOWN у прежнего / у нового): замена как прежде.

Проверки (make check-full по целям)

  • check (ruff + mypy + unit): 1907 passed
  • test-integration: 1174 passed (9:50)
  • statements-check, dbml-check, check-infra, e2e, docker-build, web-check: exit 0

Rulings I made

  • R-1: текст предупреждения о пропуске — «автозамена не выполнена: файл «…» (версия N) оставлен рядом с этим — у нового или прежнего документа организация в шапке не совпадает с организацией карточки: <документы>». Цена ошибки — косметика.
  • R-2: файл, заменённый по другому документу, уходит в SUPERSEDED целиком (OQ-115), даже если в нём есть документ MISMATCH того же ключа; отдельного предупреждения нет. Цена — редкий случай (книга с разными ИНН на формах), закрывает AURORA-1752.
  • R-3: замена привязки к версии консолидации при ручном подтверждении MISMATCH-документа не трогается — AURORA-1752.

Findings

Маркер Суть Статус
R-2 Файл с MISMATCH-документом уходит целиком при замене по другому документу deferred (AURORA-1752)
R-3 Подтверждённый чужой документ вытесняет привязку версии с тем же ключом deferred (AURORA-1752)

🤖 Generated with Claude Code

Closes #181 · Jira AURORA-1644 · правило — RSHB/arm-ka-docs#169 (§9.5 п. 3) ## Что было Автозамена (`supersede_previous`) искала файлы того же ЮЛ по ключу «тип, счёт, год, квартал» и не смотрела на ИНН шапки. Три скана ББ разных организаций, загруженные в одну карточку, вытесняли друг друга: оставался последний, `version_no` рос 1→2→3. ## Что сделано - Пара «новый документ — прежний» с `counterparty_check = MISMATCH` у любого из двух в замене не участвует (`_replaceable`). Проверка с обеих сторон: иначе правильный документ организации карточки, загруженный позже, вытеснил бы все чужие сканы. - `UNKNOWN` (пустая шапка) заменяется как прежде. - Файл, оставленный только из-за `MISMATCH`, — предупреждение в `mapping_warnings` нового файла: «автозамена не выполнена: файл «…» (версия N) оставлен рядом с этим — …» (`_skip_warnings`). - Спека `primary-files`, «Автозамена прежних версий»: правило и три сценария. ## Тесты - `test_mismatch_pair_is_not_superseded` (MATCH/чужой, чужой/свой, чужой/чужой): прежний файл `PROCESSED`, у нового `version_no = 1`, `FILE_REPLACE` нет, предупреждение с именем и версией. До правки падали все три. - `test_unknown_header_still_supersedes` (UNKNOWN у прежнего / у нового): замена как прежде. ## Проверки (`make check-full` по целям) - `check` (ruff + mypy + unit): 1907 passed - `test-integration`: 1174 passed (9:50) - `statements-check`, `dbml-check`, `check-infra`, `e2e`, `docker-build`, `web-check`: exit 0 ## Rulings I made - R-1: текст предупреждения о пропуске — «автозамена не выполнена: файл «…» (версия N) оставлен рядом с этим — у нового или прежнего документа организация в шапке не совпадает с организацией карточки: <документы>». Цена ошибки — косметика. - R-2: файл, заменённый по другому документу, уходит в `SUPERSEDED` целиком (OQ-115), даже если в нём есть документ `MISMATCH` того же ключа; отдельного предупреждения нет. Цена — редкий случай (книга с разными ИНН на формах), закрывает AURORA-1752. - R-3: замена привязки к версии консолидации при ручном подтверждении `MISMATCH`-документа не трогается — AURORA-1752. ## Findings | Маркер | Суть | Статус | |---|---|---| | R-2 | Файл с `MISMATCH`-документом уходит целиком при замене по другому документу | deferred (AURORA-1752) | | R-3 | Подтверждённый чужой документ вытесняет привязку версии с тем же ключом | deferred (AURORA-1752) | 🤖 Generated with [Claude Code](https://claude.com/claude-code)
aep added 1 commit 2026-10-27 00:03:38 +03:00
Пара «новый документ — прежний» с counterparty_check = MISMATCH у любого из двух
в автозамене не участвует: сканы разных организаций в одной карточке больше не
вытесняют друг друга. UNKNOWN заменяется как прежде. Если файл оставлен только
из-за MISMATCH, в mapping_warnings нового файла — «автозамена не выполнена»
с именем и версией оставленного файла. Спека primary-files дополнена.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
aep merged commit ee43d5200a into main 2026-10-27 00:05:26 +03:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: RSHB/arm-core#185
No description provided.