QUALITY / RELEASE V1
Проверяемый результат.
Понятный следующий шаг.
1. Матрица трассировки
| Потребность | Требования | Компоненты | Проверка |
|---|---|---|---|
| Найти материал | FR-01, FR-02, FR-03 | Catalog API, поиск, фильтры, карточка | UI: категория + поиск, сортировка, открытие карточки |
| Понять полную сумму | FR-04, BR-01..06 | POST quotes, калькулятор | API: эталонные суммы, рейсы, тонны, самовывоз |
| Рассчитать слой | FR-05 | Помощник объёма | UI: 100 м² × 10 см = 10 м³ |
| Сохранить запрос | FR-06, BR-07..11 | POST orders, форма | API: валидация, 201, повтор, конкурентные запросы |
| Проверить заявку | FR-07, BR-13 | GET orders/{id}, диалог | API: верный/неверный секрет, перезапуск |
| Понять статус MVP | FR-08..10 | Баннеры, HTML, README | Ошибки API, локальные ссылки и ограничения |
2. Сценарии ручной приёмки
| ID | Действия | Ожидаемый результат |
|---|---|---|
| UI-01 | Открыть главную, выбрать «Щебень», ввести «20» | Только подходящие щебни; счётчик соответствует |
| UI-02 | Установить сортировку «дешевле» | Цена за м³ возрастает |
| UI-03 | Открыть карточку, закрыть Escape, открыть и нажать расчёт | Диалог работает с клавиатурой; выбранный товар перенесён |
| UI-04 | 10 м³ карьерного песка, до 30 км, рассчитать | 6 500 ₽ материал + 6 500 ₽ доставка = 13 000 ₽ |
| UI-05 | После расчёта сменить зону или количество | Старые сумма и форма заявки скрываются до нового расчёта |
| UI-06 | Помощник: 100 м², слой 10 см; использовать | В калькулятор перенесены 10 м³ |
| UI-07 | Выбрать самовывоз | Стоимость доставки и рейсы равны 0 |
| UI-08 | Оставить согласие пустым; выбрать организацию без названия | Форма/сервер не разрешают отправку |
| UI-09 | Отправить с тестовыми контактами | Номер KR-…, статус, код; без обещания реальной поставки |
| UI-10 | Проверить заявку через «Моя заявка» | Последний номер подставляется; сервер подтверждает сводку |
| UI-11 | Остановить API, перезагрузить портал | Ошибка загрузки; нет фиктивных цен или успешной заявки |
| UI-12 | Проверить 390 px и 1440 px, навигацию, формы, диалог | Читаемый адаптивный интерфейс и доступные кнопки |
| UI-13 | Открыть HTML-документацию с диска без сети | Все 5 страниц связаны и читаемы; стили встроены |
3. Автоматизированные проверки
Сценарий tests/api.test.mjs собирает/запускает отдельный API с изолированным временным хранилищем, проверяет каталог, расчёт, пределы, ошибки, защиту суммы, повтор и конкурентность заявки, доступ по коду и сохранность после перезапуска. Тестовые данные не используются рабочим сервером.
Результаты конкретного запуска фиксируются в docs/verification.json и кратко в docs/verification.html. Отсутствие проверки или ограничение инструмента должно быть явно указано, а не отмечено успешным.
4. Ограничения и риски
| Риск | Приоритет | Уменьшение / решение |
|---|---|---|
| Тестовые цены ошибочно воспринимаются как реальные | Высокий | Маркировка демо в нескольких местах; заменить каталог перед запуском |
| Заявка воспринимается как бронирование | Высокий | Явный текст, единственный статус; далее CRM и подтверждение |
| JSON и персональные данные | Высокий | Только локальный тест; далее БД, права, шифрование, сроки |
| Нет доступа менеджера / уведомлений | Высокий | Интеграция CRM, очередь событий, кабинет с ролями |
| Зональный тариф не отражает фактический маршрут | Средний | Предварительная сумма; далее точки отгрузки, геокодер и ограничения дорог |
| Плотность меняется по партии и влажности | Средний | Демо-плотность указана; далее показатели партии и допуски |
| Дубликаты клиента по разным расчётам | Средний | v1 исключает повтор только для одного quoteId; далее нормализация и дедупликация |
| Нет нагрузочного и полного security-аудита | Высокий для публичного запуска | Определить SLO, провести нагрузочные и security-проверки |
| Контент каталога доступен только после client fetch | Средний для SEO | Демо noindex; для реального каталога SSR/ISR и отдельные URL |
5. План версий
| Версия | Цель | Критерий готовности |
|---|---|---|
| v1 / текущая | Локальный end-to-end MVP и аналитика | Сборка, расчёт, сохранение, HTML и версия в папке |
| v2 | Рабочий пилот оператора | PostgreSQL, реальные тарифы, кабинет менеджера, auth/RBAC, CRM/email, аудит |
| v3 | Управление поставкой | Партии, паспорта, остатки, маршруты, рейсы, статусы, согласование |
| v4 | Коммерческий масштаб | Договоры, платежи, документооборот, SLA, мониторинг, нагрузка |
6. Условия публичного запуска
- Утвердить юрлицо, реквизиты, контакты и документы оператора.
- Заменить тестовые данные подтверждёнными ценами и характеристиками.
- Подключить ответственных менеджеров, CRM и подтверждение заявок.
- Внедрить транзакционную БД, резервирование, сроки хранения и удаление.
- Добавить аутентификацию, роли, журналирование и защиту секретов.
- Настроить домен, TLS, наблюдаемость, квоты и антибот-защиту.
- Провести проверку безопасности, доступности и нагрузочный пилот.
Публикация и коммерческий запуск не входят в текущую локальную поставку.