Прод
есть находкиПроверок прогнано 14, с находками 4. Заняло 336.6 с.
· версия 0.16.0-alpha
Что проверено, когда и с каким исходом. Зелёное здесь означает «проверено недавно и сошлось»: результат старше полутора суток отмечается как неизвестный, потому что доска, показывающая вчерашнее за нынешнее, хуже отсутствующей.
Проверок прогнано 14, с находками 4. Заняло 336.6 с.
· версия 0.16.0-alpha
Всего проверок 39, из них 5 умеет прогнать само приложение — они и попадают в ночной прогон. Остальные запускаются командой и здесь перечислены, чтобы было видно не только что проверено, но и что нет.
| Проверка | Что сверяет | Команда | Состояние |
|---|---|---|---|
| Осмотр перед запуском | Отвечает ли база, сходится ли журнал миграций со схемой, нет ли отметки dev, долгих транзакций, раздутых таблиц и непроверенных ограничений | npm run doctor | Прод |
| Присмотр за пулом соединений | У обрыва соединения ровно один слушатель: без него обрыв убивает процесс, а лишние пишут в лог по копии на каждый | npm run check:pool | ещё не гонялась |
| Индексы против запросов | Какие индексы не используются и каких не хватает под настоящую нагрузку | npm run audit:indexes | Прод |
| Проверка | Что сверяет | Команда | Состояние |
|---|---|---|---|
| Отчёты по стаду считаются | Семь запросов выполняются на живой базе и возвращают то, что обещает тип | npm run check:herd | Прод |
| Списки сходятся с числами | Число в отчёте равно длине списка за ним: несходящееся число хуже ошибки — оно правдоподобно с обеих сторон | npm run check:drilldown | Прод |
| Ассоциация и хозяйство видят одно и то же | Сводка по стадам считается группировкой по всем хозяйствам, кабинет — по одному; разойдись они, Ассоциация позвонит про беду, которой хозяйство у себя не видит | npm run check:condition | ещё не гонялась |
| Ревизия зоотехнических правил | Все правила реестра прогоняются по настоящим данным: какие срабатывают, какие молчат | npm run audit:checks | Прод |
| Родословная без противоречий | Циклы в родословной, родители моложе потомков, животное само себе родитель, невозможный возраст родителя — по тем же порогам, что видит эксперт | npm run audit:pedigree | Прод |
| Подбор пар считается верно | Инбридинг сверяется на случаях с известным ответом: полусибсы, полные сибсы, отец с дочерью | npm run check:mating | пишет в базу — гоняется только на копии |
| Сравнение быков со сверстницами | Разница по дочерям считается на построенном контрольном стаде | npm run check:bulls | пишет в базу — гоняется только на копии |
| Приплод сходится сам с собой | Тип рождения, числа живых и мертворождённых и карточки телят — на выдуманных отёлах, без базы | npm run check:calving | гоняется вручную |
| Рейтинг не врёт местами | Разряды не пересекаются, порядок не возрастает, совпадения делят место, а отбор по хозяйству мест не сдвигает | npm run check:ranking | гоняется вручную |
| Проверка | Что сверяет | Команда | Состояние |
|---|---|---|---|
| Чужое закрыто | Попытки поднять себе роль и прочитать чужие записи отклоняются | npm run check:security | пишет в базу — гоняется только на копии |
| Уровень достоверности выводится, а не ставится | Протокол лаборатории поднимает вторую ступень, отзыв её снимает, а подпись Ассоциации ни то ни другое не трогает | npm run check:trust | пишет в базу — гоняется только на копии |
| Роли, приглашения, блокировка | Сотрудник видит своё, приглашение работает один раз, заблокированный не входит | npm run check:team | пишет в базу — гоняется только на копии |
| Границы хозяйств | От лица настоящего пользователя: не видно и не правится ничего чужого | npm run audit:tenancy | пишет в базу — гоняется только на копии |
| Точечные доступы | Выданный доступ открывает ровно одну запись и отзывается | npm run audit:grants | пишет в базу — гоняется только на копии |
| Заслон подтверждения | Нельзя подтвердить запись поверх неразобранной находки и нельзя — при нехватке данных: происхождения, отёлов, контрольных доек | npm run audit:gate | Прод |
| Журнал переживает предмет | Запись об операции остаётся после удаления того, о чём она | npm run check:journal | пишет в базу — гоняется только на копии |
| Сохраняемые отборы | Отбор сохраняется, открывается и удаляется, чужой не виден | npm run check:searches | пишет в базу — гоняется только на копии |
| Проверка | Что сверяет | Команда | Состояние |
|---|---|---|---|
| Выгрузка и загрузка книги Excel | Настоящее стадо выгружается, читается обратно и сходится с исходным | npm run check:xlsx | пишет в базу — гоняется только на копии |
| Выгрузка во ФГИАС ПР | Шапка сходится с настоящим шаблоном, наш ключ не выдаётся за номер реестра | npm run check:fgias-export | гоняется вручную |
| У пород есть коды ICAR | Без трёхбуквенного кода порода не уезжает в обмен вовсе, а международный номер собирается коротким: шестнадцать символов вместо девятнадцати | npm run check:breed-codes | гоняется вручную |
| Международный номер собирается и разбирается верно | Настоящие номера из чешских списков быков разбираются; импортное животное считается от страны происхождения; длинный номер не обрезается | npm run check:aiid | гоняется вручную |
| Ресурсы ICAR ADE собираются по спецификации | Имена полей и значения перечислений из стандарта, время в UTC, показатель молока строкой, ноль не выдан за «неизвестно» | npm run check:ade | гоняется вручную |
| Кодировки и разделители CSV | windows-1251 и UTF-8, точка с запятой и запятая, круговой прогон разбора и сборки | npm run check:csv | Прод |
| Смена владельца | Животное переходит с историей, прежний владелец теряет доступ | npm run check:movements | пишет в базу — гоняется только на копии |
| Описание API полное | Все ручки попадают в OpenAPI: описание, разошедшееся с кодом, хуже отсутствующего | npm run check:openapi | Прод |
| Проверка | Что сверяет | Команда | Состояние |
|---|---|---|---|
| Соответствие подтверждается, а не заявляется | Каждое доказательство на странице соответствия ведёт на существующий прогон, файл или адрес; у «выполнено» и «частично» доказательство обязательно | npm run check:compliance | гоняется вручную |
| Домены разводятся верно | Витрина и книга живут на разных доменах одного приложения; ошибка тут не падает, а показывает не то — рекламу вместо кабинета | npm run check:hosts | гоняется вручную |
| Ссылки не вложены друг в друга | Вложенные <a> недопустимы по HTML: браузер перестроит разметку по-своему, и жалоба придёт на гидратацию, а не на причину | npm run check:links | гоняется вручную |
| Обход всех страниц | Каждая страница живого сервера отвечает, битых ссылок и переадресаций нет | npm run smoke | пропущена |
| Ссылки навигации ведут куда обещают | Все пункты меню кабинета открываются на живом сервере с живой базой | npm run check:nav | пропущена |
| Страница API открывается | Документация отдаётся и её обвязка лежит на месте | npm run check:api-docs | пропущена |
| Проверка | Что сверяет | Команда | Состояние |
|---|---|---|---|
| Серверные компоненты не передают функций | Пропс-функция через границу «сервер → клиент» роняет сборку, и только её — в разработке страница работает | npm run check:client-props | гоняется вручную |
| Переводы полны, а язык определяется как задумано | Ни одной пустой строки и ни одного русского абзаца в нерусском языке; Accept-Language разбирается верно, а выбор человека сильнее догадки | npm run check:i18n | гоняется вручную |
| Хуки коллекций пишут внутри своей транзакции | Ни одно обращение к Payload из хука не идёт мимо `req` — иначе не ошибка, а зависание | npm run check:hooks | гоняется вручную |
| Порядок частей страницы | Меню кабинета стоит выше заголовка на каждой странице | npm run check:layout | Прод |
| Даты в четырёх часовых поясах | Показ дат не съезжает на сутки при смене пояса читателя | npm run check:time | Прод |
Находок: 8. Что именно не сошлось, видно вошедшим: разбор называет номера животных, а это уже данные книги, а не сведения о системе.
npm run audit:pedigree