Add distributed user profiles and username directory
This commit is contained in:
@@ -2,11 +2,12 @@
|
||||
|
||||
## Слои
|
||||
- BLE Transport: сканирование, реклама, соединения, обмен пакетами.
|
||||
- Mesh Layer: маршрутизация, TTL, дедупликация, ACK.
|
||||
- Mesh Layer: маршрутизация, TTL, дедупликация, ACK, ретрансляция профильных пакетов.
|
||||
- Messaging Layer: список чатов, отдельный экран диалога, статусы доставки, история.
|
||||
- Storage Layer: Room для локального хранения.
|
||||
- Storage Layer: Room для локального хранения сообщений, очереди и профилей.
|
||||
- Delivery Layer: retry queue, ACK timeout, повторные отправки из фонового сервиса.
|
||||
- Update Layer: `version.json`, changelog и ручная/автоматическая проверка обновлений клиента.
|
||||
- Profile Layer: локальный профиль пользователя, `username` как основной идентификатор, кэш профилей из mesh-сети и разрешение `username -> peerId`.
|
||||
|
||||
## Пользовательский сценарий
|
||||
- Главный экран показывает список чатов в стиле Telegram.
|
||||
@@ -14,11 +15,13 @@
|
||||
- Слева в шапке показывается общее количество известных устройств в mesh.
|
||||
- Настройки вынесены в меню `три точки`, отдельный debug-лог из пользовательского интерфейса убран.
|
||||
- Отправка сообщений доступна только из экрана конкретного диалога.
|
||||
- В настройках пользователь редактирует свой профиль и ищет другие профили по `username`.
|
||||
|
||||
## Топология сети
|
||||
- Выделенный сервер или хост для работы mesh не нужен.
|
||||
- Все узлы равноправны: каждый телефон может быть источником, получателем и ретранслятором.
|
||||
- Сеть не рассчитана на бесконечное число пользователей. Масштаб ограничивается радиусом BLE, количеством соседних соединений, частотой ретрансляции и ограничениями Android по энергии и фону.
|
||||
- Профильные данные передаются отдельными mesh-пакетами и кэшируются на устройствах. Это даёт распределённый каталог пользователей без центрального сервера, но актуальность данных зависит от распространения пакетов по сети.
|
||||
|
||||
## Сетевой пакет (черновик)
|
||||
```json
|
||||
@@ -28,12 +31,12 @@
|
||||
"targetId": "user-or-group-id",
|
||||
"ttl": 6,
|
||||
"timestamp": 0,
|
||||
"type": "message|ack|presence",
|
||||
"type": "message|ack|presence|profile",
|
||||
"payload": "base64-or-json"
|
||||
}
|
||||
```
|
||||
|
||||
## Ближайшие шаги
|
||||
1. Укрепить transport: фрагментация крупных пакетов и более надёжный reconnect.
|
||||
2. Ввести шифрование payload и управление профилями пользователей.
|
||||
2. Ввести шифрование payload и подпись пакетов.
|
||||
3. Добавить инструментальные BLE-тесты на нескольких устройствах и полевой прогон.
|
||||
|
||||
Reference in New Issue
Block a user