SHA256
61 lines
3.0 KiB
Markdown
61 lines
3.0 KiB
Markdown
# Черновик CHANNEL_MEMBERSHIP для каналов
|
|
|
|
## Статус документа
|
|
|
|
Этот файл является отдельным отложенным черновиком.
|
|
|
|
Важно:
|
|
|
|
- тема временно вынесена из основной первой итерации;
|
|
- в текущую реализацию не входит;
|
|
- документ нужен, чтобы не потерять уже согласованные мысли и вернуться к ним позже.
|
|
|
|
## Зачем вынесено отдельно
|
|
|
|
`CHANNEL_MEMBERSHIP` пока решено не делать вместе с `TEXT` и `STATUS_ACTION`, чтобы:
|
|
|
|
- не перегружать текущую реализацию;
|
|
- не смешивать две разные задачи;
|
|
- спокойно завершить первую итерацию по контенту и статусам;
|
|
- вернуться к membership позже отдельным этапом.
|
|
|
|
## Отложенная схема ссылок
|
|
|
|
На текущий момент в отложенный черновик заносится такая схема:
|
|
|
|
- `JOIN_REQUEST` ссылается на root-блок канала;
|
|
- `JOIN_ACCEPTED` ссылается на `JOIN_REQUEST`;
|
|
- `LEFT` ссылается на root-блок канала;
|
|
- `REMOVED` ссылается на последнее membership-событие этого участника в этом канале, лучше всего на `JOIN_ACCEPTED`.
|
|
|
|
## Предварительные подтипы
|
|
|
|
Если тема будет возвращена в реализацию, предварительно рассматриваются:
|
|
|
|
- `subType=10` — `CHANNEL_JOIN_REQUEST`
|
|
- `subType=20` — `CHANNEL_JOIN_ACCEPTED`
|
|
- `subType=30` — `CHANNEL_LEFT`
|
|
- `subType=40` — `CHANNEL_REMOVED`
|
|
|
|
## Что ещё нужно будет отдельно решить позже
|
|
|
|
Перед возвратом к теме нужно будет отдельно утвердить:
|
|
|
|
- точный байтовый формат `CHANNEL_MEMBERSHIP`;
|
|
- в чьём блокчейне пишутся membership-события;
|
|
- политику прав доступа:
|
|
- кто может писать `JOIN_ACCEPTED`;
|
|
- кто может писать `REMOVED`;
|
|
- кто и как подтверждает актуальный состав канала;
|
|
- как сервер строит read-model текущего состава канала;
|
|
- как UI показывает pending-заявки, принятых участников, вышедших и исключённых.
|
|
|
|
## Краткий итог
|
|
|
|
`CHANNEL_MEMBERSHIP` не отменён, а именно отложен.
|
|
|
|
Следующий рекомендуемый шаг:
|
|
|
|
- сначала завершить первую итерацию `TEXT + STATUS_ACTION`;
|
|
- потом отдельным этапом вернуться к membership-логике каналов.
|