Content Commons -- общая библиотека активов и модерация
Контент, предоставляемый пользователем, совместно используемый между продуктами (песни WorshipCommons, уроки Lessons.church, шаблоны FreeShow, шаблоны веб-сайта B1) проходят через одну очередь модерации, а не отдельный поток рецензирования для каждого продукта. Эта страница охватывает жизненный цикл представления/одобрения, общую модель данных активов и то, где живет модерация.
The asset spine
Две таблицы несут каждый элемент commons, независимо от продукта:
assets-- публичная строка идентификации.status:pending|published|unpublished|removed. Данные, специфичные для типа (детали песни, авторы), живут в вспомогательных таблицах, присоединенных поassetId.assetFiles-- каждый файл, прикрепленный к активу (аудио, изображения, документы), заменяя старые столбцыpath+ разделенные запятымиfilesв отдельных таблицах контента.submissions-- единица модерации. Жизненный цикл:draft → pending → approved | rejected | withdrawn. Представление может быть совершенно новым активом или редактированием существующего опубликованного (автором оригинала или третьей стороной).
Одобрение представления запускает продукт-специфичный publish hook (Api/src/modules/commons/helpers/publishHooks/, например song.ts), который расширяет представление в собственные записи продукта.
Submission flow
CommonsSubmissionController (Api/src/modules/commons/) - это сталкивающийся API конечного пользователя: создайте черновик, пресигнуйте и прикрепите файлы, отправьте на рецензирование или отведите. Его реальные клиенты - внешние сайты производителей (сайт WorshipCommons, Lessons.church, FreeShow, галерея шаблонов веб-сайта B1) -- не B1Admin.
Moderation queue
Очередь живет в B1Admin → Server Admin → Commons (B1Admin/src/serverAdmin/components/CommonsTab.tsx), гейт разрешением Permissions.server.admin -- то же самое, которое гейт Churches/Impersonate/Jobs на той странице. Это внутренний инструмент только для персонала ChurchApps, не то, что видят отдельные церкви.
Три под-вкладки:
- Queue -- каждое представление, ожидающее во всех продуктах, фильтруемое по типу продукта/активов. Каждая строка показывает новый актив против редактирования-от-автора против редактирования-от-третьей-стороны фишку, одобрение послужной список автора, сводку diff поля/файла и возраст (помеченный прошлых 72ч). Review открывает ящик с дифф на уровне поля, предварительным просмотром файла и встроенным предварительным просмотром продукта только для чтения; Одобрить/Отклонить поддерживают ярлыки клавиатуры (j/k для навигации, a/r для действия).
- Reports -- отчеты об авторском праве и политике/качества по опубликованным активам, разделены на две очереди плюс разрешенная история. Член персонала претендует на отчет, затем разрешает его с резолюцией (подтверждено/отклонено/дублировано) и действием (нет/не публиковать/удалить).