supersam/docs/superpowers/plans/2026-04-16-role-focused-del...

14 KiB
Raw Permalink Blame History

Role Focused Delivery Simplification 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: Упростить продукт до рабочего delivery-контура из 4 ролей: менеджер, логист, водитель и клиент, убрав лишние разделы, действия и экраны, которые не входят в согласованный scope.

Architecture: Текущий DashboardPage работает как широкий универсальный центр управления заказами. В рамках этого плана он сужается до трёх role-specific рабочих зон: менеджер видит только реестр и поиск, логист видит готовность и план доставки по датам/половине дня, водитель видит свои доставки и состав заказов. Клиентский route /delivery/:token дополняется составом заказа и остаётся отдельным публичным экраном.

Tech Stack: React 18, Vite, existing UI kit, Supabase-backed orders/invitations, Vitest.


File Structure

  • Modify: src/pages/DashboardPage.jsx — убрать лишние секции (production, admin, references, избыточные tabs/orders views) и собрать role-focused рендеринг.
  • Modify: src/hooks/useOrders.js — при необходимости сузить возвращаемые данные и убрать неиспользуемые callbacks.
  • Modify: src/components/dashboard/RoleWorkspacePanel.jsx — переписать описания ролей под итоговый scope.
  • Modify: src/components/orders/OrderFilters.jsx — оставить фильтры, которые реально нужны менеджеру/логисту.
  • Modify: src/components/orders/OrdersTable.jsx — ориентировать таблицу на заказ доставки, номер, клиента, дату доставки и статус.
  • Modify: src/components/orders/OrderDetailPanel.jsx — оставить просмотр деталей, состава заказа и базового статуса, без лишних командных функций.
  • Delete or stop using: src/components/orders/OrderEditorPanel.jsx — создание/редактирование заказов должно уйти из продукта.
  • Delete or stop using: src/components/orders/OrdersKanbanBoard.jsx
  • Delete or stop using: src/components/orders/OrdersCalendarView.jsx
  • Delete or stop using: src/components/admin/AuditPanel.jsx
  • Delete or stop using: src/components/admin/UserOnboardingPanel.jsx
  • Delete or stop using: src/components/dashboard/ProductionQueuePanel.jsx
  • Modify or replace: src/components/logistics/BotControlPanel.jsx — вместо “управления ботами” сделать компактную панель логиста по доставке.
  • Modify or replace: src/components/logistics/DeliverySetDetailPanel.jsx — если оставить, то только как простой delivery detail без производственного слоя; иначе убрать из сценария.
  • Modify: src/components/driver/DriverDeliveryPlanner.jsx — упростить до списка доставок без kanban и reorder.
  • Modify: src/components/driver/DriverDeliveryDetail.jsx — оставить адрес, состав заказа, слот доставки и минимальные действия водителя.
  • Modify: src/pages/ClientDeliveryPage.jsx — показать клиенту состав заказа и информацию по заказу вместе с выбором даты/половины дня.
  • Modify: src/components/client/DeliveryChoiceFlow.jsx — упростить copy и добавить summary по заказу.
  • Modify: src/components/client/DeliveryStateNotice.jsx — оставить только states, которые нужны в реальном клиентском процессе.
  • Modify: src/services/supabase/orderRepository.js — убедиться, что клиентская и role-specific UI берут состав заказа и доставочные поля из реальных данных.
  • Modify: docs/product-overview.md — синхронизировать документ с новым узким scope.
  • Modify: README.md — коротко обновить позиционирование и ссылку на новый scope.

Chunk 1: Scope Guard In Tests

Task 1: Зафиксировать тестами новый role-focused scope

Files:

  • Modify: src/components/orders/OrderFilters.test.jsx

  • Modify or Create: src/pages/DashboardPage.test.jsx

  • Modify or Create: role-specific component tests

  • Step 1: Add failing tests for manager/logistician/driver visible sections

Покрыть:

  • менеджер видит только список заказов, поиск и карточку заказа;

  • логист видит только список готовых/запланированных доставок;

  • водитель видит только свои доставки и состав заказа;

  • лишние секции (production, admin, references, kanban, calendar, archive, history) не рендерятся.

  • Step 2: Run targeted tests to verify current mismatch

Run: npm test -- src/components/orders/OrderFilters.test.jsx src/pages/DashboardPage.test.jsx Expected: FAIL на текущем широком dashboard.

Task 2: Зафиксировать тестом клиентский заказный summary

Files:

  • Modify: src/components/client/DeliveryChoiceFlow.test.jsx

  • Modify or Create: src/pages/ClientDeliveryPage.test.js

  • Step 1: Add failing expectation for client order contents

Покрыть:

  • номер заказа;

  • состав заказа;

  • выбор даты и половины дня.

  • Step 2: Run targeted client tests and confirm failure

Run: npm test -- src/components/client/DeliveryChoiceFlow.test.jsx src/pages/ClientDeliveryPage.test.js Expected: FAIL

Chunk 2: Simplify Dashboard By Role

Task 3: Сузить навигацию и секции dashboard

Files:

  • Modify: src/pages/DashboardPage.jsx

  • Modify: src/components/dashboard/RoleWorkspacePanel.jsx

  • Step 1: Remove non-scope nav sections

Убрать:

  • production
  • admin
  • references

И свести менеджера/логиста к простым рабочим секциям без обзорного “комбайна”.

  • Step 2: Remove extra order tabs

Для менеджера оставить только основной список заказов.

Убрать из пользовательского сценария:

  • calendar

  • kanban

  • history

  • archive

  • Step 3: Re-run dashboard tests

Run: npm test -- src/pages/DashboardPage.test.jsx Expected: PASS

