feat(topbar): «Что нового» button + 2026-05-12 state.md update

This commit is contained in:
Александр Зимин
2026-05-12 17:05:24 +00:00
parent 58dd871808
commit a34c6d4c82
21 changed files with 1853 additions and 8 deletions
+95
View File
@@ -0,0 +1,95 @@
# Журнал аудита
Каждое изменение в системе фиксируется в **журнале аудита** — таблице,
в которой записано: кто, что, когда, что было до и после.
Доступ — в разделе **«Аудит»** в навигации (для пользователей с правом
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.