## MODIFIED Requirements ### Requirement: Аудит экспорта шахматки Каждый успешный `GET …/intercompany-matrix/all/export`, `POST …/intercompany-matrix/manual/export` и `GET …/intercompany-matrix/preset/{rule_id}/export` SHALL добавлять отдельное неизменяемое событие `audit_event` с `action = EXPORT`, `section = EXPORT`, `object_type = consolidation_version`, `object_id = consolidation_version_id`, `user_id` инициатора, `before_value = null` и `after_value = {report: "intercompany_matrix", mode, debit_account_ids, credit_account_ids, cells}`; для `PRESET` в `after_value` SHALL быть дополнительно `rule_id`, `rule_no` и `rule_version_no` (фактическая версия применённого правила, в том числе при незафиксированной версии правил). `mode` — `ALL`, `MANUAL` или `PRESET`, массивы счетов — ID из запроса (в ALL и PRESET пустые), `cells` — число ячеек. Выгрузка сводной ОСВ продолжает писать собственное событие `EXPORT`. #### Scenario: Две выгрузки - **WHEN** пользователь дважды выгружает ту же шахматку - **THEN** в `audit_event` две разные записи `EXPORT`, каждая со своим payload и числом ячеек #### Scenario: Выгрузка пресета - **WHEN** пользователь выгружает `GET …/intercompany-matrix/preset/{rule_id}/export` - **THEN** событие `EXPORT` содержит `mode = PRESET`, `rule_id`, `rule_no`, `rule_version_no`, пустые массивы счетов и число ячеек