Описать понятный аудит оператора: changes и локализация

Контракт ленты действий дополнен changes и tenantName; в инструкции пользователя раздел оператора обновлён (Пользователи, читаемые изменения).
2026-09-13 19:18:39 +03:00
parent a7ed350734
commit dd3eac229d
2 changed files with 21 additions and 3 deletions
@@ -151,8 +151,13 @@
"actorType": "tenant",
"actorId": "1f2e3d4c-5b6a-7980-1234-56789abcdef0",
"tenantId": "aabbccdd-eeff-0011-2233-445566778899",
"tenantName": "ООО «Ромашка»",
"ip": "203.0.113.7",
"detailJson": "{\"cardId\":\"c_1a2b3c4d5e6f\",\"to\":\"planned\"}",
"changes": [
{ "field": "cardId", "to": "c_1a2b3c4d5e6f" },
{ "field": "to", "to": "planned" }
],
"detailJson": "{\"changes\":[{\"field\":\"cardId\",\"to\":\"c_1a2b3c4d5e6f\"},{\"field\":\"to\",\"to\":\"planned\"}]}",
"at": "2026-09-10T15:22:46.123Z",
"id": 1042
}
@@ -164,7 +169,18 @@
```
- `items` — новые сверху (`at` DESC). `total` — полное число по фильтру (без `limit`/`offset`).
- `detailJson`**строка** JSON деталей события (без секретов), может быть `null`.
- `tenantName` — имя пользователя события (join с реестром); `null`, если пользователя нет/не разрешено.
- `changes` — человекочитаемые изменения параметров события (см. «Детали события»); `[]`, если деталей нет.
- `detailJson`**строка** сырого JSON деталей события (без секретов) для спойлера; может быть `null`.
### Детали события (`changes`)
Детали события хранятся как JSON вида `{ "changes": [ { "field": "<код>", "from": "<было>", "to": "<стало>" } ] }`,
где `field` — стабильный код параметра, `from` — предыдущее значение (`null` — параметр задан впервые),
`to` — новое. Сериализация деталей — `AuditService.ToDetailJson`, форма изменения — `AuditDetails.Set`/
`AuditDetails.Change`. Ядро отдаёт `changes` как есть; человекочитаемые названия событий, акторов, параметров
и значений — в ресурсах интерфейса (`ru.js`: `operator.event`/`operator.actor`/`operator.field`/`operator.value`).
Прежние записи плоского формата (`{ "login": "..." }`, пары `old*`/`new*`) читаются обратно совместимо.
**Коды**: `200`, `401`.
+3 -1
@@ -247,7 +247,7 @@
Разделы консоли:
- **Тенанты** — список рабочих пространств с числом пользователей и статусом. Здесь можно создать
- **Пользователи** — список рабочих пространств с числом учётных записей и статусом. Здесь можно создать
пространство (при необходимости сразу с владельцем — ему выдаётся одноразовый пароль),
**приостановить** и **возобновить** доступ, а также **войти от имени пользователя** пространства
(impersonation) — удобно для поддержки; завершается обычным выходом.
@@ -257,6 +257,8 @@
и период. После смены предупреждения о расходе сбрасываются.
- **Аудит** — лента действий (входы, выходы, приглашения, действия пользователей, изменения по
пространствам и лимитам) с фильтрами по типу события, актору, пространству и периоду; есть пагинация.
Названия действий и параметры показываются понятным текстом, изменение — как «было → стало»;
сырой JSON доступен под спойлером.
- **Аналитика** — обзор за период (число пространств, расход токенов, входы/выходы/неудачные входы),
расход токенов с группировкой по дням/пространствам/провайдерам/моделям и лента действий.
- **Состояние системы** — доступность ядра, базы данных и сервисов (Telegram, ИИ, ML).