124 lines
3.1 KiB
Markdown
124 lines
3.1 KiB
Markdown
# План доработки модуля Tasks
|
||
|
||
> На основе ТЗ п.3.6
|
||
|
||
---
|
||
|
||
## Этап 1: RBAC + валидация (Готово ✅)
|
||
- [x] `canCreate()` в create(), store()
|
||
- [x] `canEdit()` в edit(), update(), moveColumn(), complete(), reopen()
|
||
- [x] `canDelete()` в destroy()
|
||
- [x] Валидация в store(), update()
|
||
- [x] Исправлен нейминг событий: `task.*` (singular)
|
||
|
||
---
|
||
|
||
## Этап 2: Подзадачи (Subtasks) - Готово ✅
|
||
|
||
### 2.1 Миграция
|
||
```php
|
||
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: Чек-листы - Готово ✅
|
||
|
||
### 3.1 Структура
|
||
```
|
||
task_checklists (id, task_id, title, is_completed, order_index, created_at)
|
||
```
|
||
|
||
### 3.2 Модель + API
|
||
- TaskChecklistModel
|
||
- addChecklistItem(), toggleChecklistItem(), deleteChecklistItem()
|
||
|
||
### 3.3 View
|
||
- Отображение чек-листа в task/show.twig
|
||
- Чекбоксы для toggle
|
||
|
||
Commit: 4a67f00
|
||
|
||
---
|
||
|
||
## Этап 4: Вложения
|
||
|
||
### 4.1 Миграция
|
||
```php
|
||
task_attachments (id, task_id, file_name, file_path, file_size, uploaded_by, created_at)
|
||
```
|
||
|
||
### 4.2 API
|
||
- uploadAttachment(), deleteAttachment()
|
||
|
||
---
|
||
|
||
## Этап 5: Комментарии + @mentions
|
||
|
||
### 5.1 Миграция
|
||
```php
|
||
task_comments (id, task_id, user_id, content, mentioned_users(JSON), created_at)
|
||
```
|
||
|
||
### 5.2 Обработка @mentions
|
||
- Парсинг `@user_id` из текста
|
||
- Создание уведомлений для упомянутых
|
||
|
||
---
|
||
|
||
## Этап 6: Зависимости задач
|
||
|
||
### 6.1 Миграция
|
||
```php
|
||
task_dependencies (id, blocking_task_id, blocked_task_id, type)
|
||
```
|
||
|
||
### 6.2 Логика
|
||
- Проверка при completeTask(): если есть незавершённые blocking tasks — ошибка
|
||
|
||
---
|
||
|
||
## Этап 7: Интеграция CRM → Tasks
|
||
|
||
### 7.1 Events
|
||
```php
|
||
Events::on('deal.created') → создать задачу "Первичный контакт"
|
||
Events::on('deal.stage_changed') → при этапе "КП" создать задачу
|
||
Events::on('deal.won') → создать задачу "Благодарность клиенту"
|
||
```
|
||
|
||
---
|
||
|
||
## Этап 8: Интеграция Booking → Tasks
|
||
|
||
```php
|
||
Events::on('booking.created') → создать задачу "Подготовка к встрече"
|
||
```
|
||
|
||
---
|
||
|
||
## Приоритеты
|
||
|
||
| Этап | Задача | Оценка | Статус |
|
||
|------|--------|--------|--------|
|
||
| 1 | RBAC + валидация | 4ч | ✅ Готово |
|
||
| 2 | Подзадачи | 8ч | ✅ Готово |
|
||
| 3 | Чек-листы | 6ч | ✅ Готово |
|
||
| 4 | Вложения | 8ч | В процессе |
|
||
| 5 | Комментарии + @mentions | 12ч | - |
|
||
| 6 | Зависимости | 6ч | - |
|
||
| 7 | CRM → Tasks | 8ч | - |
|
||
| 8 | Booking → Tasks | 4ч | - |
|
||
|
||
**Готово:** 18ч | **Осталось:** ~38ч
|