docs: update test checklist spec — 3-state status + error comments

This commit is contained in:
Kirill
2026-05-24 16:47:51 +05:00
parent 6f29da65cc
commit b757f18bfb
@@ -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` для запросов