본문으로 건너뛰기

채널

채널은 팀 대화를 Libre WebUI로 가져옵니다. 공개 및 비공개 방과 다이렉트 메시지에서 스레드, 반응, 고정, 읽지 않음 추적, 파일 첨부와 @model 응답을 이용할 수 있으며, 모두 채팅과 동일하게 영구적이고 암호화된 기반 위에서 작동합니다.

채널 유형과 구성원 자격

유형볼 수 있는 사용자참여 방식
public누구나 둘러볼 수 있음누구나 직접 참여
private구성원만 볼 수 있음소유자가 구성원을 초대
dm두 참가자만 볼 수 있음자동으로 열리며 항상 정확히 두 명

구성원 자격이 채널 콘텐츠에 대한 유일한 권한입니다. 첨부 파일 다운로드와 실시간 이벤트 전달을 포함해 모든 읽기와 쓰기에서 먼저 호출자의 구성원 자격을 확인하며, 구성원이 아닌 사용자에게는 항목 존재 여부를 드러내지 않는 404를 반환합니다. 전역 관리자 역할도 의도적으로 채널 콘텐츠에 대한 접근 권한을 부여하지 않습니다.

공개 또는 비공개 채널 생성자는 소유자가 됩니다. 소유자는 이름 변경, 보관, 비공개 채널 초대, 구성원 제거, 메시지 조정과 채널 삭제를 할 수 있습니다. 소유자는 채널을 버리고 나가는 것이 아니라 채널을 삭제해야 합니다. 다이렉트 메시지는 사용자 쌍별로 중복 제거됩니다. 같은 사람과 DM을 열면 항상 같은 대화로 이동합니다.

타임라인

메시지는 영구적이고 순서가 지정된 타임라인을 형성합니다. 어느 방향에서든 키셋 커서(created_at과 메시지 ID)를 사용해 읽으므로 페이지를 넘길 때 항목을 건너뛰거나 중복하지 않습니다.

  • 멱등적 게시. 클라이언트가 메시지 ID를 제공합니다. 요청을 다시 시도해도 같은 타임라인 항목에 정확히 한 번만 저장됩니다.
  • 삭제 표식 유지. 메시지를 삭제하면 내용은 지워지지만 타임라인 항목은 남습니다. 따라서 스레드가 끊기지 않고 순서도 바뀌지 않습니다. 작성자는 자신의 메시지를 삭제할 수 있고 채널 소유자는 모든 메시지를 조정할 수 있습니다.
  • 편집은 작성자만 할 수 있으며 editedAt 표시가 붙습니다.
  • 스레드는 한 단계 깊이입니다. 모든 루트 메시지에 스레드를 만들 수 있지만 답글에 답글을 달 수는 없습니다. 루트 메시지에는 실시간 답글 수가 표시됩니다.
  • 반응은 사용자 및 이모지별로 하나씩 적용되며 중복 없이 계산됩니다.
  • 고정은 구성원이 관리하며 채널별로 나열됩니다.

채널 이름, 설명과 메시지 콘텐츠는 채팅 메시지와 같은 경계에서 저장 시 암호화됩니다.

읽지 않음 상태

각 구성원 자격에는 단조 증가하는 읽기 커서가 있습니다. 읽지 않은 항목 수는 채널별로 서버 측에서 계산되며 내 메시지는 읽지 않음으로 계산하지 않습니다. POST /api/channels/:channelId/read는 커서를 앞으로만 이동합니다. 따라서 오래된 클라이언트가 읽은 메시지를 다시 읽지 않음으로 만들 수 없습니다.

실시간 전달

모든 타임라인 변경 사항은 영구 이벤트 스트림 channel:<id>에 추가되고 GET /api/channels/:channelId/events(SSE)를 통해 전달됩니다. 전달할 때마다 구성원 자격을 다시 확인하므로 구성원을 제거하면 해당 사용자의 실시간 스트림이 닫힌 상태로 실패합니다. SQL 타임라인이 계속 기준 데이터입니다. 이벤트를 놓친 구독자는 타임라인을 다시 읽기만 하면 됩니다. 원장은 전달 수단이지 진실의 원천이 아닙니다.

첨부 파일

파일은 먼저 업로드되고(POST /api/channels/:channelId/attachments) 공유 청구 캐시에 잠시 대기한 뒤 메시지를 게시할 때 첨부됩니다. 업로드 청구는 한 번만 사용할 수 있고 청구되지 않으면 15분 후 만료됩니다. Blob 바이트는 업로더의 소유이며 해당 할당량에 포함됩니다. 다운로드할 때마다 채널 구성원 자격을 다시 확인합니다.

@model 응답

작성기에서 메시지를 모델에 보낼 수 있습니다. 응답은 대기 중인 모델 작성 메시지로 즉시 나타난 뒤, 호출한 구성원의 ID로만 엄격하게 실행되는 영구 작업을 통해 완료됩니다. 해당 구성원의 모델 접근 권한, 공급자 자격 증명과 라우팅을 사용하며 채널 소유자나 다른 구성원의 것을 절대 사용하지 않습니다. 멘션이 대기 중일 때 구성원에서 제거되면 작업을 계속 유지할 수 없습니다. 작업은 생성 전에 구성원 자격을 다시 확인하고 눈에 보이는 실패를 기록합니다. 모델 실패는 큐에서 사라지지 않고 응답 자체에 표시됩니다.

모델 응답은 최근 채널 대화(최대 30개 메시지)를 컨텍스트로 사용합니다. 일회성 완성으로 실행되며 채팅 도구, 지식 검색과 웹 검색은 아직 채널 멘션에 연결되어 있지 않습니다.

한도

한도
사용자당 생성 채널 수50
채널당 구성원 수200
채널당 메시지 수50,000
메시지 길이8,000자
메시지당 첨부 파일5 × 10 MB
메시지당 반응 수200

경계

  • 온라인 상태 표시와 입력 중 상태는 구현되지 않았습니다.
  • 채널 콘텐츠 내보내기와 보존 정책은 인스턴스 백업 방식을 따릅니다. 아직 채널별 내보내기는 없습니다.
  • 멘션은 앱 내 알림 서비스를 통해 알립니다. 채널을 나가는 것 외에는 아직 채널별 알림 환경 설정이 없습니다.