Přeskočit na hlavní obsah

Kanály

Kanály přinášejí týmové konverzace do Libre WebUI: veřejné a soukromé místnosti i přímé zprávy s vlákny, reakcemi, připnutím, sledováním nepřečtených, přílohami a odpověďmi @model — vše na stejných trvalých a šifrovaných základech jako chat.

Typy kanálů a členství

TypKdo ho vidíKdo se připojuje
publicProcházet může každýKaždý se připojí sám
privateJen členovéVlastník zve členy
dmJen dva účastníciOtevře se automaticky; vždy přesně dva

Členství je jediným oprávněním k obsahu kanálu. Každé čtení i zápis, včetně stahování příloh a živého doručování událostí, nejprve ověří členství volajícího. Nečlenové obdrží nevyjmenovávající 404. Globální role správce záměrně neposkytuje k obsahu kanálů přístup.

Tvůrce veřejného nebo soukromého kanálu je jeho vlastník. Vlastníci mohou přejmenovat, archivovat, zvát (u soukromého), odebírat členy, moderovat zprávy a kanál smazat. Vlastník odchází smazáním kanálu, nikdy jeho opuštěním. Pro každou dvojici existuje jen jeden kanál přímých zpráv: otevření DM se stejnou osobou vede vždy do stejné konverzace.

Časová osa

Zprávy tvoří trvalou seřazenou časovou osu čtenou oběma směry pomocí kurzorů podle klíče (created_at plus ID zprávy), takže stránkování položky nikdy nevynechá ani nezdvojí.

  • Idempotentní příspěvky. Identitu zprávy dodává klient; opakovaný požadavek dopadne na stejnou položku časové osy právě jednou.
  • Odstranění s náhrobkem. Smazání zprávy vymaže obsah, ale zachová položku časové osy, takže vlákna nezůstanou viset a pořadí se neposune. Autoři mažou vlastní zprávy, vlastníci kanálu mohou moderovat všechny.
  • Úpravy smí provádět jen autor a nesou značku editedAt.
  • Vlákna mají jednu úroveň. Kořenová zpráva může hostit vlákno; odpověď na odpověď se odmítne. Kořenové zprávy zobrazují aktuální počet odpovědí.
  • Reakce se vedou pro uživatele a emoji a počítají se bez duplicit.
  • Připnutí spravují členové a uvádějí se pro každý kanál.

Názvy, popisy a obsah zpráv kanálů se při uložení šifrují se stejnou hranicí jako zprávy chatu.

Stav nepřečtených

Každé členství má monotónní kurzor čtení. Počet nepřečtených se počítá na serveru pro jednotlivé kanály (vlastní zprávy nikdy nejsou nepřečtené) a POST /api/channels/:channelId/read posouvá kurzor jen dopředu. Zastaralý klient proto nemůže znovu označit přečtené zprávy jako nepřečtené.

Doručování v reálném čase

Každá změna časové osy se přidá do trvalého proudu channel:<id> a rozšíří přes GET /api/channels/:channelId/events (SSE). Před každým doručením se znovu ověří členství, takže odebrání člena jeho živý proud bezpečně ukončí. Časová osa SQL zůstává zdrojem pravdy; odběratel, který zmeškal události, ji jednoduše znovu načte.

Přílohy

Soubory se nejprve nahrají (POST /api/channels/:channelId/attachments), krátce se odloží do sdílené mezipaměti nároků a připojí se při zveřejnění zprávy. Nárok na nahrání lze použít jednou a bez uplatnění vyprší za 15 minut. Data blob patří nahrávajícímu (jeho kvótě) a při každém stažení se znovu ověří členství v kanálu.

Odpovědi @model

Editor může zprávu směrovat modelu. Odpověď se okamžitě zobrazí jako čekající zpráva od modelu a dokončí ji trvalá úloha běžící výhradně pod identitou vyvolávajícího člena: jeho přístup k modelu, přihlašovací údaje poskytovatele a směrování, nikdy údaje vlastníka kanálu nebo jiného člena. Člen odebraný během čekání zmínky ji nemůže udržet při životě. Úloha před generováním znovu ověří členství a místo toho zaznamená viditelné selhání. Chyby modelu se zobrazí přímo na odpovědi.

Odpovědi modelu používají jako kontext nedávnou konverzaci kanálu (nejvýše 30 zpráv). Běží jako jednorázová dokončení. Nástroje chatu, načítání znalostí a webové vyhledávání zatím nejsou do zmínek v kanálu zapojeny.

Limity

LimitHodnota
Kanálů vytvořených uživatelem50
Členů v kanálu200
Zpráv v kanálu50,000
Délka zprávy8,000 znaků
Příloh ke zprávě5 × 10 MB
Reakcí na zprávu200

Omezení

  • Indikátory přítomnosti a stav psaní nejsou implementovány.
  • Export obsahu kanálu a zásady uchovávání následují způsob záloh instance. Export jednotlivých kanálů zatím neexistuje.
  • Zmínky oznamuje služba oznámení v aplikaci. Mimo opuštění kanálu zatím neexistuje předvolba oznámení pro jednotlivé kanály.