Update PRD, e2e tests, ralphy progress

- 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 <noreply@anthropic.com>
This commit is contained in:
Sergei 2026-02-01 14:24:57 -08:00
parent 68aba0cb77
commit 20aacb4044
8 changed files with 81 additions and 8 deletions

View File

@ -4,6 +4,11 @@
"count": 1, "count": 1,
"last": "2026-02-01T00:59:26.518Z", "last": "2026-02-01T00:59:26.518Z",
"title": "**Add WiFi signal strength indicator in setup**" "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"
} }
} }
} }

View File

@ -135,3 +135,32 @@
- [✓] 2026-02-01 01:44 - @worker2 **Реализовать OTP Verification Page** - [✓] 2026-02-01 01:44 - @worker2 **Реализовать OTP Verification Page**
- [✓] 2026-02-01 01:49 - @worker2 **Создать Protected Route Middleware** - [✓] 2026-02-01 01:49 - @worker2 **Создать Protected Route Middleware**
- [✓] 2026-02-01 02:01 - @worker3 **Создать Shared UI Library (из рекомендации 2)** - [✓] 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 секунд

8
PRD.md
View File

@ -165,7 +165,7 @@ const mac = parts[2].toUpperCase(); // "81A14C"
- Что сделать: BLE timeout, WiFi failure, API error → specific recovery actions - Что сделать: BLE timeout, WiFi failure, API error → specific recovery actions
- Готово когда: Каждая ошибка имеет clear recovery path - Готово когда: Каждая ошибка имеет clear recovery path
- [ ] **Add E2E tests for sensor management** - [x] **Add E2E tests for sensor management**
- Файл: `.maestro/sensor-setup.yaml` - Файл: `.maestro/sensor-setup.yaml`
- Что сделать: Full sensor setup flow from scan to API attachment - Что сделать: Full sensor setup flow from scan to API attachment
- Готово когда: E2E test покрывает complete happy path - Готово когда: E2E test покрывает complete happy path
@ -174,9 +174,9 @@ const mac = parts[2].toUpperCase(); // "81A14C"
## Success Criteria ## Success Criteria
- [ ] BLE scan finds WP sensors with signal strength indication - [x] BLE scan finds WP sensors with signal strength indication
- [ ] WiFi configuration works reliably with credential validation - [x] WiFi configuration works reliably with credential validation
- [ ] API attachment succeeds with proper error handling - [x] API attachment succeeds with proper error handling
- [ ] Sensor status shows correctly (online/offline) with background updates - [ ] Sensor status shows correctly (online/offline) with background updates
- [ ] Location/description can be changed through device settings - [ ] Location/description can be changed through device settings
- [ ] Detach removes sensor from deployment cleanly - [ ] Detach removes sensor from deployment cleanly

5
admin/next-env.d.ts vendored Normal file
View File

@ -0,0 +1,5 @@
/// <reference types="next" />
/// <reference types="next/image-types/global" />
// NOTE: This file should not be edited
// see https://nextjs.org/docs/app/building-your-application/configuring/typescript for more information.

34
admin/tsconfig.json Normal file
View File

@ -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"
]
}

View File

@ -1,6 +1,6 @@
import { test, expect } from '@playwright/test'; 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', () => { 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('console', msg => console.log(`BROWSER: ${msg.text()}`));
page.on('pageerror', err => console.log(`ERROR: ${err.message}`)); 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 // Wait for app to load
await page.waitForLoadState('networkidle'); await page.waitForLoadState('networkidle');

View File

@ -1,6 +1,6 @@
import { test, expect } from '@playwright/test'; 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) // Run tests serially to avoid rate limiting (429)
test.describe.configure({ mode: 'serial' }); test.describe.configure({ mode: 'serial' });

View File

@ -1,6 +1,6 @@
import { test, expect } from '@playwright/test'; 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 // This test requires manual OTP entry or temp-mail integration
test.describe('Full Authentication Flow', () => { test.describe('Full Authentication Flow', () => {