Task 4: Упростить экран менеджера

Files:

  • Modify: src/components/orders/OrderFilters.jsx

  • Modify: src/components/orders/OrdersTable.jsx

  • Modify: src/components/orders/OrderDetailPanel.jsx

  • Step 1: Keep only filters manager really needs

Оставить:

  • поиск по номеру заказа;
  • при необходимости телефон/клиент;
  • статус доставки.

Убрать лишние фильтры и продуктовую лексику, которая больше не используется.

  • Step 2: Keep order details read-first

В карточке заказа оставить:

  • номер;

  • клиент;

  • адрес;

  • состав;

  • дата доставки;

  • половина дня;

  • текущий статус.

  • Step 3: Remove create/edit order entry points

Убрать из пользовательского flow любые кнопки и панели создания/редактирования заказов.

  • Step 4: Re-run manager-facing tests

Run: npm test -- src/components/orders/OrdersTable.test.jsx src/components/orders/OrderDetailPanel.test.jsx src/components/orders/OrderFilters.test.jsx Expected: PASS

Task 5: Упростить экран логиста

Files:

  • Modify: src/pages/DashboardPage.jsx

  • Modify or Replace: src/components/logistics/BotControlPanel.jsx

  • Modify or stop using: src/components/logistics/DeliverySetDetailPanel.jsx

  • Step 1: Replace logistics board with practical delivery list

Логист должен видеть:

  • заказы, готовые на сегодня;

  • доставки, запланированные на завтра/послезавтра;

  • половину дня;

  • текущий статус.

  • Step 2: Keep only logistics actions that are in scope

Оставить:

  • просмотр заказа;
  • фиксацию/изменение даты;
  • фиксацию половины дня;
  • перевод по нужному delivery status.

Убрать:

  • блок “Логика каналов”;

  • широкую bot-control механику;

  • лишние delivery-set детали производства.

  • Step 3: Re-run logistics-focused tests

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

Task 6: Упростить экран водителя

Files:

  • Modify: src/components/driver/DriverDeliveryPlanner.jsx

  • Modify: src/components/driver/DriverDeliveryDetail.jsx

  • Modify: src/pages/DashboardPage.jsx

  • Step 1: Remove planner-heavy behaviors

Убрать:

  • kanban view;

  • reorder drag-and-drop;

  • лишние фильтры, которые не нужны для показа.

  • Step 2: Keep delivery essentials only

Оставить:

  • адрес;

  • клиент;

  • слот доставки;

  • состав заказа;

  • базовые статусы водителя.

  • Step 3: Re-run driver-facing tests

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

Chunk 3: Client Page Completion

Task 7: Показать клиенту состав заказа и delivery summary

Files:

  • Modify: src/pages/ClientDeliveryPage.jsx

  • Modify: src/components/client/DeliveryChoiceFlow.jsx

  • Modify: src/components/client/DeliveryStateNotice.jsx

  • Modify: src/services/supabase/orderRepository.js if extra fields need mapping

  • Step 1: Add order items to invitation view model

Убедиться, что клиентская страница получает:

  • номер заказа;

  • имя клиента;

  • состав заказа;

  • доступные даты;

  • половины дня.

  • Step 2: Render order composition above slot choice

Показать клиенту:

  • номер заказа;

  • адрес/краткое описание;

  • список позиций заказа.

  • Step 3: Keep state notices minimal and product-focused

Оставить только сообщения для:

  • активного выбора;

  • уже согласованной доставки;

  • передачи логисту;

  • доставленного заказа.

  • Step 4: Re-run client tests

Run: npm test -- src/components/client/DeliveryChoiceFlow.test.jsx src/components/client/DeliverySlotsPicker.test.jsx src/pages/ClientDeliveryPage.test.js Expected: PASS

Chunk 4: Documentation Sync

Task 8: Синхронизировать документацию с новым scope

Files:

  • Modify: docs/product-overview.md

  • Modify: README.md

  • Step 1: Update product overview

Описать только:

  • менеджера;

  • логиста;

  • водителя;

  • клиента.

  • Step 2: Remove unsupported features from docs

Убрать из описаний:

  • производство;

  • админку как отдельный пользовательский продукт;

  • создание заказов;

  • канбан/архив/историю как целевые экраны.

  • Step 3: Re-read docs against current UI

Проверить, что документация описывает ровно тот интерфейс, который остался после упрощения.

Chunk 5: Final Verification

Task 9: Прогнать целевую регрессию после упрощения

Files:

  • Reference: src/pages/DashboardPage.jsx

  • Reference: src/pages/ClientDeliveryPage.jsx

  • Reference: docs/product-overview.md

  • Step 1: Run focused UI suite

Run: npm test -- src/pages/DashboardPage.test.jsx src/components/orders/OrdersTable.test.jsx src/components/orders/OrderDetailPanel.test.jsx src/components/orders/OrderFilters.test.jsx src/components/client/DeliveryChoiceFlow.test.jsx src/components/client/DeliverySlotsPicker.test.jsx src/pages/ClientDeliveryPage.test.js Expected: PASS

  • Step 2: Run service regression tests

Run: npm test -- src/services/orderService.test.js src/services/deliveryInvitationApi.test.js src/context/AuthContext.test.js src/components/auth/OtpLoginForm.test.jsx Expected: PASS

  • Step 3: Manual acceptance check

Проверить вручную:

  • менеджер видит только список заказов и поиск;
  • логист видит готовые и запланированные доставки с датой/половиной дня;
  • водитель видит свои доставки и состав заказов;
  • клиент видит номер заказа, состав и выбор даты/половины дня.