# Spec Delta: audit-trail ## ADDED Requirements ### Requirement: События файлов и документов Загрузка, автозамена, удаление файла и подтверждение документа SHALL писать `audit_event` через сервис аудита: | Действие | `action` | `section` | `object_type` | `user_id` | |---|---|---|---|---| | файл принят | `FILE_UPLOAD` | `PRIMARY_DOCUMENTS` | `stored_file` | инициатор | | прежний файл заменён новым (автозамена после маппинга) | `FILE_REPLACE` | `PRIMARY_DOCUMENTS` | `stored_file` (заменённый) | NULL (система; инициатор загрузки — в `description`) | | файл удалён | `FILE_DELETE` | `PRIMARY_DOCUMENTS` | `stored_file` | инициатор | | документ подтверждён | `DOCUMENT_CONFIRM` | `PRIMARY_DOCUMENTS` | `document` | инициатор | `FILE_REPLACE` SHALL содержать в `after_value` новый `file_id`, в `description` — перечень заменённых документов и `confirmed=true`, если среди них был `CONFIRMED`. Смена статусов задания и файла в обмене и в цикле маппинга `audit_event` не пишет (`ASSUMPTION(OQ-55)`). #### Scenario: Загрузка двух файлов - **WHEN** принято два файла одним запросом - **THEN** два события `FILE_UPLOAD` с `object_id` каждого файла и `after_value` (`original_name`, `content_hash`, `job_id`)