Commit Graph

129 Commits

Author SHA1 Message Date
Hermes 775a72ea29 fix(autocall): «ручное управление» — это НЕ согласованный заказ; кнопку автодозвона по нему больше не блокирует (ошибка из прошлой правки) 2026-09-17 12:04:00 +02:00
Hermes 512aab9ff2 fix(sms): заказы больше не висят в «1-е приглашение отправлено» — в ручную работу переводим от последнего контакта и только по включённым каналам (SMS/автодозвон); заказ, где дата уже выбрана, роботу не звоним 2026-09-16 17:15:43 +02:00
Hermes e35b3d885f fix(autocall): заявку «позвонить сейчас» не закрываем — при закрытом окне звонка блокируем кнопку автодозвона с объяснением (по правилу владельца) 2026-09-16 16:47:49 +02:00
Hermes dacd43165c fix(autocall): заявка «позвонить сейчас» с закрытым окном звонка больше не висит вечно в очереди — планировщик закрывает её, карточка честно говорит «звонить больше не о чем» + кнопка «всё равно позвонить» 2026-09-16 16:39:28 +02:00
Hermes b965216181 feat(sms): в карточке объяснён статус «ручное управление» без ошибок отправки — SMS не отправлялись, согласование шло без SMS 2026-09-16 16:30:02 +02:00
Hermes 5c98a54895 feat(autocall): звонок клиенту, если SMS не ушло (отсчёт от последней попытки) + статусы «не выбрал день/время» вместо «не нажал цифру» 2026-09-16 16:14:34 +02:00
Hermes 7ab3debbb3 fix(logistics): понятные статусы автодозвона в реестре доставок — своя подпись у каждого исхода, «не звонили» только по ожидающим заказам, убраны формулировки удалённых сценариев; единый список подписей для фильтра и бейджа 2026-09-16 11:03:28 +02:00
Hermes 8e9a0f6dab fix(autocall): ручной звонок из карточки звонит клиенту (тестовый режим только для массового обзвона) + видимый процесс звонка в карточке 2026-09-15 15:26:20 +02:00
Hermes dc262d2be7 feat(orders): причина неудачной отправки SMS — в карточке заказа и блоком над таблицей наборов (код 201 = кончились средства) 2026-09-14 15:40:15 +02:00
Hermes c4e2c4a181 feat(autocall): самовывоз — тип звонка pkp/dlv из карточки заказа, выключатель самовывоза, тип в логе и очереди 2026-09-11 10:53:53 +02:00
Hermes 9d1c74eda0 fix(autocall): сводка показывает последний успешный звонок; текст в сводке переносится вместо обрезки 2026-09-10 13:15:47 +02:00
Hermes f378fd05ef fix(autocall): блок «Автодозвон» не появлялся в карточке, если порядок блоков сохранён в localStorage — мердж с дефолтом 2026-09-10 11:32:14 +02:00
Hermes c7a35cdd29 feat(autocall): история звонков в карточке — как у SMS (попытки, слот, сценарий, длительность) 2026-09-10 11:28:39 +02:00
Hermes 04f78f7367 feat(filters): два отдельных фильтра «Статус SMS» и «Статус автодозвона» вместо «Прозвонить» 2026-09-09 14:49:31 +02:00
Hermes 587e12f562 feat(filters): единое поле «Период» без лейблов + упрощённый фильтр «Прозвонить» 2026-09-09 11:59:32 +02:00
Hermes 64bcda8eed feat(autocall): статус автодозвона в карточке (как у SMS) + фильтр «Прозвонить» в таблице + выравнивание переключателя 2026-09-08 13:04:01 +02:00
Hermes 1552c21d99 feat(autocall): автодозвон в карточке доставки — история действий, цепочка этапов, сводка статусов 2026-09-08 12:28:38 +02:00
Hermes 5dbeae84f4 feat(autocall): исключения автодозвона — таблица, UI в настройках, проверка в планировщике, бейдж в реестре/карточке 2026-09-08 11:16:16 +02:00
Hermes 6435679161 feat(autocall): раздел «Коммуникации» с вкладками SMS/Автодозвон/Аналитика, бейджи, карточка заказа, edge fn autocall-result, миграция БД 2026-09-01 21:34:39 +02:00
Hermes 6ca8bd545e fix(call): show & persist 'called' status
- mapOrderGroupRowToDeliveryGroup dropped called/called_at/called_comment
  fields (they were selected but never mapped) so the panel always read
  'not called' and freshly saved calls appeared to vanish.
- CalledPanel: one-tap 'Звонили' marks called with now; app-styled
  date/time dropdowns (CallDateTime) default to current moment for fast
  entry; comment edit form pre-filled.
