feat(chatcoop): комнаты секретаря + синхронизация непроектных комнат в blago #34
Reference in New Issue
Block a user
Delete Branch "feat/chatcoop-secretary-rooms"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Что
Две связанные задачи по подсистеме chatcoop (Matrix/Synapse + LiveKit + секретарь).
Задача 1 — непроектные транскрипции попадают в blago
Сейчас
blago pullтянет только комнатыcapital_project(findByProjectHashфильтрует по kind). Транскрипции комнат пайщиков/совета/секретаря в БД есть, но в инструмент не приходят.findAll+findNonProjectCommunicationRooms(всё кроме capital_project)listNonProjectCommunicationRooms+ querychatcoopListNonProjectCommunicationRoomspullNonProjectCommunicationArtifacts— переписка + транскрипции + memo в отдельную верхнюю папкуrooms/<folder>/{messages,meetings}/(системные комнаты — стабильные папкиkomnata-paishchikov/komnata-soveta; комнаты секретаря — slug + хвост хеша). КурсорtranscriptionLastEndedExclusiveByRoom.Задача 2 — управляемые «Комнаты секретаря»
Принцип (согласован): секретарь присутствует только в backend-созданных комнатах. Force-join в произвольную чужую комнату запрещён (Synapse общий на все кооперативы → дыра). Поэтому секретарь живёт в комнатах, созданных через интерфейс.
roomKindsecretary;SecretaryRoomManagementService(создание public/private, всегда plaintext, force-join только секретаря, создатель — модератор; удаление = kick секретаря + дерегистрация)chatcoopListSecretaryRooms/chatcoopCreateSecretaryRoom/chatcoopRemoveSecretaryRoom, доступ chairman+memberinviteUser/kickUserПроверка
tsc --noEmitпоcomponents/controller— зелёный (inter пересобран).generate-schema+generate-client+ сборки SDK (новые GraphQL-операции). Локально не гонял (по правилам репо — вешает машину); прогон в CI.Миграция БД
Поле
room_kindужеvarchar(32)— новое значениеsecretaryне требует миграции схемы.🤖 Generated with Claude Code
SDK (рукописные обёртки над Zeus — затипизируются после generate-schema/client): - queries: ListNonProjectCommunicationRooms, ListSecretaryRooms - mutations: CreateSecretaryRoom, RemoveSecretaryRoom - селекторы ChatcoopNonProjectCommunicationRoom / ChatcoopSecretaryRoom blago-cli: - pullNonProjectCommunicationArtifacts: переписка + транскрипции + memo комнат пайщиков/совета/секретаря в отдельную верхнюю папку rooms/<folder>/{messages,meetings}/ - курсор transcriptionLastEndedExclusiveByRoom (по matrixRoomId) - системные комнаты — стабильные папки komnata-paishchikov / komnata-soveta; комнаты секретаря — slug + хвост хеша matrixRoomId Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>