Поиск фразой (ИИ)
Поиск узлов, участков, потребителей, источников и инструментов по описанию: «камера у ТЭЦ-2 на магистрали 4», «где посмотреть износ». Обычный поиск ищет по номеру и названию, поиск фразой — по смыслу.
Возможности
- Найти узел или камеру по описанию с кодом: «камера тк6-5-24», «узел УТ-5-34 во фрагменте 74».
- Найти участок между двумя узлами: «участок ТК-12 — ТК-13».
- Найти источник по имени: «АТЭЦ-2», «котельная …».
- Получить список потребителей по диагностике нагрузок: без нагрузки, закрытых, отключённых, не рассчитанных — с общим числом.
- Открыть инструмент по описанию задачи: «где посмотреть износ» открывает «Износ и план ремонтов», «потребители без нагрузки во фрагменте 74» — «Диагностику нагрузок» с этим отбором.
- Щелчком по найденному перелететь к нему на карте.
Как это работает
Модель только разбирает фразу. Фраза уходит на сервер, модель превращает её в запрос: вид объекта (узел, участок, потребители, источник, инструмент), текст для поиска, номер фрагмента, признак диагностики, ключ инструмента. Выборку делает сервер своими запросами — SQL модель не пишет. Модель вызывается с низким уровнем рассуждения и ответом до 600 токенов, поэтому ответ приходит за секунды.
Как ищет сервер (ai/tools.py, до 50 объектов):
- узлы — подстрока в имени среди узлов с координатами, не удалённых; сначала точное совпадение, затем короткие имена;
- участки — подстрока имени одного конца и (если названа) другого;
- источники — подстрока в названии источника;
- потребители — та же выборка, что в «Диагностике нагрузок», первые 50 и общее число;
- инструмент — только из списка инструментов веба; неизвестный ключ отбрасывается.
Фрагмент. Если фраза не называет фрагмент, а на карте открыт ровно один — поиск идёт в нём. С фразой уходят номера видимых фрагментов (модели — первые 20).
Над списком — как понята фраза: вид («узлы», «участки», «потребители», «источники», «инструмент», «не понял запрос»), общее число для потребителей и пояснение модели. Если фраза открыла инструмент и объектов нет, окно поиска закрывается.
Что нужно для работы
- Право «Запуск расчётов» и помощник ИИ, включённый на сервере. Без них переключателя «Поиск фразой» нет, обычный поиск работает.
- Узлы и участки с координатами — иначе объект найдётся, но перелететь к нему нельзя.
Шаги
Откройте «Инструменты» и наберите в поиске «Поиск узлов» — пункт выделен рамкой.

Нажмите пункт — откроется окно.

Включите переключатель «Поиск фразой (помощник ИИ)», опишите, что ищете, и нажмите Enter.

Над списком — как помощник понял фразу (что ищет и по какому признаку), ниже — найденные объекты. Щелчок по объекту переводит к нему карту.

Примеры
Камера по коду (копия Алматы, фрагмент 74). Тот же поиск по имени без модели (инструмент search_network MCP-сервера) по «тк6-5-2» во фрагменте 74 возвращает мтк6-5-2, тк6-5-24, мтк6-5-20 … — точное имя встаёт первым, остальные — по длине имени. Фраза «камера тк6-5-24» разбирается в «узлы — тк6-5-24»; щелчок по строке переводит карту к узлу (76,8211; 43,2413).
Если не получается
- «Поиск фразой не выполнен» — ИИ недоступен; поиск по номеру и названию продолжает работать.
- Найдено не то — уточните фразу: название или код объекта, фрагмент, вид объекта.
- «Ничего не найдено» — запрос разобран, но объектов нет: проверьте код и фрагмент.
- В строке над списком «не понял запрос» — фраза не похожа на поиск объекта; пояснение модели подскажет, что уточнить.
- «Поиск фразой не выполнен: Ошибка на сервере: Превышен лимит запросов к ИИ, повторите позже» (или другая причина после двоеточия) — модель недоступна; выключите переключатель и ищите по номеру.
Для администратора
- Флаги:
AI_ENABLED,ANTHROPIC_API_KEY,AI_MODEL. Каждый поиск фразой — запись «AI» в журнале действий (tool=search, токены).
Для разработчика
- API:
POST /api/v1/ai/search(text2–500 символов,fragment_idsдо 50) →query(kind,text,text2,fragment_id,diagnostic,consumer_type,tool_key,confidence,note),items,total,open_tool. - Сервер:
routers/ai.py,ai/tools.py(SearchQuery,search,execute_search,TOOL_KEYS,MAX_RESULTS = 50), промптai/prompts/search.md; тот жеexecute_search— инструмент MCPsearch_network. - Веб:
components/NodeSearch.vue(runAiSearch, открытие инструмента —uiStore.requestToolDialog). - Тесты: API —
tests/test_ai_tools_stage6.py; e2e —e2e/functions/ai.spec.ts.
