From b3370a435a6eb3cdcb66464acdce4a69b72dbef9 Mon Sep 17 00:00:00 2001
From: Pavel Antonov <antonov@perx.ru>
Date: Fri, 19 Jan 2024 15:40:11 +0400
Subject: [PATCH] Update

---
 proto/log/log.proto | 101 +++++++++++++++++++++-----------------------
 1 file changed, 47 insertions(+), 54 deletions(-)

diff --git a/proto/log/log.proto b/proto/log/log.proto
index 687b545..44bacd5 100644
--- a/proto/log/log.proto
+++ b/proto/log/log.proto
@@ -22,46 +22,24 @@ enum LogLevel {
   FATAL = 4;
 }
 
-// Caller представляет собой сообщение, которое содержит информацию о вызывающем объекте.
-// Каждый вызывающий объект может быть в одном из трех состояний: user, client, service.
-message Caller {
-  oneof caller {
-    string user = 1;     // user отображает учетную запись пользователя, инициировавшего действие.
-    string client = 2;   // client отображает учетную запись клиента, инициировавшего действие.
-    string service = 3;  // service отображает службу, инициировавшую действие.
-  }
-}
-
-
 // LogEntry представляет собой структуру данных для хранения информации о журнале.
 message LogEntry {
-
   // id является уникальным идентификатором каждой записи в журнале.
   string id = 1;
 
-  // action описывает действие, которое было произведено. Это поле может принимать разные значения в зависимости от сервиса.
-  // Примеры:
-  // - item.create
-  // - item.update
-  // - organization.create
-  // - action.run
-  // - reference.create
-  string action = 11;
-
   // timestamp указывает на временную метку, указывающую когда было создано данное сообщение.
   google.protobuf.Timestamp timestamp = 2;
 
   // level это поле, обозначающее уровень приоритета сообщения в логе.
-  LogLevel level = 3;
 
+  LogLevel level = 3;
   // message это основное сообщение, которое требуется записать в лог.
-  string message = 4;
 
+  string message = 4;
   // category указывает на категорию события.
   // Примеры:
   // -
   string category = 5;
-
   // component обозначает компонент системы, где произошло данное событие.
   // Примеры:
   // - Items.Service
@@ -70,40 +48,55 @@ message LogEntry {
   // - Users.API
   // - Janitor.Service
   // - Tasks.Worker
-  string component = 6;
-
-  // organization обозначает организацию, с которой связано данное событие.
-  // В случае если событие не связано с организацией, то данное поле должно быть пустым.
-  // В случае если событие связано с организацией, то данное поле должно содержать идентификатор организации который
-  // проставляется системой логирования автоматически.
-  string organization = 7;
-
-  // space обозначает пространство, которому принадлежит данное событие.
-  // В случае если событие не связано с пространством, то данное поле должно быть пустым.
-  string space = 8;
-
-  // env обозначает среду в которой произошло данный процесс.
-  // В случае если событие не связано с средой, то данное поле должно быть пустым.
-  // По умолчанию среда равна master. При этом в лог записывается идентификатор среды соответсвующий master.
-  string env = 9;
-
-  // collection обозначает коллекцию в которой произошло событие.
-  // В случае если событие не связано с коллекцией, то данное поле должно быть пустым.
-  string collection = 10;
 
-  // object_type обозначает тип объекта с которым связано событие.
-  string object_type = 16;
-
-  // object_id это идентификатор объекта связанного с событием
-  string object_id = 17;
-
-  // caller содержит информацию о сущности вызвавшей событие
-  Caller caller = 13;
+  string component = 6;
+  // action описывает действие, которое было произведено. Это поле может принимать разные значения в зависимости от сервиса.
+  // Примеры:
+  // - item.create
+  // - item.update
+  // - organization.create
+  // - action.run
+  // - reference.create
+  string event = 7;
+
+  // object это идентификатор объекта связанного с событием
+  // Идентификатор объекта должен быть в формате GlobalID:
+  // <контекст>/<тип объекта>/<идентификатор объекта>
+  // РіРґРµ:
+  // - <контекст> - представляет собой иднетификатор родительского объекта, если таковой имеется
+  // - <тип объекта> - представляет собой тип объекта, например:
+  //   spaces, envs, cols, items, revs, fields, clients, roles, orgs, users
+  // - <идентификатор объекта> - представляет собой идентификатор объекта
+  //
+  // Примеры:
+  // /spaces/<space_id> - пространство
+  // /spaces/<space_id>/envs/<env_id> - окружение
+  // /spaces/<space_id>/envs/<env_id>/cols/<collection_id> - коллекция
+  // /spaces/<space_id>/cols/<collection_id> - коллекция в окружении "master"
+  // /spaces/<space_id>/envs/<env_id>/schema/<collection_id> - схема коллекции
+  // /spaces/<space_id>/envs/<env_id>/cols/<collection_id>/items/<item_id> - элемент коллекции
+  // /spaces/<space_id>/cols/<collection_id>/items/<item_id> - элемент коллекции в окружении "master"
+  // /spaces/<space_id>/envs/<env_id>/cols/<collection_id>/items/<item_id>/fields/<field_name> - поле элемента коллекции
+  // /spaces/<space_id>/envs/<env_id>/cols/<collection_id>/items/<item_id>/revs/<rev_id> - ревизия элемента коллекции
+  // /spaces/<space_id>/clients/<client_id> - клиент
+  // /spaces/<space_id>/roles/<role_id> - роль
+  // /orgs/<org_id> - организация
+  // /users/<user_id> - пользователь
+  // /services/<service_id> - сервис
+  string object = 8;
+
+  // caller содержит идентификатор сущности вызвавшей событиe, аналогично полю object
+  //
+  // Примеры:
+  // /users/<user_id> - пользователь
+  // /spaces/<space_id>/clients/<client_id> - клиент
+  // /services/<service_id> - сервис
+  string caller = 9;
 
   // attr содержит дополнительные связанные с событием атрибуты в формате Any
   // позволяет добавить дополнительные данные в событие
-  google.protobuf.Any attr = 14;
+  google.protobuf.Any attr = 10;
 
   // tags содержит теги связанные с событием, на усмотрение сервиса
-  repeated string tags = 15;
+  repeated string tags = 11;
 }
\ No newline at end of file
-- 
GitLab