3.7 KiB
ADDED Requirements
Requirement: Срез ЕХ при верификации
При переходе версии консолидации в «Верифицирован» ядро SHALL один раз записать срез по context/05-domain-rules.md
§14: ex_snapshot со status = ACTUAL и номером, следующим по (ГСК, год, квартал); ex_snapshot_member по каждому ЮЛ
версии; ex_snapshot_item — primary_document по каждому привязанному документу и по одному элементу summary_osv,
vgo_pairs, chess, kfo_balance, kfo_income, corrections, version_card, плюс goodwill при goodwill_enabled
и other_report при scenario = CONFIRM. Запись SHALL не переводить прежний срез в архив и SHALL ставить
superseded_by_snapshot_id архивным срезам той же ГК и даты без ссылки. Повторная попытка по той же версии второй срез
не пишет. Запись SHALL писать audit_event(EX_SNAPSHOT_WRITE).
Scenario: Первая верификация
- WHEN версия № 1 ГСК за 01.10.2025 переходит в «Верифицирован», срезов этой ГСК и даты нет
- THEN записан срез № 1
ACTUALс элементами по §14 п. 3,kfo_result.is_frozen = true, событиеEX_SNAPSHOT_WRITE
Scenario: Новая версия после ручного архива
- WHEN срез № 1 той же ГК и даты заархивирован вручную, и версия № 3 переходит в «Верифицирован»
- THEN записан срез № 2
ACTUAL, срез № 1 остаётсяARCHIVEи получаетsuperseded_by_snapshot_idсреза № 2
Scenario: Гудвилл выключен
- WHEN у версии
goodwill_enabled = false - THEN элемента
goodwillв срезе нет
Requirement: Payload элемента среза
ex_snapshot_item.payload всех типов, кроме primary_document, SHALL проходить contracts/ex-payload-v1.schema.json:
конверт {schema_version: "1.0", item_type, units, generated_at, source_version_no, data}, где item_type совпадает с
колонкой, units — единица типа (rub / thousand_rub / none), data — ответ API экрана рабочей версии на момент
верификации без полей редактирования; payload_schema_version = "1.0". Чтение и выгрузка среза SHALL опираться только на
payload и ссылки на document, legal_entity, related_group, company_group, app_user.
Scenario: Элемент КФО
- WHEN пишется элемент
kfo_balance - THEN его payload —
units = "thousand_rub",dataсbalance.lines,summary,requisites.corrections_balanceи безincome; схема его принимает
Scenario: Несоответствие типа
- WHEN у элемента
item_type = kfo_balance, аdata— таблица гудвилла - THEN схема payload его отклоняет
Scenario: Чтение без таблиц консолидации
- WHEN рабочие таблицы версии удалены по сроку
- THEN срез открывается и выгружается: строки КФО, шахматка, агрегаты ВГО — из payload, первичка — по
document_id