- OrderDetailPanel: forward real onRefreshOrder (was a silent no-op) so
  the card refreshes from DB after a save.
2026-08-21 14:09:54 +02:00
Hermes f5a06188a2 fix: align row-2 controls by bottom edge of input fields (SMS + toggle flush with dates) 2026-08-19 13:02:30 +02:00
Hermes ebff56c749 fix: SMS dropdown text fits, align hide toggle on row, no skeleton flash on toggle 2026-08-19 12:52:38 +02:00
Hermes 46fac18e28 ui: restructure filters — search wider on row 1, SMS + hide-completed toggle switch on row 2 2026-08-19 12:36:27 +02:00
Hermes 0cdd9f52a4 ui: move hide-completed toggle into filter bar as checkbox next to SMS filter 2026-08-19 12:16:52 +02:00
Hermes 4a4b088949 fix(timeline): StatusSummary/Stepper show real SMS state from sms_campaign_log (delivered/failed), not just first_sms_sent_at 2026-08-14 15:07:22 +02:00
root d5849f0ab2 feat(logistics): highlight and filter orders with SMS problems 2026-08-06 15:12:23 +00:00
root c321353e8f feat(orders): show SMS delivery confirmation and 2nd-SMS skip reason 2026-08-06 13:55:42 +00:00
root 82d6f4f077 feat(orders): show client push subscription and delivery log 2026-08-06 12:06:11 +00:00
root 1f8a8ea2c4 feat(orders): tabbed navigation for logistics blocks (Все + per-block tabs) 2026-08-06 08:03:11 +00:00
root 3a402f7f74 fix(orders): status summary cards with borders + larger text 2026-08-06 07:51:32 +00:00
root db24e8929c feat(orders): exhaustive timeline + status summary + specific field_change labels 2026-08-06 07:48:40 +00:00
root 464cc57eb9 feat(orders): progress stepper + fix field_change label 2026-08-06 07:14:46 +00:00
root 60d6033085 feat(logistics): improve order workflow and aging 2026-08-06 06:52:32 +00:00
root d11ccd4f76 fix: SMS status — show real delivery state from log, expandable SMS text in history 2026-07-22 14:10:56 +00:00
root 0f38ce0095 fix: normalizeDateForInput парсит dd.MM.yyyy + customerDate fallback для логистов 2026-07-14 18:52:02 +00:00
root 3b93e755fb fix: логисты могут ставить Доставлено без части дня + дублирующий индекс удалён 2026-07-14 18:48:03 +00:00
root 48e238e634 fix: логисты могут ставить прошедшие даты + dedup триггер 2026-07-14 18:00:35 +00:00
root 052e5e7e86 fix: calendar overlap + allow past dates for logistician
1. CalendarWidget: add relative to calendar container so absolute popup
   positions correctly (no more overlapping with other elements)
2. OrderDetailPanel: logistician/admin/manager can select past dates
   (3 months back) for retroactive delivery closing
3. canGoBack always true for logistician — can navigate to past months
4. Existing past delivery dates are preserved (not reset to tomorrow)
2026-07-13 14:42:36 +00:00
root c86e0e1ea6 fix: SMS labels — clarify delivered means SMS delivered to phone, not goods
1-е SMS: «✓ доставлено» → «✓ получено клиентом»
2-е SMS: added «✓ получено клиентом»
«ждём подтверждения» → «ждём ответ оператора»
2026-07-13 14:32:19 +00:00
root 5818b94bbe fix: remove duplicate status displays
1. Remove delivery status from info grid (already shown as Badge in header)
2. Remove SMS notification Badge from SmsStatusCard header (timeline shows it)
3. Remove inline hint on blocked buttons — keep only warning banner below
2026-07-13 14:21:57 +00:00
root 755385cf0e fix: StatusActionPanel smart hints + driver name lookup + logistician can edit shipment + completed label
1. StatusActionPanel: all buttons clickable (no more manual:false blocking)
   - Click on current status shows actual state: "Водитель уже назначен: Иван"
   - "Назначен водитель" clickable even if already assigned
   - "Согласовано" clickable even if already agreed
2. Status indicators: green badges ✓ Дата согласована / ✓ Водитель: имя
   + warning badges if missing
3. DriverAssignmentPanel: look up driver name from drivers list if
   assignedDriverName is empty (Supabase join failed)
4. DriverShipmentPanel: now visible to logistician/admin too — can edit
   shipment data (fix wrong driver checkboxes)
5. SmsStatusCard: add completed label ("Завершено")
2026-07-13 13:16:48 +00:00
root 17f93a65ae fix: logistics UI — problem badge overlap, driver name, SMS labels, shipment report
1. LogisticsReadinessBoard: problem badge on separate line (no overlap)
2. DriverAssignmentPanel: show "Водитель назначен" instead of "Неизвестно"
   when driver name not resolved from join
