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:
parent
68aba0cb77
commit
20aacb4044
@ -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"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -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
8
PRD.md
@ -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
5
admin/next-env.d.ts
vendored
Normal 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
34
admin/tsconfig.json
Normal 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"
|
||||||
|
]
|
||||||
|
}
|
||||||
@ -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');
|
||||||
|
|||||||
@ -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' });
|
||||||
|
|||||||
@ -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', () => {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user