О платформе Войти
← К списку версий
v0.27.0 10.08.2026 MINOR
«Что нужно от клиента»: голосовые/заметки проекта и контрольные точки
«Мои данные по проекту» — голосовые и заметки Алексея (админка + клиент)
  • Новая сущность `project_notes` (миграция `2026_08_10_100000_create_project_notes_table.php`): запись с типом (`voice` — голосовое, `text` — заметка, `report` — итоговый отчёт), заголовком, текстом/расшифровкой (markdown), прикреплённым аудио-файлом (название, размер, MIME) и флагом видимости клиенту.
  • Админка (страница проекта): секция «Мои данные по проекту» — добавить голосовое (загрузка файла MP3/M4A/WebM до 20 МБ, диск `private`), заметку или отчёт, редактирование, переключение видимости «видно клиенту/скрыто», скачивание аудио, удаление. Дата записи фиксируется автоматически.
  • Итоговый markdown-отчёт: кнопка «Сформировать итоговый отчёт» собирает все видимые записи проекта в один markdown-отчёт (название проекта, статус, прогресс, ссылка на ИИ-проект `ai_url`, все записи с датами и текстом/аудио) и сохраняет его как запись-отчёт, видимую клиенту.
  • Клиентский кабинет и гостевая страница: секция «Мои данные по проекту» — список видимых записей с датами, отрисованным markdown (`Str::markdown`) и ссылкой на прослушивание/скачивание голосового (маршруты `client.projects.notes.audio`, `guest.project.notes.audio`). Скрытые записи клиенту не показываются.
  • Уведомления: при добавлении записи с чекбоксом «Уведомить клиентов» создаётся уведомление в личном кабинете (тип `project_note`, сервис `ProjectNoteNotificationService`).
  • Модель `ProjectNote` , контроллеры `Admin\AdminProjectNoteController` (store/update/toggleVisibility/destroy/downloadAudio/generateReport) и `Dashboard\ProjectNoteController` (скачивание аудио с проверкой доступа).
«Задачи для клиента» — контрольные точки с ожиданиями от заказчика
  • Доп. поля `client_tasks`: `category` (категория ожидания: документ, оплата, материалы, проверка, возврат, доступ, другое), `template_id` (из какого шаблона создана), `is_blocking` (блокирует проект — «проект остановлен в ожидании клиента») и `client_response` (комментарий клиента при отметке «выполнено»).
  • Новая сущность `client_task_templates` (миграция `2026_08_10_100001_create_client_task_templates_table.php`) — шаблоны-заготовки контрольных точек: название, категория, описание «что нужно от клиента», срок по умолчанию в днях, порядок, активность.
  • Сид `ClientTaskTemplateSeeder` 7 типовых контрольных точек разработки: согласовать ТЗ, подписать договор, внести предоплату, предоставить материалы, проверить работу и согласовать, возврат исходников и доступов, проверить доступ к кабинету.
  • Админка: на странице проекта — блок «Применить шаблон» (выбор шаблона + свой срок + уведомление), в форме создания задачи — категория, шаблон, чекбокс «Блокирует проект»; управление шаблонами (CRUD) на `/admin/client-task-templates`. В таблице задач бейджи: категория, «Блокирует», «Просрочено», ответ клиента.
  • Клиентский кабинет: бейдж «Блокирует проект» и «Просрочено», комментарий при отметке «Отметить выполненной». Гостевая страница: секция «Что нужно от вас» с категорией, сроками и блокирующими задачами.
  • Уведомления и напоминания: в `ClientTaskNotificationService` добавлен метод `remind()` для напоминаний (просрочено / приближается срок / блокирует) — уведомление в кабинет + письмо; исправлена передача `$action` в `createNotification()`.
  • Новое поле `projects.ai_url` ссылка на ИИ-проект (форма редактирования проекта, включается в итоговый отчёт).
Автотесты (14 новых, всего 75/75)
  • `tests/Feature/ProjectNoteFeatureTest.php` (8 тестов): добавление заметки, скрытие от клиента, рендер видимых/скрытых, уведомление клиенту, генерация отчёта, удаление, запрет скачивания аудио клиенту без доступа.
  • `tests/Feature/ClientTaskTemplateFeatureTest.php` (6 тестов): наличие сида шаблонов, создание шаблона, применение шаблона (со сроком из шаблона и со своим сроком), создание блокирующей задачи с категорией, бейдж «Блокирует проект» у клиента, отметка задачи с комментарием.
  • `APP_VERSION` изменён: `0.26.1` → `0.27.0` (`.env`, `.env.example`).
Результат
  • Алексей ведёт голосовые заметки и отчёты по проектам
  • Клиент видит что нужно от него: документы, оплата, проверка
  • Блокирующие задачи останавливают проект до выполнения