Сущности, события и листенеры модуля tasks

Документ описывает доменные события и реакцию на них (листенеры), а также карту подписок из DI.

1. События модуля

Все события — в modules/tasks/domain/event/:

СобытиеКогдаКлючевые данные
TaskCreatedEventСоздана задачаaggregateId (taskId)
TaskUpdatedEventОбновлена задачаaggregateId, changedFields
TaskAssignedEventНазначен исполнительaggregateId, oldAssigneeId, newAssigneeId
TaskMovedToColumnEventЗадача перенесена в колонкуaggregateId, oldColumnId, newColumnId
TaskSoftDeletedEventМягкое удалениеaggregateId
TaskRestoredEventВосстановлениеaggregateId
CommentAddedEventДобавлен комментарийtaskId, commentId
CommentUpdatedEventОбновлён комментарийtaskId, commentId
StickerAttachedToTaskEventСтикер привязан к задачеtaskId, stickerId
TimerStartedEventТаймер запущенtaskId, userId
TimerStoppedEventТаймер остановленtaskId, userId, duration, stoppedAt
IntervalLoggedEventРучной интервал добавленtaskId, userId, intervalId

2. Листенеры

2.1. AutoTimerListener — автотаймер

Активные системные статусы (по имени isActive колонки): в коде захардкожен массив ['in_progress', 'review', 'testing', 'blocked'] как комментарий; фактически решение принимается по флагу isActive колонки.

2.2. PlannedIntervalListener — плановые интервалы

2.3. TimeTrackingListener — дневная сводка

2.4. TaskLoggerListener — логирование

2.5. TaskNotificationListener — уведомления

3. Карта подписок (из modules/tasks/config/di.php)

СобытиеСлушатели
TaskCreatedEventTaskLoggerListener::handleTaskCreated, PlannedIntervalListener::handleTaskCreated
TaskMovedToColumnEventTaskLoggerListener, TaskNotificationListener, AutoTimerListener
TaskAssignedEventTaskLoggerListener, TaskNotificationListener, AutoTimerListener
TaskRestoredEventTaskLoggerListener
TaskSoftDeletedEventTaskLoggerListener, AutoTimerListener
TaskUpdatedEventTaskLoggerListener, PlannedIntervalListener
CommentAddedEventTaskLoggerListener
CommentUpdatedEventTaskLoggerListener
StickerAttachedToTaskEventTaskLoggerListener
TimerStoppedEventTimeTrackingListener, TaskLoggerListener
TimerStartedEventTaskLoggerListener
IntervalLoggedEventTaskLoggerListener

4. Forward-события (в глобальную шину)

Через DispatchingEventDecorator в глобальный IEventDispatcher ядра пробрасываются:

TaskCreatedEvent, TaskAssignedEvent, TaskMovedToColumnEvent, TaskUpdatedEvent,
TaskSoftDeletedEvent, TaskRestoredEvent, CommentAddedEvent, CommentUpdatedEvent,
StickerAttachedToTaskEvent, TimerStartedEvent, TimerStoppedEvent, IntervalLoggedEvent

5. Миграции модуля

МиграцияТаблица
m260224_132704_create_task_statuses_table.phptask_statuses
m260224_132706_create_task_priorities_table.phptask_priorities
m260224_132707_create_tasks_table.phptasks
m260224_132708_create_task_comments_table.phptask_comments
m260224_132712_create_task_time_intervals_table.phptask_time_intervals
m260224_132716_create_task_daily_time_summary_table.phptask_daily_time_summary
m260226_164536_create_stickers_table.phpstickers
m260226_164850_create_task_sticker_map_table.phptask_sticker_map
m260316_152523_add_planned_fields_to_tasks.phptasks (+planned_start, planned_end)
m260316_152704_add_type_to_task_time_intervals.phptask_time_intervals (+type)
m260317_095225_create_board_columns_table.phpboard_columns
m260317_095250_alter_tasks_add_column_id.phptasks (+column_id)
m260409_133019_add_complete_fields_to_tasks.phptasks (+complete)