Владелец: «нужно видеть, согласование прошло через пуш/смс/звонок/вручную через менеджера» и «в колонке с именем клиента пишется просто «Согласовано» — непонятно как и кем». Плюс в карточке «завтра/послезавтра» читалось как дата заказа. Источник правды — order_groups.delivery_date_source: manual (логист), autocall (робот), и теперь push/sms/messenger/client от клиентской страницы. Раньше клиентское подтверждение канал не писало вовсе — такие записи разбираются по confirmed_at приглашения (канал «link» → «По ссылке»). - миграция 20260929_confirmation_channel.sql: confirm_delivery_choice_by_token принимает p_src и сохраняет канал в delivery_date_source + action_logs.details; - клиентская страница читает ?src= из ссылки и прокидывает в RPC (SMS-ссылка уже содержит src=sms); - orderGroupViews: resolveConfirmChannel/confirmChannelMeta — единый источник подписей канала, плюс invitationConfirmedAt в репозитории (и в списке, и в карточке); - реестр доставок/самовывозов: под статусом чип «как согласовано» (📞 звонок робота, ✉️ SMS-ссылка, 🔔 push, 🧑💼 логист, 🔗 по ссылке); - карточка заказа: рядом с «Согласовано» тот же чип; - AutocallStatusCard: «робот предлагал: завтра или послезавтра» вместо голого «завтра/послезавтра» (читалось как дата заказа); - Аналитика: в «Пути заказа» блок «Как согласовали дату» — полосы по каналам (за 30 дней: логист 135, по ссылке 20, звонок робота 7, push 0). Тесты: orderGroupViews +4, OrderPathFunnelBlock +1 (37 зелёных в этих файлах). SW v128. |
||
|---|---|---|
| .vscode | ||
| ats-patch | ||
| docs | ||
| public | ||
| scripts | ||
| src | ||
| supabase | ||
| volumes | ||
| .env.example | ||
| .gitignore | ||
| .opencode.json | ||
| 1 | ||
| Caddyfile | ||
| Dockerfile | ||
| QWEN.md | ||
| README.md | ||
| anonymize_xml.py | ||
| deno.lock | ||
| deploy.log | ||
| deploy.sh | ||
| docker-compose.app.yml | ||
| docker-compose.dev.yml | ||
| docker-compose.yml | ||
| eslint.config.js | ||
| index.html | ||
| no8-logic.js | ||
| package-lock.json | ||
| package.json | ||
| postcss.config.js | ||
| tailwind.config.js | ||
| vite.config.js | ||
| webhook-deploy.py | ||
| webhook-listener.py | ||
| webhook_listener.py | ||
README.md
Construction Delivery Control
React-приложение для управления доставкой заказов. В текущем контуре есть три внутренние роли и публичная страница клиента: менеджер, логист, водитель и клиент.
Запуск
npm install
npm run dev
Деплой
Приложение разворачивается через Docker (docker-compose.app.yml). Сборка и запуск:
docker compose -f docker-compose.app.yml up -d --build
Автодеплой
Настроен webhook в Gitea: при пуше в main автоматически запускается деплой.
- Webhook listener: systemd-сервис
supersam-webhookна порту 9000 - Gitea hook: push в
main→POST http://10.0.2.1:9000/webhook/supersam - deploy.sh:
git pull origin main→docker compose up -d --build - Репозиторий:
https://git.supersamsev.ru/mihail/supersam
Главный документ
- Обзор системы — назначение приложения, роли, сценарии, клиентский flow и подготовка к показу.
Что уже есть
- OTP-вход по email через Supabase Auth.
- Role-based dashboard для менеджера, логиста и водителя.
- Карточка заказа с составом, комментариями и историей.
- Публичная страница
/delivery/:tokenдля выбора даты, половины дня и просмотра состава заказа. - Самовывоз — вкладки Доставка/Самовывоз на клиентской странице, выбор даты и половины дня самовывоза, информация о бесплатном хранении (2 рабочих дня) и платном (300₽/день).
- Supabase SQL-схема, таблицы приглашений и Edge Functions для invitation flow.
- Документация по продукту, архитектуре и сценариям.
Структура
src/— интерфейс и клиентская логика.src/constants/deliveryWorkflow.js— статусы доставки, включая самовывоз.src/components/client/DeliverySlotsPicker.jsx— виджет выбора слотов доставки.src/components/client/PickupSlotsPicker.jsx— виджет выбора слотов самовывоза.src/components/client/DeliveryChoiceFlow.jsx— флоу согласования доставки/самовывоза.src/pages/ClientDeliveryPage.jsx— публичная страница с вкладками Доставка/Самовывоз.src/components/orders/OrderDetailPanel.jsx— карточка заказа с управлением доставкой и самовывозом.supabase/schema.sql— структура БД, роли, индексы, RLS, триггеры.supabase/functions/— Edge Functions для приглашений, статусов и чат-коммуникаций.supabase/seed/stage-1-demo.sql— набор seed-данных для показа заказчику.docs/architecture.md— архитектура фронтенда и модулей.docs/product-overview.md— общий обзор продукта, ролей и сценариев.docs/scenarios.md— сценарии жизненного цикла заказа.docs/n8n-order-group-delivery-flow.md— потоки n8n для оркестрации доставки.