bp/TASKS_MODULE_ROADMAP.md

3.4 KiB
Raw Blame History

План доработки модуля Tasks

На основе ТЗ п.3.6


Этап 1: RBAC + валидация (Готово )

  • canCreate() в create(), store()
  • canEdit() в edit(), update(), moveColumn(), complete(), reopen()
  • canDelete() в destroy()
  • Валидация в store(), update()
  • Исправлен нейминг событий: task.* (singular)

Этап 2: Подзадачи (Subtasks) - Готово

2.1 Миграция

task_subtasks (id, task_id, title, is_completed, order_index, created_at)

2.2 Модель + API

  • TaskSubtaskModel
  • addSubtask(), toggleSubtask(), deleteSubtask()

2.3 View

  • Отображение подзадач в task/show.twig
  • Чекбоксы для toggle

Commit: cee6c63, 5bf25d9, 85a920b, f6aebd8


Этап 3: Вложения (Attachments) - Готово (общий сервис)

3.1 Общий AttachmentService

app/Services/AttachmentService.php
app/Models/AttachmentModel.php
app/Database/Migrations/2026-02-08-120000_CreateAttachmentsTable.php

3.2 Структура таблицы

attachments (id, entity_type, entity_id, file_name, file_path, file_size, file_type, uploaded_by, timestamps)

3.3 Использование

Любой модуль может использовать AttachmentService:

$attachmentService->upload('task', $taskId, $file, $userId);
$attachmentService->getByEntity('deal', $dealId);
$attachmentService->delete('contact', $contactId, $attachmentId, $userId);

3.4 Twig функции

  • format_filesize($bytes) - форматирование размера файла
  • get_file_icon($fileType) - иконка типа файла

Commit: 052560c


Этап 4: Комментарии + @mentions

4.1 Миграция

task_comments (id, task_id, user_id, content, mentioned_users(JSON), created_at)

4.2 Обработка @mentions

  • Парсинг @user_id из текста
  • Создание уведомлений для упомянутых

Этап 5: Зависимости задач

5.1 Миграция

task_dependencies (id, blocking_task_id, blocked_task_id, type)

5.2 Логика

  • Проверка при completeTask(): если есть незавершённые blocking tasks — ошибка

Этап 6: Интеграция CRM → Tasks

6.1 Events

Events::on('deal.created')  создать задачу "Первичный контакт"
Events::on('deal.stage_changed')  при этапе "КП" создать задачу
Events::on('deal.won')  создать задачу "Благодарность клиенту"

Этап 7: Интеграция Booking → Tasks

Events::on('booking.created')  создать задачу "Подготовка к встрече"

Приоритеты

Этап Задача Оценка Статус
1 RBAC + валидация Готово
2 Подзадачи Готово
3 Вложения Готово
4 Комментарии + @mentions 12ч В процессе
5 Зависимости -
6 CRM → Tasks -
7 Booking → Tasks -

Готово: 20ч | Осталось: ~30ч