# Журнал аудита Каждое изменение в системе фиксируется в **журнале аудита** — таблице, в которой записано: кто, что, когда, что было до и после. Доступ — в разделе **«Аудит»** в навигации (для пользователей с правом INTERNAL и выше). ## Что попадает в журнал - Создание, обновление, закрытие записей справочников (`CREATE` / `UPDATE` / `CLOSE`) - Создание, обновление, удаление справочников - Schema drafts: создание, отправка на ревью, approve, reject, publish - Изменения настроек webhook-подписок Технические события (запуск pod'ов, выполнение SQL миграций) — НЕ попадают в этот аудит. Они в системных логах. ## Структура записи аудита | Поле | Что значит | |---|---| | **Время** | Когда произошло событие (точное время сервера) | | **Пользователь** | Кто сделал изменение (берётся из JWT-токена) | | **Справочник** | Какой справочник затронут | | **Бизнес-ключ** | Какая конкретно запись (для record-операций) | | **Действие** | `CREATE`, `UPDATE`, `CLOSE`, `DRAFT_APPROVE` и т.п. | | **Было / Стало** | Diff: что изменилось (для UPDATE) | | **Trace ID** | Технический идентификатор для корреляции с логами | ## Фильтрация В UI — toolbar с фильтрами: - **Справочник** — конкретный или все - **Действие** — `CREATE` / `UPDATE` / `CLOSE` и т.д. - **Пользователь** — кто сделал - **Бизнес-ключ** — конкретная запись - **Период** — диапазон дат (используй DateRangePicker) Применяется автоматически при изменении любого фильтра. URL обновляется — можно поделиться ссылкой «аудит за вчера на ground_station». ## Что искать в аудите ### «Кто закрыл запись X?» Фильтр: справочник = `<имя>`, бизнес-ключ = `<код>`, действие = `CLOSE`. Видишь оператора, время, причину (если была указана). ### «Что менялось вчера в spacecraft?» Фильтр: справочник = `spacecraft`, период = вчера. Сортировка по времени. ### «Я подозреваю некорректное изменение» Найди запись, посмотри **diff** колонки «Было / Стало». Если изменение действительно неверное — раскрой запись, кликни **«Восстановить эту версию»** (создаст новую активную версию из исторической). ### «Кто часто меняет конкретный справочник?» Фильтр: справочник + период (последний месяц). В UI отсортируй по пользователю — видишь топ-операторов. ## Экспорт Кнопка **«Экспортировать»** в правом верхнем — выгрузка в CSV отфильтрованных записей. Полезно для: - Отчётов руководству («что изменилось за квартал») - Compliance-проверок - Анализа в Excel / BI CSV содержит те же колонки, что в UI, плюс полные diff'ы в JSON-формате. ## Что НЕЛЬЗЯ найти в аудите - **Чтения** (`READ`) — никто их не записывает (объём огромен, информативная ценность низкая) - **Изменения настроек системы** на уровне kubernetes / Vault / SSL — это в системных логах ops-команды - **Изменения вне Ordinis** — если внешняя система сделала свою копию справочника и поменяла её, в нашем аудите этого нет ## Срок хранения По умолчанию — **бессрочно**. Журнал растёт, но не очищается автоматически. Если требуется retention policy (например, удалять старше 5 лет по GDPR) — свяжись с ответственным за систему, это настраивается на уровне БД. ## Trace ID — как использовать Если в audit-записи есть trace ID — это можно сопоставить с логами бэкенда. Полезно когда ошибка произошла на стороне сервера и нужно понять глубинную причину. Скопируй trace ID, отдай в support / ops.