Поиск — бизнес-логика¶
Обзор¶
Поиск в 1Форме — это единый механизм нахождения задач и связанных данных по тексту, параметрам и контексту пользователя.
Бизнес-цель: дать пользователю релевантный результат быстро и с корректным учётом прав доступа.
Что входит в домен¶
- Текстовый поиск задач.
- Поиск по ДП.
- Поиск по файловым аннотациям.
- Семантический (векторный) поиск через внешний сервис.
Бизнес-модель режимов поиска¶
| Режим | Назначение |
|---|---|
FTS (TaskTextSearchType=2) |
основной полнотекстовый режим |
Триграммный (1, 3, 4, 5, 16) |
substring/exact/prefix/suffix/like-поиск |
По ДП (SearchExtParamTasks) |
фильтрация по значениям параметров |
По файлам (SearchFileAbstract) |
поиск по содержимому вложений |
Векторный (/api/search/vector) |
семантический ранг по внешнему AI-сервису |
Бизнес-правила¶
- Тип поиска должен соответствовать пользовательскому сценарию, иначе результат «формально есть, но не тот».
- Категорийный флаг
UseTrigramSearchFвлияет на скорость и качество substring-кейсов. - Поиск всегда ограничивается доступностью задач пользователю.
- Для больших выборок критичны фильтры и пагинация в
ShowTasksFeed.
Ранжирование и сортировка результатов¶
Формула ранга¶
Во всех контурах поиска ранг вычисляется по единой формуле:
SearchRank = FullTextRank + TaskEpvCount × weightLookupQ + IsDictionary × weightIsDictionary
FullTextRank— ранг из FTS (CONTAINSTABLE, 0–1000)TaskEpvCount— количество EP-значений (лукапов), ссылающихся на задачу — повышает ранг справочных данныхIsDictionary— флаг справочной подкатегории — существенный бонус для словарей
Текущие режимы сортировки¶
| Контур | Порядок сортировки | Управляется пользователем? |
|---|---|---|
| Мини-поиск (саггесты) | совпадение-по-номеру → совпадение-в-тексте → ранг → дата изменения DESC (новые выше) | Нет |
| Общий поиск задач | SearchRank DESC → CreatedTask DESC → TaskID DESC | Нет |
| Поиск по файлам | FTS-ранг DESC | Нет |
| Грид категории | Выбор пользователем (клик по заголовку), default: TaskID DESC | Да |
Планируемые варианты сортировки¶
Задачи и пространства: - «Рекомендация» — текущий ранкинг - «Новые» — по дате создания - «Недавно изменённые» — по дате изменения
Файлы: - «Рекомендация» — текущий FTS-ранкинг - «Недавно загруженные» — по дате загрузки - «Недавно изменённые» — по дате последней версии файла
Пользовательский интерфейс поиска¶
Быстрый поиск¶
Открывается по клику на поисковую строку в панели навигации (или Ctrl/Cmd + /).
Под строкой ввода — список 10 последних чатов, ниже — история просмотра задач (формируется при переходе в задачу, отправке сообщения, просмотре файла, переходе по маршруту и т.д.).
Особенности: - Поиск без учёта раскладки клавиатуры (русское слово можно набрать на английской раскладке) - Поиск пользователей — по имени, фамилии и основной должности - Нечёткий поиск с учётом опечаток — включается администратором в настройках
Результаты: сначала сотрудники, затем избранные ссылки, чаты, задачи, пространства, категории, файлы, отчёты.
Каждый блок отображается только если соответствующий раздел включён в настройках рабочего места группы (РМГ):
| Блок | Условие отображения |
|---|---|
| Пространства | РМГ → «Прочее» → «Блок "Пространства"» = «Показывать» |
| Чаты | Чаты включены в РМГ |
| Сотрудники | Сотрудники включены в РМГ |
Задачи, найденные по номеру, всегда попадают в блок «Задачи» при наличии прав — независимо от того, показан ли блок «Пространства».
Избранные объекты отмечены звёздочкой.
Быстрые действия при наведении:
| Объект | Действие |
|---|---|
| Сотрудник | Открыть чат, начать видеоконференцию, перевоплощение (только для администраторов) |
| Файл | Перейти в задачу, скачать файл |
ПКМ по файлу — контекстное меню: просмотр, скачать, история версий, скопировать ссылку.
Нажатие Enter при найденном номере задачи — открывает задачу напрямую. Cmd/Ctrl + Enter — открывает расширенный поиск в новой вкладке. По кнопке лупы — переход к полной форме поиска.
Горячие клавиши быстрого поиска:
| Действие | Windows | macOS |
|---|---|---|
| Открыть/закрыть поиск | Ctrl + / |
Cmd + / |
| Прокрутка списка последних чатов | Shift + Alt + колесо мыши |
Shift + Cmd + колесо мыши |
| Перемещение по результатам | ↑ / ↓ |
↑ / ↓ |
| Открыть объект | Enter |
Enter |
| Вернуться из задачи | Ctrl + E |
Cmd + E |
Переключатели типов в полной форме поиска¶
| Переключатель | Что ищется | Примечание |
|---|---|---|
| Задачи | По номеру и тексту | Номер вводится целиком; поиск в т.ч. завершённых (отключается опцией «Показывать завершённые») |
| Категории | По названию | Скрыт, если категории отключены в РМГ |
| Чаты | По названию личных и групповых чатов | Скрыт, если чаты отключены в РМГ |
| Сотрудники | По имени, фамилии, должности | Скрыт, если сотрудники отключены в РМГ |
| Пространства | По названию и содержимому статей | Скрыт, если пространства отключены в РМГ |
| Сообщения | По тексту сообщений в задачах | Фильтры: Автор, Кому/Копия, Категории, Чаты |
| Публикации | По тексту публикаций социальной сети | Скрыт, если соцсеть отключена в РМГ |
| Файлы | По названию и содержимому файлов, в т.ч. файлов на Диске | Требует настройки Tika-сервиса |
| Отчёты | По названию доступных отчётов | Скрыт, если отчёты отключены в РМГ |
Карточка задачи или чата открывается справа или снизу — в соответствии с настройкой интерфейса «Просмотр задачи».
AI (умный) поиск¶
Включается администратором через кастомную настройку
showAI.
Помимо полнотекстового поиска, доступен векторный AI-поиск — анализирует контекст и синонимы, а не только совпадение слов.
Автоматический выбор объекта поиска по ключевым словам:
| Запрос содержит | Что ищется |
|---|---|
| «в комментариях», «писал», «обсуждал» | Сообщения к задачам |
| «в файлах», «по вложениям», «содержимое файлов» | Содержимое файлов |
| Имя файла с расширением (напр. «отчет.xlsx») | Файлы по имени |
| Всё остальное | Задачи |
Контекстная строка под результатом показывает применённые фильтры: исполнителей, значения ДП, фрагменты комментариев.
Ранжирование AI-результатов учитывает пользовательский опыт: участие в задачах (заказчик, исполнитель, подписчик), оставленные комментарии и реакции.
Примеры запросов:
| Запрос | Найдёт |
|---|---|
| задачи Тимонова | Задачи с исполнителем Тимонов |
| просроченные задачи Денисюка | Просроченные задачи с исполнителем Денисюк |
| активные пресейлы клиент Ригла | Задачи в категории «Пресейлы» с клиентом «Ригла» |
| в комментариях Матвеев про интеграцию | Комментарии от Матвеева со словом «интеграция» |
| в файлах протокол совещания | Файлы с текстом «протокол совещания» |
Расширенный поиск задач¶
Включается администратором через кастомную настройку
useNewExtendedSearch. Прямой адрес:/spa/search?mode=advanced.
Полная форма поиска по параметрам задачи. Панель инструментов аналогична табличному представлению категории: обновление, фильтрация по статусам, отборы, фильтры по ролям, фильтрация по колонкам, группировка, выбор колонок, экспорт в Excel, настройка источника данных.
Ключевые сценарии¶
1. Быстрый поиск в реестрах¶
Пользователь вводит строку и получает список задач с ранжированием и пагинацией.
2. Расширенный поиск¶
Пользователь задаёт фильтры по ДП и сочетает их с текстовым условием.
3. Поиск по вложениям¶
Пользователь ищет задачу по содержимому файла.
4. Семантический поиск¶
Система возвращает релевантные задачи по смысловому совпадению запроса.
Типовые инциденты¶
| Симптом | Возможная причина |
|---|---|
| Пустой результат при ожидаемых совпадениях | неподходящий режим поиска/фильтры/права |
| Медленный поиск | тяжёлый запрос в ShowTasksFeed, неподходящий путь поиска |
| Разные результаты на разных экранах | разные параметры backend-запросов |
| Файлы не по свежести | SearchFileAbstract сортирует только по FTS-рангу, без даты |
| ~~Старые задачи выше в саггестах~~ | Исправлено: SimpleSearchByTasks изменён на ModifiedDate DESC (новые выше) |