← К списку версий
v0.28.6
18.08.2026
MINOR
Дайджест статуса проектов и уведомления клиентам
Автоматическая рассылка дайджестов клиентам
- Зачем: клиенты не в курсе текущего статуса проекта — что сделано разработчиком, что ожидается от клиента (документы, подписи, ответы). Нужна автоматическая система, которая показывает прогресс «как диаграмма Ганта» и напоминает о просроченных задачах.
- Новая модель email: `ProjectStatusMail` (`app/Mail/ProjectStatusMail.php`) — дайджест статуса проекта с прогресс-баром, списками задач (выполнено / в работе / ожидаем от клиента / просрочено), этапами проекта.
- Email-шаблон: `resources/views/emails/project-status.blade.php` — HTML-письмо с цветовыми секциями: зелёный (выполнено), синий (в работе), жёлтый (ожидаем от клиента), красный (просрочено).
- Сервис: `ProjectStatusNotificationService` (`app/Services/ProjectStatusNotificationService.php`) — вычисляет статус проекта (группировка задач), отправляет дайджест клиенту + копию служебному адресу администратора (адрес из окружения), создаёт in-app уведомление.
- Artisan-команда: `project:status-notify` — отправляет дайджесты по всем активным проектам.
- Расписание: пн/ср/пт в 8:30 (Europe/Minsk) — полный дайджест; ежедневно в 9:00 — напоминания по просроченным задачам клиента.
- Напоминания по просроченным задачам: `ClientTaskNotificationService::remind()` — ранее реализованный метод, который нигде не вызывался. Теперь подключён в расписании (ежедневно 9:00).
- Лог почты: `TYPE_PROJECT_STATUS = 'project_status'` в `MailLog` (дайджест статуса проекта).
- Тип уведомления: `project_status` в `ClientNotification` — in-app уведомления с иконкой `clipboard`.
Синхронизация и актуализация проекта 40 (Бобер Боб)
- Запущена синхронизация с `task.ipd.test/project/15` — данные обновлены (прогресс 50% → 84%, новая задача «Ответ от Егора по поводу теста»).
- Заполнены milestones: старт 17.07.2026, подготовка 17.07–05.08, производство с 05.08 (в работе).
- Добавлено описание проекта.
- `APP_VERSION` изменён: `0.28.5` → `0.28.6` (`.env`).
Автотесты
- `tests/Feature/ProjectStatusNotifyTest.php` (9 тестов, 31 assertion): группировка задач по статусам; отправка дайджеста с MailLog記錄; in-app уведомление с правильным заголовком; обработка только активных проектов; dry-run; overdue-only; тип лога; исключение done/awaiting_confirmation задач из pending; проверка milestones.
Результат
- Клиент получает дайджест статуса проекта по email пн/ср/пт
- Напоминания о просроченных задачах ежедневно