14 KiB
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
Убрать:
productionadminreferences
И свести менеджера/логиста к простым рабочим секциям без обзорного “комбайна”.
- 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
Убрать:
-
kanbanview; -
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.jsif 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
Проверить вручную:
- менеджер видит только список заказов и поиск;
- логист видит готовые и запланированные доставки с датой/половиной дня;
- водитель видит свои доставки и состав заказов;
- клиент видит номер заказа, состав и выбор даты/половины дня.