Большие проекты
- Поиск по кейсам — полнотекстовый (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); результат хранится в памяти до изменения кейсов и считается сразу после запуска сервера.