feat(work-order-dashboard): Phase 2 — Timeline + Chat + Bottom action bar

Right column now shows:
- Timeline card: synthesised events from WO lifecycle fields (created,
  opened, approved, closed) + payments + activity_log entries (spatie/
  activitylog). Sorted newest first, scrollable.
- Chat client card: outbound notifications history (ClientNotificationLog)
  + inline send form. Prefers Telegram if client has telegram_chat_id,
  else falls back to SMS/WhatsApp. Logged either way for UI history.

New bottom action bar (fixed, above footer):
- Previous / Next WO links (adjacent by id) with number preview
- Repeat order: pre-fills create form with same client/vehicle
- Close order (danger button): sets status='done' + closed_at=now, with
  wire:confirm guard. Hidden when already closed.

+14 translations. Fixed ready_at reference (not in schema, removed).
All 306 tests pass.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-05 19:00:28 +00:00
parent fa8704f8b6
commit 9830dd9a6f
4 changed files with 322 additions and 9 deletions
+14
View File
@@ -263,6 +263,7 @@
"Auto": "Авто",
"Auto / model": "Авто / модель",
"Auto CRM": "CRM-авто",
"Auto primit în service": "Авто принято в сервис",
"Auto-import Excel/CSV": "Auto-import Excel/CSV",
"AutoCRM PSauto · psauto.service.mir.md": "AutoCRM PSauto · psauto.service.mir.md",
"AutoCRM SRL": "AutoCRM SRL",
@@ -383,6 +384,7 @@
"Cereri": "Заявки",
"Cereri noi": "Новые заявки",
"Channel": "Канал",
"Chat client": "Чат с клиентом",
"Check-in depozit": "Приёмка на склад",
"Checksum (ISO)": "Checksum (ISO)",
"Cheia HMAC pentru semnarea cererilor + verificarea webhook-urilor de la Paynet.": "Cheia HMAC pentru semnarea cererilor + verificarea webhook-urilor de la Paynet.",
@@ -455,6 +457,7 @@
"Comandă emisă": "Заказ создан",
"Comandă nouă #": "Новый заказ #",
"Comandă primită": "Заказ получен",
"Comandă repetată": "Повторный заказ",
"Combustibil": "Топливо",
"Comentariu / recomandări maistru": "Комментарий / рекомендации мастера",
"Comenzi": "Заказы",
@@ -816,6 +819,7 @@
"Extras": "Выписка",
"Eșapament": "Выхлоп",
"Ești sigur?": "Ты уверен?",
"Eșuat": "Ошибка",
"FIȘĂ DE LUCRU": "ЗАКАЗ-НАРЯД",
"Facturi": "Счета",
"Facturi & abonament": "Facturi & abonament",
@@ -855,9 +859,11 @@
"Fișierul nu există.": "Файл не существует.",
"Fișă": "Наряд",
"Fișă asociată": "Связанный наряд",
"Fișă creată": "Наряд создан",
"Fișă de lucru": "Заказ-наряд",
"Fișă lucru": "Заказ-наряд",
"Fișă lucru (opțional)": "Заказ-наряд (опц.)",
"Fișă închisă": "Наряд закрыт",
"Folie PPF": "Плёнка PPF",
"Folosește AI Assistant": "Использовать AI Assistant",
"Folosește „Check-in depozit": "Используйте «Приёмка на склад»",
@@ -892,6 +898,8 @@
"Fără acest cod, plata va fi greu de identificat.": "Без этого кода платёж трудно идентифицировать.",
"Fără articol (manual)": "Без артикула (вручную)",
"Fără client": "Без клиента",
"Fără client — nu se poate trimite mesaj.": "Нет клиента — сообщение отправить нельзя.",
"Fără evenimente": "Нет событий",
"Fără maistru": "Без мастера",
"Fără mașină": "Без авто",
"Fără răspuns": "Без ответа",
@@ -1168,6 +1176,7 @@
"Merchant Code": "Merchant Code",
"Mesaj": "Сообщение",
"Mesaj client": "Сообщение клиента",
"Mesaj trimis": "Сообщение отправлено",
"Mesaje": "Сообщения",
"Mesaje AI/lună": "AI-сообщения/мес",
"Message": "Сообщение",
@@ -1496,6 +1505,7 @@
"Plată": "Платёж",
"Plată & total": "Оплата и итого",
"Plată anulată": "Plată anulată",
"Plată primită": "Платёж получен",
"Plată reușită": "Plată reușită",
"Plată reușită!": "Plată reușită!",
"Plângere client": "Жалоба клиента",
@@ -1987,6 +1997,7 @@
"Testează bot Telegram": "Тест Telegram-бота",
"Theme color": "Theme color",
"Time": "Время",
"Timeline": "Хронология",
"Timeline & Chat — Phase 2": "Timeline и чат — этап 2",
"Timp deschidere, ms": "Время открытия, мс",
"Timp lucrat": "Отработано",
@@ -2083,6 +2094,7 @@
"Trimite prin email": "Отправить по email",
"Trimite reminder după X zile fără vizită": "Отправить напоминание через X дней без визита",
"Trimite reset parolă": "Отправить сброс пароля",
"Trimitere eșuată — verifică integrarea": "Ошибка отправки — проверьте интеграцию",
"Turbo": "Турбина",
"Type": "Тип",
"UAH — Hryvnia": "UAH — Гривна",
@@ -2517,6 +2529,8 @@
"Începe lucrul": "Начать работу",
"Închide": "Закрыть",
"Închide fișa": "Закрыть наряд",
"Închide fișa?": "Закрыть наряд?",
"Închide fișă": "Закрыть наряд",
"Închidere KZ ÎNAINTE": "Закрытие КЗ ДО",
"Închidere ÎNAINTE": "Закрытие ДО",
"Închis": "Закрыт",