supersam/docs/superpowers/plans/2026-03-30-delivery-platfor...

15 KiB
Raw Permalink Blame History

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.jsx or 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
  • Реализовать минимальные переходы в orderService.

  • Обновить workflow metadata и demo data под новые сценарии.

  • Прогнать таргетированные тесты повторно.

    • Run: npm test -- src/services/orderService.test.js
    • Expected: PASS

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
  • Реализовать публичную страницу и базовые read/write состояния на demo data.

  • Прогнать тесты повторно.

    • Run: npm test -- src/components/client/DeliveryChoiceFlow.test.jsx
    • Expected: PASS

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: npm run lint
    • Expected: PASS
  • Прогнать production build.

    • Run: npm run build
    • Expected: PASS
  • Ручная проверка:

    • 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 person
    • 1С data contract