15 KiB
Delivery Platform Contract Implementation Plan
For agentic workers: REQUIRED: Use superpowers:subagent-driven-development (if subagents available) or superpowers:executing-plans to implement this plan. Steps use checkbox (
- [ ]) syntax for tracking.
Goal: Реализовать договорной объем проекта: self-hosted кабинет с ролями, клиентскую страницу согласования доставки, автоматизации на n8n/Edge Functions, ручную обработку логистом, платное хранение, интеграцию с 1С, обучение и приемку по 3 этапам.
Architecture: Основа остается в существующем React + Supabase приложении. Внутренние рабочие места продолжают жить в текущем dashboard, а клиентский сценарий выносится в отдельный публичный route с серверной валидацией состояния заказа. Критичные бизнес-переходы и интеграционные контракты фиксируются в Supabase schema/Edge Functions, а n8n используется как orchestration-слой для SMS, напоминаний и обмена с 1С.
Tech Stack: React 18, Vite, existing UI kit, Vitest, Supabase self-hosted, Supabase SQL/RLS, Supabase Edge Functions, n8n, self-hosted VPS deployment docs.
File Structure
- Modify:
src/router.jsx— добавить публичный клиентский route и сохранить текущую dashboard-навигацию. - Create:
src/pages/ClientDeliveryPage.jsx— страница выбора доставки по ссылке. - Create:
src/components/client/DeliveryChoiceFlow.jsx— основной клиентский flow выбора/подтверждения/информационных состояний. - Create:
src/components/client/DeliveryStateNotice.jsx— read-only состояния: уже согласовано, передано логисту, платное хранение, доставлено. - Create:
src/components/client/DeliveryChoiceFlow.test.jsx— UI/flow тесты клиентской страницы. - Modify:
src/constants/deliveryWorkflow.js— новые статусы и метаданные (Ожидает ответа клиента,Передан логисту,Платное хранение). - Modify:
src/services/orderService.js— чистые переходы статусов, напоминания, ручная передача логисту, исключения доставки. - Modify:
src/services/orderService.test.js— тесты на новые переходы и guard rules. - Modify:
src/data/mockAppData.js— договорные demo-сценарии ролей, логиста, клиента и неуспешной доставки. - Modify:
src/pages/DashboardPage.jsx— вывести логисту ручную обработку, платное хранение и delivery exceptions. - Modify:
src/components/logistics/BotControlPanel.jsxor split — логистические действия для ручного согласования и повторной доставки. - Modify:
src/components/driver/DriverDeliveryPlanner.jsx - Modify:
src/components/driver/DriverDeliveryDetail.jsx— фиксация успешной/неуспешной доставки и причины. - Modify:
supabase/schema.sql— invitation/session tables, integration event tables, дополнительные статусы/поля. - Modify:
supabase/functions/_shared/workflow.ts— серверная карта переходов для delivery agreement flow. - Create:
supabase/functions/_shared/delivery-invitations.ts— общая логика поиска/валидации активной клиентской ссылки. - Create:
supabase/functions/create-delivery-invitation/index.ts— создание активной клиентской ссылки дляn8n. - Create:
supabase/functions/get-delivery-invitation/index.ts— отдача публичного состояния клиентской страницы. - Create:
supabase/functions/confirm-delivery-choice/index.ts— подтверждение half-day выбора клиента. - Create:
supabase/functions/transfer-to-logistics/index.ts— ручная передача заказа логисту/платное хранение по automation signals. - Create:
supabase/functions/report-delivery-result/index.ts— фиксация delivery result + payload для1С. - Modify:
supabase/functions/README.md— обновить serverless contracts. - Create:
docs/operations/self-hosted-deploy.md— требования к VPS, доменам, балансам, старту работ. - Create:
docs/integrations/n8n-delivery-flow.md— webhook contracts, reminder schedule, SMS/1Сresponsibilities. - Create:
docs/training/logistics-playbook.md - Create:
docs/training/driver-playbook.md - Modify:
docs/scenarios.md - Modify:
docs/architecture.md
Chunk 1: Contract Stage 1 Foundation And Demo Approval
Task 1: Зафиксировать self-hosted стартовые условия и договорные ограничения
Files:
-
Create:
docs/operations/self-hosted-deploy.md -
Modify:
README.md -
Описать старт работ: VPS/Beget or agreed provider, домен/поддомен для app и Supabase, баланс минимум на 2 месяца.
-
Зафиксировать, что
1С, SMS и домены предоставляет/обеспечивает Заказчик. -
Прогнать sanity-check документации вручную.
Task 2: Подготовить demo-модель статусов и ролей под договор
Files:
-
Modify:
src/constants/deliveryWorkflow.js -
Modify:
src/data/mockAppData.js -
Modify:
src/services/orderService.js -
Modify:
src/services/orderService.test.js -
Написать падающие тесты на новые статусы:
Ожидает ответа клиентаПередан логистуПлатное хранение- повторная доставка после
Проблема доставки
-
Прогнать таргетированные тесты.
- Run:
npm test -- src/services/orderService.test.js - Expected: FAIL
- Run:
-
Реализовать минимальные переходы в
orderService. -
Обновить workflow metadata и demo data под новые сценарии.
-
Прогнать таргетированные тесты повторно.
- Run:
npm test -- src/services/orderService.test.js - Expected: PASS
- Run:
Task 3: Добавить публичный demo-route клиентского выбора доставки
Files:
-
Modify:
src/router.jsx -
Create:
src/pages/ClientDeliveryPage.jsx -
Create:
src/components/client/DeliveryChoiceFlow.jsx -
Create:
src/components/client/DeliveryStateNotice.jsx -
Create:
src/components/client/DeliveryChoiceFlow.test.jsx -
Написать падающие UI-тесты на:
- активный выбор half-day
- уже согласованную доставку
- передан логисту
- платное хранение
-
Прогнать только новый клиентский набор тестов.
- Run:
npm test -- src/components/client/DeliveryChoiceFlow.test.jsx - Expected: FAIL
- Run:
-
Реализовать публичную страницу и базовые read/write состояния на demo data.
-
Прогнать тесты повторно.
- Run:
npm test -- src/components/client/DeliveryChoiceFlow.test.jsx - Expected: PASS
- Run:
Task 4: Показать логисту ручную ветку в dashboard
Files:
-
Modify:
src/pages/DashboardPage.jsx -
Modify:
src/components/logistics/BotControlPanel.jsx -
Modify: related test files if coverage already exists
-
Вывести для логиста заказы в
Ожидает ответа клиента,Передан логисту,Платное хранение,Проблема доставки. -
Добавить действия ручного согласования и передачи на следующий статус в demo mode.
-
Ручная проверка stage 1 demo:
- login by role
- internal dashboard
- client page
- manual logistics branch
Chunk 2: Contract Stage 2 Core Delivery Workflow
Task 5: Спроектировать и внедрить schema changes для delivery invitation flow
Files:
-
Modify:
supabase/schema.sql -
Modify:
supabase/functions/_shared/workflow.ts -
Написать SQL-план таблиц/полей для:
- client invitation/session
- event/audit integration state
- optional manual handling reason fields
-
Обновить server-side workflow map под новые статусы.
-
Проверить schema diff вручную на совместимость с текущими
orders,delivery_slots,order_history.
Task 6: Реализовать Edge Functions для клиентской ссылки и логистической передачи
Files:
-
Create:
supabase/functions/_shared/delivery-invitations.ts -
Create:
supabase/functions/create-delivery-invitation/index.ts -
Create:
supabase/functions/get-delivery-invitation/index.ts -
Create:
supabase/functions/confirm-delivery-choice/index.ts -
Create:
supabase/functions/transfer-to-logistics/index.ts -
Modify:
supabase/functions/README.md -
Написать падающие tests for shared workflow/helpers where feasible.
-
Реализовать создание активной ссылки без TTL-expiry logic, только по status guard.
-
Реализовать confirm half-day choice и перевод в
Доставка согласована. -
Реализовать transfer to logistics для reminder escalation.
-
Обновить function README с request/response contract.
Task 7: Перевести клиентский route с demo на реальный Supabase contract
Files:
-
Modify:
src/pages/ClientDeliveryPage.jsx -
Modify:
src/components/client/DeliveryChoiceFlow.jsx -
Modify:
src/components/client/DeliveryStateNotice.jsx -
Modify or Create: supporting client-side service file if needed
-
Подключить загрузку invitation state из Edge Function.
-
Подключить подтверждение выбора half-day.
-
Показать серверные состояния:
- active choice
- already agreed
- transferred to logistics
- paid storage
- delivered
-
Прогнать client flow tests и обновить их под реальный contract.
Task 8: Описать n8n orchestration и внешние зависимости
Files:
-
Create:
docs/integrations/n8n-delivery-flow.md -
Modify:
docs/scenarios.md -
Зафиксировать в docs:
- SMS #1
- SMS #2 after no click
- reminder after opened-but-not-confirmed
- transfer to logistics
- paid storage notification
1Сinbound/outbound responsibilities of customer
-
Добавить webhook payload examples for
n8n.
Chunk 3: Contract Stage 3 End-To-End Integrations And Operations
Task 9: Реализовать delivery result flow и integration payloads for 1С
Files:
-
Create:
supabase/functions/report-delivery-result/index.ts -
Modify:
src/components/driver/DriverDeliveryPlanner.jsx -
Modify:
src/components/driver/DriverDeliveryDetail.jsx -
Modify: related driver tests if present
-
Написать падающие tests на:
ДоставленПроблема доставки- возврат логисту после failed delivery
-
Прогнать таргетированные driver/order service tests.
-
Реализовать driver result payload preparation for
n8n/1С. -
Обновить UI водителя для обязательной фиксации причины неуспешной доставки.
Task 10: Завершить ручную ветку логиста и платное хранение
Files:
-
Modify:
src/pages/DashboardPage.jsx -
Modify:
src/components/logistics/BotControlPanel.jsx -
Modify:
src/services/orderService.js -
Modify:
src/services/orderService.test.js -
Добавить логистические действия:
- ручное согласование
- перевод в платное хранение
- снятие с платного хранения после новой договоренности
-
Закрепить audit entries/history comments for these transitions.
-
Прогнать order/logistics tests.
Task 11: Подготовить обучение и эксплуатационные документы
Files:
-
Create:
docs/training/logistics-playbook.md -
Create:
docs/training/driver-playbook.md -
Modify:
docs/architecture.md -
Описать сценарии логиста:
- auto agreement monitoring
- manual follow-up
- paid storage
- repeat delivery
-
Описать сценарии водителя:
- confirmed route
- delivered
- failed delivery
-
Обновить architecture doc под публичный client route и integrations layer.
Chunk 4: Final Verification And Handoff
Task 12: Полная техническая проверка
Files:
-
Reference:
docs/superpowers/plans/2026-03-30-delivery-platform-contract-plan.md -
Прогнать unit/integration tests.
- Run:
npm test - Expected: PASS
- Run:
-
Прогнать линтер.
- Run:
npm run lint - Expected: PASS
- Run:
-
Прогнать production build.
- Run:
npm run build - Expected: PASS
- Run:
-
Ручная проверка:
- role login
- demo/dashboard
- public client route
- logistics manual flow
- driver result flow
- integration payload visibility
Task 13: Договорная приемка по этапам
Files:
-
Reference: contract stage description
-
Reference:
docs/training/logistics-playbook.md -
Reference:
docs/training/driver-playbook.md -
Подготовить demo checklist для Этапа 1.
-
Подготовить production checklist для Этапа 2.
-
Подготовить launch + training checklist для Этапа 3.
-
Зафиксировать, какие входы со стороны Заказчика обязательны до каждой приемки:
- VPS and balance
- domain/subdomain
- SMS provider
1Сresponsible person1Сdata contract