feat(#190): метрики качества первички (AURORA-1759) #229
@ -1555,13 +1555,21 @@ async def test_supersede_previous_writes_superseded_fact_for_dropped_document(
|
||||
committed_sessionmaker: async_sessionmaker[AsyncSession],
|
||||
):
|
||||
"""Задача 9 (Review Focus докс-плана): документ, выпавший из автозамены (ключа нет среди документов нового
|
||||
файла — OQ-154), не подтверждавшийся (`NEEDS_CHECK`) — факт исхода `SUPERSEDED`, без причины (вне матрицы §6)."""
|
||||
файла — OQ-154), не подтверждавшийся (`NEEDS_CHECK`) — факт исхода `SUPERSEDED`, без причины (вне матрицы §6).
|
||||
|
||||
Фикс-раунд 1 ревью задачи 9: у `old_file` ОБЯЗАТЕЛЬНО должен быть документ, совпадающий по ключу с документом нового
|
||||
файла (здесь — `old_60`/`new_60`, оба account="60") — иначе `_replaceable` не находит ни одного совпадения,
|
||||
`file_ids` остаётся пустым, и `supersede_previous` возвращает `[]` на раннем `if not file_ids: return []`
|
||||
ДО того, как доходит до `locked`/хука: файл не заменяется вовсе, и `_outcome_fact` на `old_62` упал бы с
|
||||
`NoResultFound`. `old_60` сам не проверяется в этом тесте — он лишь триггер замены файла; выпавший документ
|
||||
для assert — `old_62` (account="62", ключа которого нет среди документов нового файла)."""
|
||||
maker = committed_sessionmaker
|
||||
async with maker() as session, session.begin():
|
||||
entity = await make_legal_entity(session, name=OWNER_NAME, inn="7700000001")
|
||||
old_file, old_job = await make_stored_file(
|
||||
session, entity=entity, status=FileStatus.PROCESSED, job_status=RecognitionStatus.done
|
||||
)
|
||||
await make_document(session, file=old_file, job=old_job, account="60") # триггер замены (совпадает по ключу)
|
||||
old_62 = await make_document(
|
||||
session, file=old_file, job=old_job, account="62", status=DocumentStatus.NEEDS_CHECK
|
||||
)
|
||||
@ -1590,7 +1598,12 @@ async def test_supersede_previous_writes_superseded_after_confirm_for_confirmed_
|
||||
):
|
||||
"""Задача 9: автозамена подтверждённого документа — в отличие от удаления (задача 8), здесь нет 409-проверки,
|
||||
блокирующей вручную подтверждённые документы, замена их не исключает. `confirmed_by` факта — из документа
|
||||
(может быть не NULL, читается как есть, не считается всегда системным)."""
|
||||
(может быть не NULL, читается как есть, не считается всегда системным).
|
||||
|
||||
Фикс-раунд 1 ревью задачи 9: как и в тесте выше, `old_file` должен иметь документ, совпадающий по ключу с документом
|
||||
нового файла (`old_60`/`new_60`, account="60") — иначе файл не заменяется вовсе (`_replaceable` не находит
|
||||
совпадений, `file_ids` пуст, ранний `return []`), и `_outcome_fact` на `old_62` упал бы с `NoResultFound`.
|
||||
`old_62` (account="62", CONFIRMED) — выпавший документ, на котором проверяется `SUPERSEDED_AFTER_CONFIRM`."""
|
||||
maker = committed_sessionmaker
|
||||
async with maker() as session, session.begin():
|
||||
confirmer = (await session.execute(select(AppUser).order_by(AppUser.email).limit(1))).scalar_one()
|
||||
@ -1598,6 +1611,7 @@ async def test_supersede_previous_writes_superseded_after_confirm_for_confirmed_
|
||||
old_file, old_job = await make_stored_file(
|
||||
session, entity=entity, status=FileStatus.PROCESSED, job_status=RecognitionStatus.done
|
||||
)
|
||||
await make_document(session, file=old_file, job=old_job, account="60") # триггер замены (совпадает по ключу)
|
||||
old_62 = await make_document(session, file=old_file, job=old_job, account="62", status=DocumentStatus.CONFIRMED)
|
||||
old_62.confirmed_by = confirmer.id
|
||||
new_file, new_job = await make_stored_file(
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user