docs: update test checklist spec — 3-state status + error comments
This commit is contained in:
@@ -2,22 +2,24 @@
|
||||
|
||||
**Date:** 2026-05-24
|
||||
**Status:** Approved
|
||||
**Updated:** 2026-05-24 (v2 — 3-state status + error comments)
|
||||
|
||||
## Summary
|
||||
|
||||
Админ-страница с чек-листом для ручного тестирования функционала сайта. Каждая проверка имеет описание действия и ожидаемый результат. Отметка сохраняется в SQLite с автоматической датой.
|
||||
Админ-страница с чек-листом для ручного тестирования функционала сайта. Каждая проверка имеет описание действия и ожидаемый результат. Отметка сохраняется в SQLite с автоматической датой. Поддерживает 3 состояния: пройдено / не пройдено (с комментарием об ошибке) / не проверено.
|
||||
|
||||
## Architecture
|
||||
|
||||
### Data Model
|
||||
|
||||
Новая модель `ChecklistResult` в Prisma schema:
|
||||
Модель `ChecklistResult` в Prisma schema:
|
||||
|
||||
```prisma
|
||||
model ChecklistResult {
|
||||
id String @id @default(cuid())
|
||||
itemKey String @unique // уникальный ключ проверки
|
||||
passed Boolean
|
||||
passed Boolean // true = пройдено, false = не пройдено
|
||||
comment String? // описание ошибки (при passed: false)
|
||||
checkedAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
}
|
||||
@@ -25,7 +27,7 @@ model ChecklistResult {
|
||||
|
||||
### Elements Source
|
||||
|
||||
Элементы чек-листа — хардкод в `shared/constants/test-checklist-items.ts` (JS + .d.ts). Версионируются с кодом.
|
||||
Элементы чек-листа — хардкод в `shared/constants/test-checklist-items.js` (JS + .d.ts). Версионируются с кодом.
|
||||
|
||||
Структура элемента:
|
||||
```ts
|
||||
@@ -41,8 +43,8 @@ model ChecklistResult {
|
||||
|
||||
**Server route:** `server/src/routes/api/admin/test-checklist.js`
|
||||
|
||||
- `GET /api/admin/test-checklist` — возвращает все элементы + их результаты из БД
|
||||
- `PATCH /api/admin/test-checklist` — body: `{ itemKey, passed }`, обновляет/создаёт результат, `checkedAt = now()`
|
||||
- `GET /api/admin/test-checklist` — возвращает все элементы + их результаты из БД (включая `comment`)
|
||||
- `PATCH /api/admin/test-checklist` — body: `{ itemKey, passed, comment? }`, обновляет/создаёт результат, `checkedAt = now()`. При `passed: true` комментарий очищается.
|
||||
- `POST /api/admin/test-checklist/reset` — сбрасывает все результаты (удаляет записи)
|
||||
|
||||
Только для админов.
|
||||
@@ -52,9 +54,9 @@ model ChecklistResult {
|
||||
**Page:** `client/src/pages/admin-test-checklist/ui/AdminTestChecklistPage.tsx`
|
||||
|
||||
- Аккордеон по разделам (MUI Accordion)
|
||||
- Каждая строка: чекбокс, колонка "Действие", колонка "Ожидаемый результат", дата проверки
|
||||
- Чекбокс отмечен = `passed: true`, снят = `passed: false`
|
||||
- Дата проставляется автоматически при изменении чекбокса
|
||||
- Каждая строка: 3-состоятельный статус (✅ пройдено / ❌ не пройдено / ⬜ не проверено), колонка "Действие", колонка "Ожидаемый результат", колонка "Комментарий" (показывает текст ошибки с tooltip), дата проверки
|
||||
- При выборе «Не пройдено» — открывается диалог с обязательным полем «Описание ошибки» (textarea)
|
||||
- Диалог: заголовок «Описание ошибки — {название проверки}», placeholder «Опишите, что пошло не так...», кнопки «Отмена» / «Сохранить», валидация — поле обязательно при ❌
|
||||
- Кнопка «Сбросить все» для полного ре-теста
|
||||
- `@tanstack/react-query` для данных, `apiClient` для запросов
|
||||
|
||||
|
||||
Reference in New Issue
Block a user