11 KiB
Пользователь (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
{
"_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-коде, созданном пользователем. Он обеспечивает:
-
Идентификацию и короткий URL для доступа к QR-коду через URI. -
Информацию об объекте и разрешенных действиях. -
Возможность фильтрации активных и неактивных 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-кода:
{
"_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}). |
Пример документа сообщения
{
"_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
}
}