supersam/docs/superpowers/plans/2026-04-14-role-switch-and-...

84 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Role Switch And Production Copy 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:** Добавить служебный вход по специальному email с выбором роли, убрать demo/PWA-подачу из интерфейса и подготовить клиентскую showcase-ссылку для показа.
**Architecture:** Обычный OTP flow остается без изменений. Новая служебная ветка определяется на уровне login/auth helper-логики через специальный email `roles@local` и использует локальный fallback-профиль выбранной роли без OTP. UI-copy в логине, overview и клиентской странице упрощается до рабочего нейтрального тона, а PWA explanatory panel убирается из overview.
**Tech Stack:** React 18, Vite, existing UI kit, Vitest, local fallback auth, Supabase Auth.
---
## Chunk 1: Role Switch Entry
### Task 1: Зафиксировать тестами служебный вход по специальному email
**Files:**
- Modify: `src/components/auth/OtpLoginForm.test.jsx`
- Modify: `src/context/AuthContext.test.js`
- [ ] **Step 1: Add failing tests for service email mode**
- [ ] **Step 2: Run targeted auth tests and confirm failure**
- [ ] **Step 3: Verify copy no longer references demo mode in production path**
### Task 2: Реализовать special-email вход без OTP
**Files:**
- Modify: `src/context/AuthContext.jsx`
- Modify: `src/pages/LoginPage.jsx`
- Modify: `src/components/auth/OtpLoginForm.jsx`
- [ ] **Step 1: Add helper constants for `roles@local` and service mode detection**
- [ ] **Step 2: Route special-email flow to local role-based sign-in**
- [ ] **Step 3: Update login form labels/buttons for service mode**
- [ ] **Step 4: Re-run targeted auth tests and confirm pass**
## Chunk 2: Production Copy Cleanup
### Task 3: Убрать demo/PWA explanatory copy
**Files:**
- Modify: `src/pages/DashboardPage.jsx`
- Modify: `src/pages/LoginPage.jsx`
- Modify: `src/components/auth/OtpLoginForm.jsx`
- Modify: `README.md` if needed
- [ ] **Step 1: Remove PWA explanatory panel from overview**
- [ ] **Step 2: Replace demo-oriented labels/messages with neutral product copy**
- [ ] **Step 3: Re-run affected UI tests**
## Chunk 3: Client Showcase Link
### Task 4: Добавить локальную клиентскую showcase-ссылку
**Files:**
- Modify: `src/services/deliveryInvitationApi.js`
- Modify: `src/pages/ClientDeliveryPage.jsx`
- Modify: `src/components/client/DeliveryChoiceFlow.test.jsx`
- Modify or Create: related test file if needed
- [ ] **Step 1: Add failing test for showcase token payload**
- [ ] **Step 2: Implement local invitation for showcase token**
- [ ] **Step 3: Verify tomorrow/after-tomorrow and half-day slots are shown**
- [ ] **Step 4: Re-run client tests and confirm pass**
## Chunk 4: Final Verification
### Task 5: Проверка итогового сценария
**Files:**
- Reference: `src/pages/LoginPage.jsx`
- Reference: `src/pages/DashboardPage.jsx`
- Reference: `src/pages/ClientDeliveryPage.jsx`
- [ ] **Step 1: Run targeted test suite**
Run: `npm test -- src/context/AuthContext.test.js src/components/auth/OtpLoginForm.test.jsx src/components/client/DeliveryChoiceFlow.test.jsx src/components/client/DeliverySlotsPicker.test.jsx`
Expected: PASS
- [ ] **Step 2: Run broader UI regression checks**
Run: `npm test -- src/components/orders/OrdersTable.test.jsx src/components/orders/OrderDetailPanel.test.jsx src/components/orders/OrderFilters.test.jsx src/services/orderService.test.js`
Expected: PASS