Update TASKS_MODULE_ROADMAP.md - document shared AttachmentService
This commit is contained in:
parent
052560c9b4
commit
0d3bea9e15
|
|
@ -32,48 +32,64 @@ Commit: cee6c63, 5bf25d9, 85a920b, f6aebd8
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Этап 3: Вложения (Attachments)
|
## Этап 3: Вложения (Attachments) - Готово ✅ (общий сервис)
|
||||||
|
|
||||||
## Этап 4: Вложения
|
### 3.1 Общий AttachmentService
|
||||||
|
```
|
||||||
### 4.1 Миграция
|
app/Services/AttachmentService.php
|
||||||
```php
|
app/Models/AttachmentModel.php
|
||||||
task_attachments (id, task_id, file_name, file_path, file_size, uploaded_by, created_at)
|
app/Database/Migrations/2026-02-08-120000_CreateAttachmentsTable.php
|
||||||
```
|
```
|
||||||
|
|
||||||
### 4.2 API
|
### 3.2 Структура таблицы
|
||||||
- uploadAttachment(), deleteAttachment()
|
```
|
||||||
|
attachments (id, entity_type, entity_id, file_name, file_path, file_size, file_type, uploaded_by, timestamps)
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3.3 Использование
|
||||||
|
Любой модуль может использовать AttachmentService:
|
||||||
|
```php
|
||||||
|
$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
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Этап 5: Комментарии + @mentions
|
## Этап 4: Комментарии + @mentions
|
||||||
|
|
||||||
### 5.1 Миграция
|
### 4.1 Миграция
|
||||||
```php
|
```php
|
||||||
task_comments (id, task_id, user_id, content, mentioned_users(JSON), created_at)
|
task_comments (id, task_id, user_id, content, mentioned_users(JSON), created_at)
|
||||||
```
|
```
|
||||||
|
|
||||||
### 5.2 Обработка @mentions
|
### 4.2 Обработка @mentions
|
||||||
- Парсинг `@user_id` из текста
|
- Парсинг `@user_id` из текста
|
||||||
- Создание уведомлений для упомянутых
|
- Создание уведомлений для упомянутых
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Этап 6: Зависимости задач
|
## Этап 5: Зависимости задач
|
||||||
|
|
||||||
### 6.1 Миграция
|
### 5.1 Миграция
|
||||||
```php
|
```php
|
||||||
task_dependencies (id, blocking_task_id, blocked_task_id, type)
|
task_dependencies (id, blocking_task_id, blocked_task_id, type)
|
||||||
```
|
```
|
||||||
|
|
||||||
### 6.2 Логика
|
### 5.2 Логика
|
||||||
- Проверка при completeTask(): если есть незавершённые blocking tasks — ошибка
|
- Проверка при completeTask(): если есть незавершённые blocking tasks — ошибка
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Этап 7: Интеграция CRM → Tasks
|
## Этап 6: Интеграция CRM → Tasks
|
||||||
|
|
||||||
### 7.1 Events
|
### 6.1 Events
|
||||||
```php
|
```php
|
||||||
Events::on('deal.created') → создать задачу "Первичный контакт"
|
Events::on('deal.created') → создать задачу "Первичный контакт"
|
||||||
Events::on('deal.stage_changed') → при этапе "КП" создать задачу
|
Events::on('deal.stage_changed') → при этапе "КП" создать задачу
|
||||||
|
|
@ -82,7 +98,7 @@ Events::on('deal.won') → создать задачу "Благодарност
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Этап 8: Интеграция Booking → Tasks
|
## Этап 7: Интеграция Booking → Tasks
|
||||||
|
|
||||||
```php
|
```php
|
||||||
Events::on('booking.created') → создать задачу "Подготовка к встрече"
|
Events::on('booking.created') → создать задачу "Подготовка к встрече"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue