Commit Graph

43 Commits

Author SHA1 Message Date
Hermes bf2b3559ae fix(analytics): честные цифры согласований — без согласования, тестовые звонки, открытия ссылки, единый канал
Триггер закрытия без даты больше не пишет «Согласовано» (новый статус closed_without_confirmation + backfill 128 строк). Робот/логист/ссылка считаются по событию одним классификатором (блоки больше не расходятся), тестовые звонки исключены, «Открыли ссылку» — по access_count, «не достали» разделено на «в работе» и «закрыто».
2026-10-03 00:34:57 +02:00
Hermes c58f2b0629 fix(ui): закрытый баннер SMS больше не возвращается (отпечаток без суммы), баланс один на всех страницах; feat(autocall): статусы «не выбрал день» / «не выбрал время» / «и то и другое» (БД + бейдж + фильтр) 2026-09-17 12:32:53 +02:00
Hermes 512aab9ff2 fix(sms): заказы больше не висят в «1-е приглашение отправлено» — в ручную работу переводим от последнего контакта и только по включённым каналам (SMS/автодозвон); заказ, где дата уже выбрана, роботу не звоним 2026-09-16 17:15:43 +02:00
Hermes 5c98a54895 feat(autocall): звонок клиенту, если SMS не ушло (отсчёт от последней попытки) + статусы «не выбрал день/время» вместо «не нажал цифру» 2026-09-16 16:14:34 +02:00
Hermes aeb4bbf63f fix(autocall): убраны сценарии «0» и «9» из диалога и из презентации; пауза между звонками 1 час; граница половины дня 13:00; в презентации готовность по обмену с 1С, без готовности в субботу 2026-09-16 10:36:01 +02:00
Hermes 833d2dcd44 fix(autocall): в презентации готовность приходит по обмену с 1С, а не отметкой менеджера; PDF и HTML собираются из одного файла содержания 2026-09-15 18:02:22 +02:00
Hermes d9ded99e81 docs(autocall): HTML-версия презентации из общего файла содержания (deck_content.py), проверка совпадения текста с PDF 2026-09-15 15:50:19 +02:00
Hermes ed89222834 docs(autocall): презентация «Автодозвон: как это работает» (PDF, 16 слайдов) + скрипт сборки и проверки вёрстки 2026-09-15 15:38:49 +02:00
Hermes 5a71fbceba docs(ats): образцы звучания собираются из списка файлов AGI-харнесса + скрипт сборки (в ручном образце «в пятницу» вместо «сегодня») 2026-09-15 09:56:37 +02:00
Hermes 47b3ccf28f fix(autocall): убран сценарий «0 — позвать менеджера» — такой цифры в диалоге нет, менеджер подключается только эскалацией 2026-09-15 09:50:26 +02:00
Hermes 44f58ce9e7 fix(autocall): доставка предлагает реальные рабочие дни графика (пт → пн/вт), эскалация по настройкам админки, WAIT FOR DIGIT и «0 — менеджер» 2026-09-15 09:40:43 +02:00
Hermes 6ebdc41667 fix(ats): название компании «Супер Сам» (пробел) — выбор владельца, залито на АТС 2026-09-14 14:51:31 +02:00
Hermes f9395d7d05 fix(ats): название компании раздельно в озвучках (Супер, Сам) + инструкция по генерации и проверке озвучек 2026-09-14 14:27:26 +02:00
Hermes 270ab39abc fix(autocall): самовывоз только по рабочим дням графика + робот называет реальные дни; страница клиента читает график 2026-09-11 15:40:29 +02:00
Hermes f62a6b525b feat(autocall): окно самовывоза 3 дня (сегодня/завтра/послезавтра), даты из диалога, гео-исключения как у SMS 2026-09-11 11:29:49 +02:00
Hermes feb3fc1b07 fix(agi): обрыв диалога — отдаём результат в БД (иначе звонок задним числом записывался как «не взял трубку») 2026-09-11 11:05:57 +02:00
Hermes c4e2c4a181 feat(autocall): самовывоз — тип звонка pkp/dlv из карточки заказа, выключатель самовывоза, тип в логе и очереди 2026-09-11 10:53:53 +02:00
Hermes 46a3609233 fix(autocall): исход «не взял трубку» — добор истёкших заявок + детект объявления оператора в AGI 2026-09-10 15:27:59 +02:00
Hermes 76fd38ceaa docs(ats): ss-dialog.agi с getvar + send_result (curl в БД при фиксации выбора) 2026-09-01 22:50:43 +02:00
Hermes d6c3e02f24 docs(ats): diffs for Pasha — SS-Autocall-Slot context, AGI curl, pbx_spool autoload 2026-09-01 21:55:00 +02:00
Hermes 6435679161 feat(autocall): раздел «Коммуникации» с вкладками SMS/Автодозвон/Аналитика, бейджи, карточка заказа, edge fn autocall-result, миграция БД 2026-09-01 21:34:39 +02:00
root c1e5f109be docs: SMS campaigns architecture + font settings + stale highlight 2026-07-02 14:37:58 +00:00
root a879ad01c3 fix: get_delivery_invitation_by_token returns full order composition with items
RPC was returning only top-level invoice numbers (nom) without the nested
product items inside orderList[].items[]. Now returns {name, quantity, items}
structure matching flattenOrderProducts() expectations in OrderCompositionPanel.

Before: orderItems = [{name: 'ТП-008590', quantity: '1'}]
After:  orderItems = [{name: 'ТП-008590', items: [{name: 'СФ Т\ЕА-28944', items: [{product_name, product_quantity, product_ed}]}]}]

