Модуль projects (проекты, доски, участники, приглашения)

Модуль отвечает за проекты, канбан-доски, участников и приглашения. Взаимодействует с модулем tasks (доски/колонки/задачи) и с ядром (события, уведомления, пользователи).

Документы модуля

ДокументСодержание
architecture.mdСлои, сущности, ключевые классы
dto.mdProjectDto, BoardDto, ProjectUserDto
commands-queries.mdВсе команды/запросы и хендлеры
entities-events.mdСущности, события, листенеры
access.mdIProjectAccess, ProjectAccess, права
configuration.mdDI, routing, параметры

Краткая модель

Проект (Project) 1 ── * Доска (Board)
    │
    ├─ * Участник (ProjectUser role: owner/admin/member)
    └─ * Приглашение (Invitation: pending → accepted/cancelled)

Ключевые классы

КлассРоль
ProjectController, BoardController, ProjectMemberController, InvitationControllerHTTP-эндпоинты
CreateProjectHandler, UpdateProjectHandler, DeleteProjectHandler, …CQRS-хендлеры
ProjectAccessЦентрализованная проверка прав на проекты/доски
ModuleEventDispatcher + DispatchingEventDecoratorШина событий модуля (с пробросом в глобальную)
AddOwnerAsMemberListenerАвтодобавление владельца в участники при создании проекта
SendInvitationEmailListenerОтправка письма с приглашением
CreatePersonalProjectOnUserFirstLoginАвтосоздание личного проекта при первом входе (глобальное событие ядра)
ProjectLoggerListenerЛогирование событий проекта

Взаимодействие

Детали — в документах модуля.