7.9 KiB
7.9 KiB
Design: Admin Test Checklist
Date: 2026-05-24 Status: Approved
Summary
Админ-страница с чек-листом для ручного тестирования функционала сайта. Каждая проверка имеет описание действия и ожидаемый результат. Отметка сохраняется в SQLite с автоматической датой.
Architecture
Data Model
Новая модель ChecklistResult в Prisma schema:
model ChecklistResult {
id String @id @default(cuid())
itemKey String @unique // уникальный ключ проверки
passed Boolean
checkedAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
Elements Source
Элементы чек-листа — хардкод в shared/constants/test-checklist-items.ts (JS + .d.ts). Версионируются с кодом.
Структура элемента:
{
key: string // уникальный идентификатор
section: string // раздел (группировка)
action: string // что сделать
expectedResult: string // что должно произойти
}
API
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()POST /api/admin/test-checklist/reset— сбрасывает все результаты (удаляет записи)
Только для админов.
Frontend
Page: client/src/pages/admin-test-checklist/ui/AdminTestChecklistPage.tsx
- Аккордеон по разделам (MUI Accordion)
- Каждая строка: чекбокс, колонка "Действие", колонка "Ожидаемый результат", дата проверки
- Чекбокс отмечен =
passed: true, снят =passed: false - Дата проставляется автоматически при изменении чекбокса
- Кнопка «Сбросить все» для полного ре-теста
@tanstack/react-queryдля данных,apiClientдля запросов
Navigation: новый пункт в AdminLayoutPage — «Тест-чеклист» с иконкой ClipboardCheck, роут /admin/test-checklist
Sections & Items
Авторизация (auth)
auth.register-email— Регистрация по email → код приходит, аккаунт создаётсяauth.login-password— Вход по паролю → корректный пускает, неправильный — ошибкаauth.oauth-vk— OAuth VK → редирект, callback, авторизацияauth.oauth-yandex— OAuth Yandex → редирект, callback, авторизацияauth.reset-password— Сброс пароля → письмо приходит, ссылка работаетauth.logout— Выход → сессия очищается
Каталог и товары (catalog)
catalog.homepage— Главная → слайдер грузится, товары отображаютсяcatalog.filters— Фильтры → по категории, цене, материалам работаютcatalog.product-page— Страница товара → фото, описание, цена, кнопка "В корзину"catalog.seo— SEO → title, meta, slug корректные
Корзина (cart)
cart.add— Добавление товара → счётчик обновляетсяcart.change-qty— Изменение количества → пересчёт суммыcart.remove— Удаление → товар убирается, сумма пересчитывается
Чекаут (checkout)
checkout.address— Выбор адреса → из сохранённых / новыйcheckout.delivery— Выбор доставки → Почта, OZON, Яндекс, 5postcheckout.payment— Выбор оплаты → онлайн / при полученииcheckout.comment— Комментарий к заказу → поле работаетcheckout.create— Создание заказа → заказ создаётся, статус DRAFT
Оплата (payment)
payment.yookassa— ЮKassa → редирект на оплату, webhook обрабатываетсяpayment.status— Статус платежа → обновляется после webhook
Профиль пользователя (profile)
profile.avatar— Аватар → загрузка, отображение, удалениеprofile.settings— Настройки → email, имя, способы входаprofile.addresses— Адреса → добавление, редактирование, удаление, по умолчаниюprofile.orders— Заказы → список, детали, статусыprofile.messages— Сообщения по заказу → отправка, получение, read stateprofile.notifications— Уведомления → вкл/выкл каналыprofile.delete-account— Удаление аккаунта → данные удаляются
Админ — Товары (admin-products)
admin-products.list— Список → пагинация, поискadmin-products.create— Создание → все поля, загрузка фото, публикацияadmin-products.edit— Редактирование → изменения сохраняютсяadmin-products.delete— Удаление → товар удаляетсяadmin-products.images— Изображения → добавление, сортировка, удаление
Админ — Категории (admin-categories)
admin-categories.crud— CRUD категорий, сортировка
Админ — Заказы (admin-orders)
admin-orders.list— Список → фильтрация по статусу, вниманиеadmin-orders.details— Детали → состав, статус, смена статусаadmin-orders.messages— Сообщения → ответ пользователю
Админ — Отзывы (admin-reviews)
admin-reviews.list— Список → pending/approved/rejectedadmin-reviews.moderate— Модерация → approve/reject
Админ — Пользователи (admin-users)
admin-users.list— Список → email, дата регистрацииadmin-users.orders— Просмотр заказов пользователя
Админ — Галерея (admin-gallery)
admin-gallery.upload— Загрузка, удаление, использование в слайдере
Админ — Настройки (admin-settings)
admin-settings.notifications— Уведомления → email, telegram
Инфо-страницы (info)
info.pages— Доставка, оплата, как заказать, статусы заказовinfo.legal— Политика конфиденциальности, условия использования
SSE / Realtime (sse)
sse.notifications— Уведомления приходят в реальном времени
Implementation Plan
- Prisma migration — добавить модель
ChecklistResult - Shared constants —
test-checklist-items.ts - Server API route — GET/PATCH/POST
- Client page —
AdminTestChecklistPage - Client routing — добавить в
AdminLayoutPage - Register route in
client/src/app/routes/index.tsx