Описать понятный аудит оператора: changes и локализация
Контракт ленты действий дополнен changes и tenantName; в инструкции пользователя раздел оператора обновлён (Пользователи, читаемые изменения).
@@ -151,8 +151,13 @@
|
|||||||
"actorType": "tenant",
|
"actorType": "tenant",
|
||||||
"actorId": "1f2e3d4c-5b6a-7980-1234-56789abcdef0",
|
"actorId": "1f2e3d4c-5b6a-7980-1234-56789abcdef0",
|
||||||
"tenantId": "aabbccdd-eeff-0011-2233-445566778899",
|
"tenantId": "aabbccdd-eeff-0011-2233-445566778899",
|
||||||
|
"tenantName": "ООО «Ромашка»",
|
||||||
"ip": "203.0.113.7",
|
"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",
|
"at": "2026-09-10T15:22:46.123Z",
|
||||||
"id": 1042
|
"id": 1042
|
||||||
}
|
}
|
||||||
@@ -164,7 +169,18 @@
|
|||||||
```
|
```
|
||||||
|
|
||||||
- `items` — новые сверху (`at` DESC). `total` — полное число по фильтру (без `limit`/`offset`).
|
- `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`.
|
**Коды**: `200`, `401`.
|
||||||
|
|
||||||
|
|||||||
@@ -247,7 +247,7 @@
|
|||||||
|
|
||||||
Разделы консоли:
|
Разделы консоли:
|
||||||
|
|
||||||
- **Тенанты** — список рабочих пространств с числом пользователей и статусом. Здесь можно создать
|
- **Пользователи** — список рабочих пространств с числом учётных записей и статусом. Здесь можно создать
|
||||||
пространство (при необходимости сразу с владельцем — ему выдаётся одноразовый пароль),
|
пространство (при необходимости сразу с владельцем — ему выдаётся одноразовый пароль),
|
||||||
**приостановить** и **возобновить** доступ, а также **войти от имени пользователя** пространства
|
**приостановить** и **возобновить** доступ, а также **войти от имени пользователя** пространства
|
||||||
(impersonation) — удобно для поддержки; завершается обычным выходом.
|
(impersonation) — удобно для поддержки; завершается обычным выходом.
|
||||||
@@ -257,6 +257,8 @@
|
|||||||
и период. После смены предупреждения о расходе сбрасываются.
|
и период. После смены предупреждения о расходе сбрасываются.
|
||||||
- **Аудит** — лента действий (входы, выходы, приглашения, действия пользователей, изменения по
|
- **Аудит** — лента действий (входы, выходы, приглашения, действия пользователей, изменения по
|
||||||
пространствам и лимитам) с фильтрами по типу события, актору, пространству и периоду; есть пагинация.
|
пространствам и лимитам) с фильтрами по типу события, актору, пространству и периоду; есть пагинация.
|
||||||
|
Названия действий и параметры показываются понятным текстом, изменение — как «было → стало»;
|
||||||
|
сырой JSON доступен под спойлером.
|
||||||
- **Аналитика** — обзор за период (число пространств, расход токенов, входы/выходы/неудачные входы),
|
- **Аналитика** — обзор за период (число пространств, расход токенов, входы/выходы/неудачные входы),
|
||||||
расход токенов с группировкой по дням/пространствам/провайдерам/моделям и лента действий.
|
расход токенов с группировкой по дням/пространствам/провайдерам/моделям и лента действий.
|
||||||
- **Состояние системы** — доступность ядра, базы данных и сервисов (Telegram, ИИ, ML).
|
- **Состояние системы** — доступность ядра, базы данных и сервисов (Telegram, ИИ, ML).
|
||||||
|
|||||||
Reference in New Issue
Block a user