# Приёмка по критериям ТЗ (раздел 9) Состояние на 09.10.2026. «Автотест» — сценарий в `apps/api/src/*.int.test.ts`, проверяется командой `pnpm test`. Автотесты работают с заглушкой Telegram, поэтому всё, что касается настоящего бота и телефона, нужно один раз пройти руками на боевом стенде. | № | Критерий | Автотест | Руками | | - | -------- | -------- | ------ | | 1 | Объявление под фильтр приходит в Telegram всем нужным агентам; время замерено | «первый проход наполняет базу…», «личный фильтр: уведомление получает только его владелец» | Не пройдено с настоящим ботом и привязанным агентом. Замер задержки один: 41 с (docs/PARSER.md); медиана за сутки — в разделе «Парсер» | | 2 | Одновременное «Беру»: лид у одного, второй видит «Уже взят» | «при одновременном нажатии лид получает один агент…» | Проверить двумя телефонами | | 3 | 24 часа без смены статуса: предупреждение, возврат в пул, уведомление о потере | «через 24 часа без смены статуса лид возвращается в пул…» | — | | 4 | Чёрный список и порог N не создают лид в режиме «только собственники» | «„только собственники“: метка агентства, порог N и чёрный список…» | — | | 5 | Агент не видит чужие лиды при выключенной видимости и видит при включённой | «видимость: агент не видит чужие лиды…» | — | | 6 | Solo не видит аналитику и базу; в Team нельзя добавить участника сверх лимита (с 09.10.2026 лимиты: Team 10, Agency 35) | «…Solo базы и аналитики не видит», «в Team нельзя добавить одиннадцатого участника, даже одновременно» | — | | 7 | Руководитель изменил воронку — канбан, аналитика и карточки показывают новые статусы | «руководитель добавляет, переименовывает, переставляет и удаляет промежуточные статусы» | Пройдено в браузере | | 8 | Сделка без комиссии невозможна; счёт по «%» совпадает с ручным расчётом | «отказ требует причину, сделка — комиссию…», «счёт 1-го числа совпадает с ручным расчётом…» | Пройдено в браузере на демо-компании: (4200 + 1 540 000 / 385 + 2600) × 7 % = 756 $ | | 9 | Смена тарифа применяется только со следующего месяца | «из кабинета применяется только со следующего месяца» | Пройдено в браузере | | 10 | 16-й день просрочки: уведомления прекращаются, CRM на чтение; после оплаты доступ возвращается | «16-й день просрочки…», «…компания без доступа лидов не получает» | — | | 11 | Суперадмин меняет дату окончания и отправляет сообщение выбранной компании | «просрочка: … суперадмин возвращает доступ», «сообщения в Telegram: всем, компании, руководителям, одному пользователю; журнал» | Отправка проверена в браузере; доставка в настоящий Telegram — нет: в тестовой базе у пользователей компаний Telegram не привязан | | 12 | Снятое объявление получает отметку и дату; повторное приходит новым лидом со ссылкой на прошлый | «раз в сутки объект из CRM проверяется…», «снятое объявление опубликовано снова…», «тот же объект под новым номером…» | Блоки «Снято» и «Уже был в работе» в браузере не смотрели | | 13 | Все экраны и сообщения бота на трёх языках | — | Экраны переключаются. Армянские тексты не вычитаны носителем языка | ## Общие требования | Требование | Состояние | | ---------- | --------- | | Один бэкенд для веб-кабинета и Mini App, реляционная база, очередь уведомлений | Есть | | Лимиты Telegram и повтор при ошибке | Есть, автотест «при ошибке отправки сообщение повторяется…» | | Пароли в виде хеша, проверка роли и компании на сервере | Есть | | HTTPS | Появится при выкладке: сертификат выпускает Nginx Proxy Manager | | Ежедневная резервная копия | Настроена в боевой сборке, проверена локально | | Chrome и Safari, Mini App на iOS и Android | Проверено только в Chrome, включая экран телефона. Safari и настоящий Telegram на iOS и Android — нет | ## Mini App Проверено в Chrome на экране 390 × 844 с настоящими подписанными данными Telegram: вход без пароля, мастер настройки, лента, карточка, «Беру», смена статуса, фильтры, подписка. В настоящем Telegram не открывалось: Telegram открывает Mini App только по https-адресу, а он появится после выкладки.