Ядро системы (core/)

Раздел документации ядра core/. Здесь описаны слои, DTO, команды/запросы, события, уведомления, исключения, безопасность, value objects, репозитории и конфигурация ядра.

Ядро — это фундамент приложения: пользователи, роли, назначение ролей, уведомления, шина событий, обработка ошибок, безопасность. Модули (modules/*) подключаются к ядру через порты и события.

Структура документов

ДокументСодержание
architecture.mdСлои, DDD, Clean Architecture, CQRS; как ядро взаимодействует с модулями
dto.mdВсе DTO ядра: поля, типы, сериализация, примеры JSON
commands-queries.mdCQRS-команды/запросы и хендлеры ядра (роли, пользователи, назначения)
events.mdШина событий GlobalEventDispatcher, доменные события ядра, подписка модулей
notifications.mdNotificationHub, каналы (email/telegram/push), формат уведомлений
exceptions.mdИерархия доменных исключений, карта HTTP-статусов, JsonErrorHandler
security.mdYiiIdentity, scopes, типы субъектов, интеграция с OAuth
value-objects.mdValue Objects ядра: IdRange, Email, Date, ID-объекты и др.
repositories.mdПорты репозиториев и их реализации, транзакции
configuration.mdКонфигурация ядра: config/*, DI, params, миграции; что задаётся где

Ключевые понятия (кратко)

Карта каталога ядра

core/
├── application/
│   ├── command/        # CQRS-команды (CreateRole, AssignUserRole, SyncUser …)
│   ├── dto/            # DTO ядра (Collection, Item, Error, Success, Role, User, …)
│   ├── handler/        # Хендлеры команд/запросов
│   ├── notification/   # NotificationHub и каналы (email/telegram/push/sms)
│   ├── port/           # Порты: репозитории, диспетчер событий, транзакции
│   └── query/          # CQRS-запросы (ListRole, GetUser, …)
├── domain/
│   ├── entity/         # Role, User, UserRole
│   ├── event/          # UserFirstLoginEvent
│   ├── exception/      # Иерархия доменных исключений (19 классов)
│   └── valueObject/    # Email, Date, IdRange, RoleId, UserId, …
├── infrastructure/
│   ├── event/          # GlobalEventDispatcher
│   ├── handler/        # JsonErrorHandler
│   ├── migrations/     # users, rbac, seed
│   ├── persistence/    # ActiveRecord-модели (UserAR, RoleAR, UserRoleAR)
│   └── repository/     # Db-реализации репозиториев и транзакций
├── presentation/
│   ├── controller/     # BaseController, RoleController, UserController, …
│   ├── request/        # Request-модели (RoleRequest, UserRoleAssignRequest)
│   ├── swagger/        # Аннотации OpenAPI
│   └── view/           # Шаблоны (Swagger UI)
└── security/           # YiiIdentity

Связь с модулями

МодульКак использует ядро
passport/authYiiIdentity (по токену), SyncUserHandler (создание пользователя)
rbacYiiIdentity, доменные исключения (PermissionDeniedException), IAuthorizationService
projectsГлобальное событие UserFirstLoginEvent, уведомления (NotificationHub), IRoleRepository
tasksПорт ITaskStatisticsService, глобальный диспетчер событий, уведомления
feedbackNotificationHub, глобальный диспетчер событий, IUserRepository