НАЧАЛО >> Оглавление >> Общее описание >> История изменений >> Что нового в проекте I128 >> Версия 2026.3 >> [I128-2806] Системные треды и публичные коммуникации Collaboration📄 Скачать в DOCX
| Тип | Версия | Статус | Приоритет | Исполнитель |
|---|---|---|---|---|
| ⚙️ Новые возможности | 2026.3 | 🔘 Завершено |
Средний | Ilya Mikhaylenko |
Компоненты: Нет
Завершено: 08.09.2026 13:51
Нужно создать общесистемный модуль Collaboration для содержательной совместной работы вокруг записей ИРБИС 128. Модуль должен хранить треды, сообщения, публичные ответы, внутренние обсуждения, упоминания, реакции, ссылки на документы и вложения, а также выдавать безопасную коммуникационную ленту для карточек задач и других record-based модулей.
Первый практический потребитель Collaboration - модуль Tasks. Миграция VirtualRef должна переносить ответы и публичные коммуникации не в частные поля Tasks, а в общий коммуникационный механизм. TaskPortal должен показывать публичные ответы, комментарии заявителя и непрочитанные сообщения без доступа к внутреннему рабочему месту сотрудников.
Collaboration не является частью Tasks и не заменяет EventBus, Queue, Workflow, WorkflowApproval, Security, UserMessage, I128FMail, TelegramBot, Help или файловое хранилище. Его зона ответственности - хранение и представление содержательной коммуникации, связанной с доменными объектами.
Нужно реализовать конфигурационные сущности CollaborationSpace, CollaborationThreadType, CollaborationMessageType, CollaborationVisibilityPolicy, CollaborationTemplate, CollaborationEventType, CollaborationApiSchema, CollaborationMigrationProfile и CollaborationTestScenario.
Нужно реализовать runtimeхранилище для тредов, сообщений, участников, ссылок на доменные объекты, упоминаний, реакций, привязок вложений, audit и восстановимой проекции ленты. Runtimeхранилище должно иметь версионируемую схему, idempotent EnsureSchema и диагностический GetSchemaStatus.
Нужно реализовать API открытия треда, добавления сообщения, ответа в ветке, изменения видимости, добавления упоминания, реакции, ссылки на документ или вложение. Все операции должны проверять права, видимость и idempotency key.
Нужно поддержать уровни видимости публичного, внутреннего, конфиденциального, технического и персонального сообщения. Публичный DTO не должен раскрывать внутренние комментарии, скрытые поля, технические значения и персональные данные без права.
Нужно интегрироваться с EventBus: Collaboration публикует события о создании сообщения, ответе, упоминании, изменении видимости, реакции и ошибке доставки. EventBus отвечает за доставку, подписки, retry и dead-letter; Collaboration не превращается в технический event log.
Нужно интегрироваться с FT и TemporaryFiles: физические файлы не хранятся в Collaboration, а привязываются как ссылки на объекты файлового хранилища с категорией, видимостью, quarantine state и правами просмотра.
Нужно поддержать связь с WorkflowScreen и WorkflowTransition: комментарий, введенный на экране перехода, должен сохраняться как сообщение Collaboration, а в истории 907 должна оставаться только краткая человекочитаемая отметка действия.
Collaboration владеет тредами, сообщениями, видимостью коммуникаций, упоминаниями, реакциями, ссылками на материалы, публичными ответами и лентой карточки.
Collaboration не владеет записью задачи, workflow-состоянием, правами доступа, доставкой уведомлений, очередями, физическим хранением файлов, заявительским порталом, SLA и доменными переходами Tasks. Эти области остаются у профильных модулей.
Можно создать тред по доменной записи, добавить публичное и внутреннее сообщение, ответить в ветке и получить ленту с учетом прав текущего пользователя.
Публичный пользователь видит только публично разрешенные сообщения, а внутренние комментарии и технические детали не попадают в DTO.
Повторный вызов с тем же idempotency key не создает дубли сообщений и возвращает предсказуемый результат.
Упоминание пользователя или группы создает событие для доставки, но само сообщение остается source of truth в Collaboration.
Вложение сообщения хранится через FT/TemporaryFiles и не копируется в Collaboration.
HealthCheck может проверить версию схемы, наличие обязательных хранилищ и индексов, freshness проекции ленты и базовые ошибки доступа.
TestA должен проверять создание схемы, тред, публичное и внутреннее сообщение, права видимости, idempotency, упоминание, привязку вложения, событие EventBus и rebuild проекции ленты.
Help должен описывать модель тредов, уровни видимости, права, API, интеграцию с Tasks, WorkflowScreen, EventBus и FT, а также диагностику проблем.
-
I128-2806: Системные треды и публичные коммуникации Collaboration
Куда смотреть:
modules/Collaboration/api.php - новый общий runtime-контракт Collaboration: потоки, сообщения, участники, упоминания, ссылки, реакции, привязки вложений, аудит, feed projection, idempotency, HealthCheck.modules/Collaboration/__call/* - стандартные входы модуля с русскими GetTitle/GetDescription/GetParamInfo и типизированными Exec.modules/Collaboration/system/collaboration.json - system JSON первого среза: runtime storages, visibility levels, thread/message/event/API/migration/test definitions.modules/Collaboration/Tests/* - TestA safe-read contract и runtime lifecycle сценарий уровня writes.modules/Collaboration/Help/* - Help: назначение, модель данных, runtime, руководство администратора и программиста.Границы:
Проверки:
C:\i128\php\php.exe -l по всем PHP/inc файлам modules/Collaboration - без синтаксических ошибок.modules/Collaboration/system/collaboration.json прочитан как объект: 11 top-level keys.Collaboration safe-read: total=1, passed=1, failed=0.Collaboration structural safe-read: total=19, passed=19, failed=0.Collaboration writes,queue: total=1, skipped=1, потому что на локальном стенде не установлена запись модуля Collaboration; сценарий включен и будет выполняться после setup.git diff --check - без ошибок.CLI-примечание: при запуске TestA через CLI есть предупреждение Undefined array key "SERVER_PORT" из initsystem.php; оно не относится к Collaboration и не влияет на результат TestA.
[I128-2810] Миграция VirtualRef в промышленный контур Tasks
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2811] Заявительский портал TaskPortal
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2824] Расширить NewsFeed для ленты проектной активности workflow-проектов
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2838] AI-операции задач в модуле Tasks
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2839] Реализовать WorkflowApproval для формальных согласований workflow-переходов
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2793] Ввести TraceContext для сквозной трассировки операций
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2794] Реализовать системную событийную шину EventBus
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2796] Расширить FT как постоянное хранилище вложений задач
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2797] Расширить Security для проектных прав, полей, действий и аудита доступа
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2798] Реализовать HealthCheck для workflow-проектов и задач
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2799] Подготовить TestA-контракты системных JSON и end-to-end сценариев
Статус: Завершено | Автор: Ilya Mikhaylenko