supersam/supabase/functions
root d397d0cb24 feat: configurable business schedule (delivery/pickup/SMS days)
- New table business_schedule_settings (delivery_days, pickup_days, sms_days)
- RPC get_business_schedule() (public) + update_business_schedule() (admin)
- Admin UI: BusinessSchedulePanel with day pills for each category
- ClientDeliveryPage: fetches schedule, replaces hardcoded Sunday/weekend checks
- PickupSlotsPicker: uses pickupDays prop instead of hardcoded isWeekend
- Edge function confirm-delivery-choice: reads delivery_days from DB
- delivery-invitations.ts: buildDefaultDatedAvailableSlots reads delivery_days
- RPC confirm_delivery_choice_by_token: checks delivery_days instead of extract(dow)=0
- SMS scripts: get_sms_days() reads sms_days from business_schedule_settings
  and overrides per-campaign work_days setting
- Nav item Расписание for mega_admin and admin roles
- Default: Mon-Fri (1,2,3,4,5) for all three categories
2026-07-03 12:45:02 +00:00
..
_shared feat: configurable business schedule (delivery/pickup/SMS days) 2026-07-03 12:45:02 +00:00
chatbot-webhook Harden auth and delivery endpoints 2026-05-13 18:59:30 +03:00
confirm-delivery-choice feat: configurable business schedule (delivery/pickup/SMS days) 2026-07-03 12:45:02 +00:00
create-delivery-invitation fix: RLS recursion, driver UI, auth errors, status counts 2026-05-20 16:25:05 +03:00
get-delivery-invitation fix: RLS recursion, driver UI, auth errors, status counts 2026-05-20 16:25:05 +03:00
main feat: add pickup (самовывоз) delivery type 2026-06-10 12:02:46 +00:00
manage-users fix: manage-users — remove manual public.users insert, trigger handle_new_user does it via user_metadata 2026-06-30 07:04:24 +00:00
report-delivery-result fix: RLS recursion, driver UI, auth errors, status counts 2026-05-20 16:25:05 +03:00
request-otp security: fix 9 vulnerabilities + OrdersTable 14px font + colored status badges 2026-06-19 12:14:19 +00:00
send-chatbot-message Harden auth and delivery endpoints 2026-05-13 18:59:30 +03:00
transfer-to-logistics fix: RLS recursion, driver UI, auth errors, status counts 2026-05-20 16:25:05 +03:00
update-order-group-delivery-choice fix: убрать генерацию pickup_code — приходит из 1С, показывать только при самовывозе 2026-06-16 07:36:47 +00:00
verify-otp security: fix 9 vulnerabilities + OrdersTable 14px font + colored status badges 2026-06-19 12:14:19 +00:00
README.md feat(delivery): auto-create invitation links 2026-05-13 18:59:30 +03:00
import_map.json fix: RLS recursion, driver UI, auth errors, status counts 2026-05-20 16:25:05 +03:00

README.md

Edge Functions

chatbot-webhook

Принимает webhook от telegram, vk, messenger_max, нормализует сообщение, пишет его в chat_messages и при необходимости обновляет статус заказа и order_history.

Требует подпись X-Signature или Authorization: Bearer <INTEGRATION_API_KEY>, а также ограничивает частоту входящих событий.

Пример вызова:

curl -X POST \
  'https://<project>.supabase.co/functions/v1/chatbot-webhook?provider=telegram' \
  -H 'Content-Type: application/json' \
  -d '{
    "order_id": "uuid",
    "text": "Подтверждаю",
    "action": "confirm_delivery",
    "external_message_id": "tg-42",
    "payload": {"slot_id": "slot-1"}
  }'

send-chatbot-message

Принимает исходящее сообщение, подготавливает dispatch в нужный канал и логирует отправку в chat_messages.

Если передан workflowAction=send_delivery_offer, функция дополнительно переводит заказ в Ожидает ответа клиента и выставляет delivery_agreement_status = 'Отправлено клиенту'.

Ожидаемые переменные:

  • SUPABASE_URL
  • SUPABASE_SERVICE_ROLE_KEY
  • INTEGRATION_API_KEY
  • INTEGRATION_WEBHOOK_SECRET
  • TELEGRAM_BOT_TOKEN
  • VK_BOT_TOKEN
  • MESSENGER_MAX_TOKEN

request-otp

Отправляет код входа по email после проверки лимитов по IP и адресу. Используется страницей логина вместо прямого вызова supabase.auth.signInWithOtp из браузера.

verify-otp

Проверяет код входа, тоже с rate limit, и возвращает session для установки в клиенте.

create-delivery-invitation

Создает или обновляет активное приглашение для публичной клиентской ссылки, сохраняет delivery_invitations, обновляет заказ в статус Ожидает ответа клиента и возвращает публичный URL.

Обязательная переменная окружения:

  • PUBLIC_APP_URL

get-delivery-invitation

Возвращает публичное состояние приглашения по токену. Используется страницей клиента для показа актуального статуса заказа.

confirm-delivery-choice

Фиксирует выбор времени доставки клиентом, переводит заказ в Доставка согласована и создает историю события.

update-order-group-delivery-choice

Фиксирует ручное согласование доставки по группе order_groups. Используется менеджером или логистом, когда клиент согласовал дату и половину дня напрямую.

transfer-to-logistics

Используется для ручной передачи заказа логисту или перевода в Платное хранение.

report-delivery-result

Фиксирует итог доставки, включая успешную доставку и проблемные сценарии.