3. SmsStatusCard: "confirmed" label = "Клиент согласовал дату" (not "Согласовано")
4. StatusActionPanel: when currentStatus=problem, all status buttons clickable
   (logistician can resolve problem by setting any status)
5. DriverShipmentReport: show ALL items — green check for delivered,
   red cross for not delivered, with reason comments
2026-07-13 13:07:03 +00:00
root 1ffd8bacc5 fix: block Доставлено/Вывезено without delivery date+half-day, remove Загружено from logistic panel
- StatusActionPanel: removed Загружено button
- StatusActionPanel: Доставлено/Вывезено require deliveryDate + half-day
- StatusActionPanel: warning banner when schedule missing
- Driver status panel in OrderDetailPanel: same schedule check
- Blocked buttons shown dimmed (opacity-40)
2026-07-13 12:02:25 +00:00
root fbfcb71d61 fix: driver delivery UX — remove Загружено status, fix checkbox reset, fix confirmed label
1. Remove "Загружено" status from driver workflow — driver goes directly
   Назначен водитель → Доставлено (or Проблема)
2. Driver can undo "Доставлено" → "Вернуть в работу" (back to Назначен водитель)
3. Fix checkbox reset: shippedItems only resets when order ID changes,
   not on every order data refetch — driver can toggle items freely
4. Fix "confirmed" showing in SMS status card — add Russian label
5. onResetStatus resets to driver_assigned, not loaded
6. ShipmentPanel "Сбросить" works for all active statuses
2026-07-13 11:51:56 +00:00
root edb6784c16 fix: remove duplicate fmtTime declaration in OrderDetailPanel 2026-07-13 11:26:31 +00:00
root 0821bcc747 merge: dev → main — driver table layout, filters, status reset, SMS campaigns, font zones
Merges dev branch into main:
- Driver delivery list: table layout (№, Client, Phone, City, Half-day)
- Driver filters: search, half-day filter, problem sorting
- DriverShipmentPanel: reset status with confirmation
- SmsCampaignPanel: campaigns refactor
- LogisticsReadinessBoard: unified table view
- Font zone classes (fs-zone-card) on all driver components
- SMS campaign scripts updates
2026-07-13 11:24:56 +00:00
root ced5958eac feat: driver filters + status fixes + logistics problem indicator
DriverDeliveryPlanner:
- Text search (name, address, phone, order numbers)
- Half-day filter (morning/afternoon/unknown)
- 'Reset all filters' button
- tel: link on phone in delivery cards
- Order numbers badges in cards
- Partial delivery warning badge
- Problems-first sorting

saveShipmentData fix:
- Partial shipment with problems → status 'problem' (not 'delivered')
- Full shipment → 'delivered' (unchanged)

DriverShipmentPanel:
- Reset button: confirmation dialog when status is final
- Calls onResetStatus to revert delivery status to 'loaded'

OrderDetailPanel (driver status section):
- 'Return to work' button for delivered/problem/picked_up statuses
- Passes onResetStatus + isSavingStatusChange to DriverShipmentPanel

LogisticsReadinessBoard:
- Warning badge for has_delivery_problem groups in table rows
- Shows delivery_problem_note as tooltip
2026-07-10 14:50:15 +00:00
root eabf30bceb fix: stop SMS UI for terminal delivery statuses (picked_up/delivered/cancelled)
- SmsStatusCard: show "SMS не отправляется" when delivery is terminal, hide countdown + restart buttons
- SmsCampaignPanel fmtAgreement: check terminal status FIRST → "✅ Самовывоз завершён" instead of "Самовывоз (неполно)"
- update_delivery_status RPC: reset notification_status→completed on terminal transition
- Add completed to notification_status check constraint
- SW v60→v61
2026-07-04 11:27:03 +00:00
root 1d288279c0 fix: extractCity word boundary + filter persistence in sessionStorage 2026-07-03 14:07:13 +00:00
root 20873bdc5f fix: font zones + stale highlight + fmtTime + SW v49
- FontSettingsContext: body zone first in CSS (specific zones win)
- Arbitrary px sizes (10-14px) overrides in table/card zones
- fs-zone-table on OrdersTable + LogisticsReadinessBoard
- fs-zone-body/heading/nav in AppShell + const navigate = useNavigate()
- Stale delivery highlight: isStale() 24h + bg tint, isLinkOpened 👁
- fmtTime defined in OrderDetailPanel (was used but never declared)
- SmsStatusCard synced from prod
- SW v49 (fixed: addEventListener was broken by sed)
2026-07-02 14:25:40 +00:00