vault backup: 2025-05-14 15:03:57

This commit is contained in:
2025-05-14 15:03:57 +02:00
parent 41e5b360c7
commit 5b603fea31
+115
View File
@@ -0,0 +1,115 @@
## Пользователь (User)
Документ, представляющий пользователя, который создает QR-коды для своих объектов.
Этот пример документа пользователя (org.couchdb.user:<username>) относится к встроенному формату CouchDB для управления учетными записями и доступом к базе данных. CouchDB поддерживает такие документы для аутентификации и управления правами пользователей, что позволяет контролировать доступ к базе данных на уровне CouchDB.
### Описание полей пользователя
| Поле | Описание |
|----------------|----------------------------------------------------------------------------------------------------------|
| `_id` | Уникальный идентификатор документа, в формате `org.couchdb.user:<username>` (например, `org.couchdb.user:ivan.ivanov`). |
| `name` | Имя пользователя, соответствует username (например, `ivan.ivanov`). |
| `type` | Тип документа, всегда равен `"user"`. |
| `user_uuid` | Уникальный идентификатор пользователя, не ссылается на `_id` (например, `01931a8b-220c-76df-943c-ea23313c7c65`). |
| `email` | Email пользователя для связи (например, `ivan@example.com`). |
| `created_at` | Дата и время создания учетной записи пользователя в формате ISO 8601 (например, `"2024-11-10T10:00:00Z"`). |
| `roles` | Массив ролей, по умолчанию пуст. |
| `password` | Пароль пользователя в текстовом виде. **(Примечание: использовать безопасное хранение паролей рекомендуется)**. |
Добавление документа типа org.couchdb.user позволяет CouchDB управлять доступом к базе данных. Этот документ создается, когда необходимо, чтобы пользователь имел доступ к базе данных через CouchDB.
CouchDB будет использовать такие документы для аутентификации пользователей, когда они подключаются к базе данных, запрашивая имя пользователя и пароль.
### Пример документа пользователя в CouchDB
```json
{
"_id": "org.couchdb.user:ivan.ivanov",
"name": "ivan.ivanov",
"type": "user",
"email": "ivan@example.com",
"user_uuid": "01931a8b-220c-76df-943c-ea23313c7c65",
"created_at": "2024-11-10T10:00:00Z",
"roles": [],
"password": "plaintext_password"
}
```
Примечание: CouchDB преобразует password в защищенный хэш при сохранении, поэтому в итоговом документе хранится зашифрованный пароль, а не открытый текст.
## QR-код (QR-Code)
Документ, представляющий QR-код, созданный пользователем для связи через конкретный объект (например, автомобиль или квартиру). Этот документ содержит информацию об объекте, для которого создан QR-код, а также доступные действия для взаимодействия гостей, сканирующих QR-код.
Этот документ служит для хранения данных о каждом уникальном QR-коде, созданном пользователем. Он обеспечивает:
1. Идентификацию и короткий URL для доступа к QR-коду через URI.
2. Информацию об объекте и разрешенных действиях.
3. Возможность фильтрации активных и неактивных QR-кодов.
### Описание полей QR-кода
| Поле | Описание |
|--------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `_id` | Уникальный идентификатор документа, составленный из типа (`qr_code`) и значения `qr_code` (например, `qr_code:4n8x9z7q`). |
| `type` | Тип документа, всегда равен `"qr_code"`. |
| `uri` | Уникальный идентификатор QR-кода длиной 8 символов, используется для создания короткого URL (например, `4n8x9z7q`). |
| `url` | Уникальная ссылка для QR-кода, ведущая к целевой странице взаимодействия (например, "https://hereconnect.condev.ru/4n8x9z7q").|
| `user_uuid` | Уникальный идентификатор пользователя, создавшего QR-код (например, `01931a8b-220c-76df-943c-ea23313c7c65`). |
| `browser_uuid` | Идентификатор браузера, через который был создан QR-код (например, `c06782be-c092-4831-b0e6-375078362a42`). |
| `name` | Название объекта, для которого создан QR-код (например, "Мой автомобиль"). Отображается гостю на целевой странице. |
| `placement` | Тип объекта, для которого создан QR‑код, например "car" |
| `actions` | Список действий, доступных для гостей, сканирующих QR-код. Возможные значения: `"send_message"` (отправить сообщение), `"share_location"` (поделиться геопозицией). |
| `created_at` | Дата и время создания QR-кода в формате ISO 8601 (например, `"2024-11-10T10:05:00Z"`). |
Пример документа QR-кода:
```json
{
"_id": "qr_code:4n8x9z7q",
"type": "qr_code",
"uri": "4n8x9z7q",
"url": "https://hereconnect.condev.ru/4n8x9z7q",
"user_uuid": "01931a8b-220c-76df-943c-ea23313c7c65",
"browser_uuid": "c06782be-c092-4831-b0e6-375078362a42",
"name": "Мой автомобиль",
"placement": "car",
"actions": ["send_message", "share_location"],
"created_at": "2024-11-10T10:05:00Z"
}
```
uri — короткий, уникальный идентификатор для QR-кода, используемый для создания URL.
url — полноценная ссылка, ведущая к целевой странице взаимодействия, которую может сканировать гость для начала общения.
## Сообщение (Message)
Документ, представляющий сообщения от гостя и ответы владельца, отправленные в рамках конкретного взаимодействия с QR-кодом. Все сообщения, связанные с одним QR-кодом, сгруппированы по `session` для отслеживания всех взаимодействий в рамках одной сессии, что создает упрощенную структуру для общения.
### Описание полей сообщения
| Поле | Описание |
|---------------|-------------------------------------------------------------------------------------------------------------------------------------|
| `_id` | Уникальный идентификатор сообщения, составленный из `message:<qr_code_uri>:<session>:<message_timestamp>`. Например, `message:4n8x9z7q:1731317710358:1731317710358`. |
| `type` | Тип документа, всегда равен `"message"`. |
| `qr_code_uri` | Уникальный идентификатор QR-кода, с которым связано сообщение (например, `"4n8x9z7q"`). |
| `chat` | Идентификатор сессии, представляющий начало взаимодействия, используемый для группировки сообщений (например, `"1731317710358"`). |
| `created_at` | Метка времени создания сообщения в формате `timestamp` (например, `"1731317710358"`). |
| `from` | Источник сообщения: `"guest"` для гостя или `"owner"` для владельца. |
| `content` | Текст сообщения (например, `"Ваша машина мешает проезду"`). |
| `location` | (Опционально) Геолокация гостя в формате координат (например, `{"lat": 55.7558, "lng": 37.6176}`). |
### Пример документа сообщения
```json
{
"_id": "message:4n8x9z7q:1731317710358:1731317710358",
"type": "message",
"qr_code_uri": "4n8x9z7q",
"chat": "1731317710358",
"created_at": "1731317710358",
"from": "guest",
"content": "Ваша машина мешает проезду",
"location": {
"lat": 55.7558,
"lng": 37.6176
}
}
```