# 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** Проверить вручную: - менеджер видит только список заказов и поиск; - логист видит готовые и запланированные доставки с датой/половиной дня; - водитель видит свои доставки и состав заказов; - клиент видит номер заказа, состав и выбор даты/половины дня.