Перейти к содержимому

Большие проекты

  • Поиск по кейсам — полнотекстовый (SQLite FTS5): название, предусловия, шаги, ожидаемые результаты и теги; каждое слово ищется по началу («оплат» найдёт «оплата», «оплаты»), регистр и ё/е не важны. Лучшие совпадения выше, найденное подсвечено, для совпадений в шагах показан кусок текста. Ключ (SHOP-12) или номер сразу выводит свой кейс первым.
  • Списки кейсов и прогонов приходят страницами (?limit=&offset=, общее число — в заголовке X-Total-Count; без limit — весь список, как раньше). Длинный список кейсов догружается при прокрутке, а на экране рисуются только видимые строки.
  • Нагрузочный набор: pnpm --filter @tsmc/server bench создаёт (один раз, в data/bench.db, около 30 с) проект на 20 000 кейсов и 500 прогонов (86 000 результатов) и замеряет ключевые страницы и операции; в CI это отдельная проверка. Медиана после прогрева на обычном ноутбуке:
Страница или операция Время
список кейсов (страница), поиск, фильтры 1–36 мс
прогон на 300 кейсов, отчёт по прогону, список прогонов 3–42 мс
дашборд за полгода, гигиена, подбор по изменениям 190–230 мс
экспорт CSV, tsmc pull всего проекта 0,7 с
tsmc push --dry-run всего проекта 2,3 с
предпросмотр импорта 1000 строк 0,4 с

Поиск дублей для «Гигиены» сравнивает тексты всех кейсов (около секунды на 20 000); результат хранится в памяти до изменения кейсов и считается сразу после запуска сервера.