mirror of
https://github.com/Ti-webdev/0-hereconnect-obsidian.git
synced 2026-07-31 23:26:42 +00:00
vault backup: 2025-05-14 15:03:57
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user