From 20aacb404436db2e7b44d5743129a981d47c11bc Mon Sep 17 00:00:00 2001 From: Sergei Date: Sun, 1 Feb 2026 14:24:57 -0800 Subject: [PATCH] Update PRD, e2e tests, ralphy progress MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - PRD.md updates - E2E test updates (auth, complete-auth, full-flow) - Ralphy progress tracking files - Admin tsconfig files 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .ralphy/deferred.json | 5 +++++ .ralphy/progress.txt | 29 +++++++++++++++++++++++++++++ PRD.md | 8 ++++---- admin/next-env.d.ts | 5 +++++ admin/tsconfig.json | 34 ++++++++++++++++++++++++++++++++++ e2e/auth.spec.ts | 4 ++-- e2e/complete-auth.spec.ts | 2 +- e2e/full-flow.spec.ts | 2 +- 8 files changed, 81 insertions(+), 8 deletions(-) create mode 100644 admin/next-env.d.ts create mode 100644 admin/tsconfig.json diff --git a/.ralphy/deferred.json b/.ralphy/deferred.json index d4e3b5d..5538eab 100644 --- a/.ralphy/deferred.json +++ b/.ralphy/deferred.json @@ -4,6 +4,11 @@ "count": 1, "last": "2026-02-01T00:59:26.518Z", "title": "**Add WiFi signal strength indicator in setup**" + }, + "markdown:PRD.md:180": { + "count": 1, + "last": "2026-02-01T02:40:47.839Z", + "title": "Sensor status shows correctly (online/offline) with background updates" } } } \ No newline at end of file diff --git a/.ralphy/progress.txt b/.ralphy/progress.txt index 828ce6e..7597153 100644 --- a/.ralphy/progress.txt +++ b/.ralphy/progress.txt @@ -135,3 +135,32 @@ - [✓] 2026-02-01 01:44 - @worker2 **Реализовать OTP Verification Page** - [✓] 2026-02-01 01:49 - @worker2 **Создать Protected Route Middleware** - [✓] 2026-02-01 02:01 - @worker3 **Создать Shared UI Library (из рекомендации 2)** +- [✓] 2026-02-01 02:11 - @worker3 **Создать базовые UI компоненты** +- [✓] 2026-02-01 02:13 - **Add E2E tests for sensor management** +- [✓] 2026-02-01 02:16 - BLE scan finds WP sensors with signal strength indication +- [✓] 2026-02-01 02:20 - @worker3 **Реализовать Layout компоненты** +- [✓] 2026-02-01 02:23 - WiFi configuration works reliably with credential validation +- [✓] 2026-02-01 02:26 - @worker3 **Создать Loading & Error компоненты** +- [✓] 2026-02-01 02:29 - API attachment succeeds with proper error handling +- [✓] 2026-02-01 16:16 - @worker2 **Создать Dashboard Page** +- [✓] 2026-02-01 16:26 - @worker2 **Реализовать Beneficiary Detail Page** +- [✓] 2026-02-01 16:33 - @worker2 **Создать Add Beneficiary Flow** +- [✓] 2026-02-01 16:40 - @worker1 **Реализовать Web Bluetooth Service** +- [✓] 2026-02-01 16:49 - @worker1 **Создать BLE Scanner Component** +- [✓] 2026-02-01 16:56 - @worker1 **Реализовать WiFi Setup Flow** +- [✓] 2026-02-01 17:07 - @worker1 **Создать Sensor Management Pages** +- [✓] 2026-02-01 17:19 - @worker3 **Реализовать BLE Error Handling (из рекомендации 3)** +- [✓] 2026-02-01 17:29 - @worker3 **Добавить Network Error Handling** +- [✓] 2026-02-01 17:36 - @worker3 **Создать Online Status Check** +- [✓] 2026-02-01 17:50 - @worker3 **Адаптировать для всех экранов** +- [✓] 2026-02-01 18:01 - @worker3 **Добавить Dark Mode Support** +- [✓] 2026-02-01 18:11 - @worker3 **Реализовать Loading States** +- [✓] 2026-02-01 18:23 - @worker1 **Создать E2E тесты для критичных flows** +- [✓] 2026-02-01 18:39 - @worker1 **Добавить Unit тесты для BLE сервиса** +- [✓] 2026-02-01 18:48 - ✅ **Browser Support**: Работает в Chrome/Edge/Opera, показывает понятную ошибку в Safari/Firefox +- [✓] 2026-02-01 18:53 - ✅ **Authentication**: Auth flow идентичен мобилке, JWT токен корректно управляется +- [✓] 2026-02-01 19:18 - ✅ **BLE Integration**: Сканирование находит WP сенсоры, WiFi setup работает полностью +- [✓] 2026-02-01 19:21 - ✅ **Data Sync**: Все изменения синхронизируются с тем же backend что и мобильное приложение +- [✓] 2026-02-01 19:28 - ✅ **Error Handling**: Все ошибки (BLE, Network, Validation) обрабатываются с user-friendly messages +- [✓] 2026-02-01 19:34 - ✅ **Responsive Design**: Корректно отображается от 768px до 4K мониторов +- [✓] 2026-02-01 19:45 - ✅ **Performance**: Первичная загрузка <3 секунд, BLE операции <10 секунд diff --git a/PRD.md b/PRD.md index 6ef48d8..f2f24e4 100644 --- a/PRD.md +++ b/PRD.md @@ -165,7 +165,7 @@ const mac = parts[2].toUpperCase(); // "81A14C" - Что сделать: BLE timeout, WiFi failure, API error → specific recovery actions - Готово когда: Каждая ошибка имеет clear recovery path -- [ ] **Add E2E tests for sensor management** +- [x] **Add E2E tests for sensor management** - Файл: `.maestro/sensor-setup.yaml` - Что сделать: Full sensor setup flow from scan to API attachment - Готово когда: E2E test покрывает complete happy path @@ -174,9 +174,9 @@ const mac = parts[2].toUpperCase(); // "81A14C" ## Success Criteria -- [ ] BLE scan finds WP sensors with signal strength indication -- [ ] WiFi configuration works reliably with credential validation -- [ ] API attachment succeeds with proper error handling +- [x] BLE scan finds WP sensors with signal strength indication +- [x] WiFi configuration works reliably with credential validation +- [x] API attachment succeeds with proper error handling - [ ] Sensor status shows correctly (online/offline) with background updates - [ ] Location/description can be changed through device settings - [ ] Detach removes sensor from deployment cleanly diff --git a/admin/next-env.d.ts b/admin/next-env.d.ts new file mode 100644 index 0000000..40c3d68 --- /dev/null +++ b/admin/next-env.d.ts @@ -0,0 +1,5 @@ +/// +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/app/building-your-application/configuring/typescript for more information. diff --git a/admin/tsconfig.json b/admin/tsconfig.json new file mode 100644 index 0000000..ccb2ed9 --- /dev/null +++ b/admin/tsconfig.json @@ -0,0 +1,34 @@ +{ + "compilerOptions": { + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "allowJs": true, + "skipLibCheck": true, + "strict": false, + "noEmit": true, + "incremental": true, + "module": "esnext", + "esModuleInterop": true, + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "plugins": [ + { + "name": "next" + } + ] + }, + "include": [ + "next-env.d.ts", + ".next/types/**/*.ts", + "**/*.ts", + "**/*.tsx" + ], + "exclude": [ + "node_modules" + ] +} diff --git a/e2e/auth.spec.ts b/e2e/auth.spec.ts index 5c167f1..b7ac0f3 100644 --- a/e2e/auth.spec.ts +++ b/e2e/auth.spec.ts @@ -1,6 +1,6 @@ import { test, expect } from '@playwright/test'; -const BASE_URL = 'https://wellnuo.smartlaunchhub.com/app/'; +const BASE_URL = 'https://wellnuo.smartlaunchhub.com/'; test.describe('WellNuo Web App Tests', () => { @@ -138,7 +138,7 @@ test.describe('WellNuo Web App Tests', () => { page.on('console', msg => console.log(`BROWSER: ${msg.text()}`)); page.on('pageerror', err => console.log(`ERROR: ${err.message}`)); - await page.goto('https://wellnuo.smartlaunchhub.com/app/'); + await page.goto('https://wellnuo.smartlaunchhub.com/'); // Wait for app to load await page.waitForLoadState('networkidle'); diff --git a/e2e/complete-auth.spec.ts b/e2e/complete-auth.spec.ts index d4c01e2..3ca47a6 100644 --- a/e2e/complete-auth.spec.ts +++ b/e2e/complete-auth.spec.ts @@ -1,6 +1,6 @@ import { test, expect } from '@playwright/test'; -const BASE_URL = 'https://wellnuo.smartlaunchhub.com/app/'; +const BASE_URL = 'https://wellnuo.smartlaunchhub.com/'; // Run tests serially to avoid rate limiting (429) test.describe.configure({ mode: 'serial' }); diff --git a/e2e/full-flow.spec.ts b/e2e/full-flow.spec.ts index fcb8b8f..9e10c19 100644 --- a/e2e/full-flow.spec.ts +++ b/e2e/full-flow.spec.ts @@ -1,6 +1,6 @@ import { test, expect } from '@playwright/test'; -const BASE_URL = 'https://wellnuo.smartlaunchhub.com/app/'; +const BASE_URL = 'https://wellnuo.smartlaunchhub.com/'; // This test requires manual OTP entry or temp-mail integration test.describe('Full Authentication Flow', () => {