Also includes stop words, delivery type, pickup code, payed_ship fields.
2026-06-23 05:12:00 +00:00
root b74add32ef fix: skip Sunday in delivery date selection (client flow + backend validation)
- buildDefaultDatedAvailableSlots(): skip Sunday via getNextWorkday()
- ClientDeliveryPage.jsx: getAllowedDeliveryDateKeys() + fallback slots skip Sunday
- confirm-delivery-choice edge function: reject Sunday for delivery
- confirm_delivery_choice_by_token SQL RPC: extract(dow) = 0 → RAISE EXCEPTION
- Tests: Friday→Sat+Mon, Saturday→Mon+Tue (skip Sunday)
- Skill updated with pitfall
2026-06-23 04:56:49 +00:00
root 158026b49f fix: RLS-политика для водителя + SQL-миграция
- Водитель не мог сохранить данные отгрузки — RLS блокировал UPDATE
- Добавлена политика: driver может UPDATE order_groups где assigned_driver_id = auth.uid()
- Сохранена SQL-миграция в docs/sql/
2026-06-15 16:08:00 +00:00
root 14fe89f899 docs: update documentation for pickup (самовывоз) feature and autodeploy 2026-06-10 12:22:56 +00:00
Codex 43c5f75055 feat: delivery page improvements and driver shipment workflow
- OrderCompositionPanel: flatten nested source_orders into product list, collapsed by default
- DeliverySlotsPicker: single-line heading 'Доставка завтра · 22.05.2026' instead of two-line
- OrderDetailPanel: add logistics status change panel, reorder sections (delivery date → driver → status → paid storage)
- OrderDetailPanel: require delivery date before assigning driver
- GroupDetailPage: dedicated route /dashboard/group/:groupId instead of modal
- DashboardPage: navigate to group detail page instead of opening modal
- DriverDeliveryPlanner: remove 'agreed' status, add city filter pills, group by status within dates
- DriverDeliveryPlanner: show delivery address instead of order numbers/ready count/SMS
- DriverShipmentPanel: new component with per-item checkboxes, ship-all, comments for unshipped items
- OrderDetailPanel: driver sees shipment panel + status buttons; 'delivered' requires all items shipped or commented
- Driver status: start from 'Назначено вам' (driver_assigned), not 'agreed'
- Remove duplicate header from GroupDetailPage
2026-05-22 12:53:43 +03:00
Codex 9abfbff654 feat: show order composition collapsed with product list from source_orders
- OrderCompositionPanel now collapsed by default with position count badge
- Flattens all products from source_orders into a single list
- RPC migration to extract items from source_orders (needs DB deploy)
- Edge Function updated to include source_orders items
- Removed Edge Function enrichment hack from fetchDeliveryInvitation
2026-05-21 14:18:10 +03:00
Codex e6dc1972fb feat: show full order composition on delivery page
- Extract OrderCompositionPanel as standalone component
- Support nested order items with sub-positions from source_orders
- Enrich order items from Edge Function when RPC only has invoice refs
- Update RPC SQL to extract product items from source_orders
- Update Edge Function to include source_orders items in invitation
- Add detail rows (account, customer) when no order items available
2026-05-21 11:52:46 +03:00
Codex b9c6bb2810 fix: RLS recursion, driver UI, auth errors, status counts
- Fix infinite RLS recursion in users policies via current_role_name()
- Add is_admin() helper and simplify users select policies
- Fix order_groups insert for service_role (n8n integration)
- Fix status option counts in dropdown (LogisticsReadinessBoard)
- Add driver delivery status buttons (loaded, on_route, delivered, problem, cancelled)
- Replace driver date range filters with single date picker + date pills
- Hide SMS/internal data from driver view in OrderDetailPanel
- Fix Edge Function error messages in OTP flow (read error.context body)
- Add update_delivery_status RPC for driver workflow
- Remove customer column from order_groups fetch (DB schema mismatch)
- UI: swap filter/search positions, limit modal width, status label cleanup
2026-05-20 16:25:05 +03:00
Codex fc74241378 fix(delivery): show invoice refs in client flow 2026-05-14 12:51:25 +03:00
Codex eeb2620547 fix(delivery): switch public flow to rpc 2026-05-13 18:59:30 +03:00
Codex 633973142d fix(delivery): load links and schedule SMS 2026-05-13 18:59:30 +03:00
Codex b79de7afba feat(delivery): auto-create invitation links
Add a Supabase trigger that creates delivery invitations and writes delivery_link on order_groups changes. n8n can now consume link_ready rows without calling the edge function first.
2026-05-13 18:59:30 +03:00
Codex 684424dd25 feat(order-groups): wire driver delivery flow 2026-05-13 18:59:30 +03:00
Codex e29a51e7ea Harden auth and delivery endpoints 2026-05-13 18:59:30 +03:00
Codex 5dcfa80940 Polish demo UI and delivery filters 2026-05-13 18:59:30 +03:00
Codex a5113a2ed5 feat: simplify delivery roles and docs 2026-04-16 13:31:17 +03:00
Codex ca72a4e662 feat: document product and wire real client flow 2026-04-14 23:20:50 +03:00
Codex b147d632e8 feat: add role switch login and clean production copy 2026-04-14 23:01:02 +03:00
Codex 49e60d48c1 feat: complete delivery workflow updates 2026-04-13 16:32:18 +03:00
Codex a534d53e61 feat: tighten email otp auth flow 2026-04-09 22:35:13 +03:00
Codex b40a4a553e Initial import 2026-03-14 18:40:54 +03:00