Похожие аварии (ИИ)

Для записи журнала нарушений — похожие повреждения рядом: тот же вид (порыв, свищ и утечка — одно семейство), та же труба и Ду, близкое место, общие слова в описании. Кнопка «Уточнить с ИИ» пересортировывает список по смыслу описаний и объясняет сходство.

Где найти
«Инструменты» (значок чемоданчика справа вверху) → Эксплуатация → «Нарушения» → запись → блок «Похожие аварии рядом». То же — палитрой команд: Ctrl+K и начните набирать название.
Права
право «Запуск расчётов»; на сервере должен быть включён помощник ИИ — иначе кнопок и переключателей ИИ нет.
Читаю как

Возможности

  • Найти похожие повреждения рядом с открытой записью журнала нарушений — по признакам, без ИИ («Найти»).
  • Уточнить порядок с ИИ: модель читает описания и ставит выше те, что похожи по смыслу (та же авария, та же причина), а плановые работы и случайные совпадения — ниже.
  • У каждой строки — процент сходства, пояснение модели «ИИ: …», дата, признаки (вид, труба, Ду, расстояние).
  • Открыть похожую запись или показать её место на карте.
  • Сменить радиус поиска: 300 м, 1 км, 3 км, 10 км.

Как это работает

Кандидатов ищет код. Для записи разбираются признаки из её текстов (название, описание, отчёт, примечание): вид повреждения, труба Т1/Т2, условный диаметр. Сходство с каждой записью в радиусе — взвешенная сумма: вид 0,35, труба 0,15, Ду 0,15, расстояние 0,20 (exp(−d / 300 м)), общие слова 0,15. Подробно — в Нарушениях.

Модель только пересортировывает. «Уточнить с ИИ» отдаёт модели образец и 15 лучших кандидатов по признакам: дата, расстояние, участок, оценка кода с причинами и текст до 400 символов. ФИО и номера в текстах закрываются всегда, независимо от ваших прав. Модель возвращает для каждого кандидата сходство 0–100 и пояснение до 200 символов. Кандидаты, которых модель не оценила, идут в конец по оценке кода; номера не из списка отбрасываются. В окне — первые 10.

Модель — своя. Пересортировка коротких текстов идёт на отдельной модели AI_RERANK_MODEL (по умолчанию claude-sonnet-5-5) с низким уровнем рассуждения — ответ за секунды.

Если ИИ не ответил, список остаётся в порядке признаков, а над ним — «ИИ не ответил (…) — порядок по признакам.» Ошибкой окно это не считает.

Радиус после «Уточнить с ИИ». Смена радиуса повторяет последний поиск — с ИИ, если перед этим нажимали «Уточнить с ИИ». Каждая смена — новый вызов модели.

Что нужно для работы

  • Журнал нарушений с точками на карте и описаниями. На копии Алматы журнал пуст; записи с историей — только в копии Астаны (1785 записей, все с точкой).
  • «Уточнить с ИИ» — право «Запуск расчётов» и помощник ИИ, включённый на сервере. «Найти» работает без них.

Шаги

  1. Откройте «Инструменты» и наберите в поиске «Нарушения» — пункт выделен рамкой.

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

  3. Откройте запись журнала (стрелка в строке). Внизу карточки — блок «Похожие аварии рядом»: радиус поиска, «Найти» (список по признакам) и «Уточнить с ИИ». Нажмите «Уточнить с ИИ».

    Похожие аварии (ИИ): шаг 3

  4. Порядок теперь — по оценке модели: у каждой строки процент сходства, пояснение «ИИ: …» и признаки (вид, труба, Ду, расстояние). ФИО и номера в текстах от модели скрыты. «Открыть» показывает запись, значок прицела — место на карте.

    Похожие аварии (ИИ): шаг 4

Примеры

Порыв на обратке (копия Астаны, запись 4853; числа — из кода поиска на копии, без ИИ: её стенд сейчас не запущен). В тексте записи: порыв, Т2, Ду не указан. В радиусе 1 км — 89 кандидатов. Первые два:

  • запись в 1 м: тот же вид — 0,35; труба Т1 вместо Т2 — 0; Ду не сравнить — 0; расстояние 0,2 × 1,0 = 0,20; общие слова 0,15 × 1,0 = 0,15; итог 0,70;
  • запись в 887 м: вид 0,35; «обе трубы» — половина, 0,15 × 0,5 = 0,075; расстояние 0,2 × 0,05 = 0,01; общие слова 0,15; итог 0,585.

На «Уточнить с ИИ» модель получила бы 15 таких строк — около 2750 символов. Как она их переставит, зависит от текстов: на снимке шага 4 у каждой строки своё «ИИ: …».

Если не получается

  • «Похожих нарушений в радиусе … нет» — увеличьте радиус.
  • Кнопки «Уточнить с ИИ» нет — ИИ выключен на сервере или нет права «Запуск расчётов»; список строится по признакам.
  • «ИИ не ответил (…) — порядок по признакам.» — модель недоступна; список по признакам верен.
  • «ИИ не ответил (Превышен лимит запросов к ИИ, повторите позже) — порядок по признакам.» — модель недоступна; список по признакам верен.
  • «Похожие аварии не найдены: …» — ошибка сервера при поиске.
  • «вид, труба и диаметр не распознаны» в строке признаков записи — в тексте нет слов вида повреждения, «Т1/Т2», «Ду»; сходство держится на расстоянии и общих словах.

Для администратора

  • Флаги: AI_ENABLED, ANTHROPIC_API_KEY, модель пересортировки — AI_RERANK_MODEL. Запись «AI» в журнале действий — tool=defect_rerank, с номером записи и числом кандидатов.
  • Маскирование ФИО и номеров перед отправкой — database/pii.py (mask_person_text); ответ окну дополнительно маскируется по праву «Персональные данные потребителей полностью».

Для разработчика

  • API: POST /api/v1/ai/defects/{id}/similar (radius_m 10–20 000, limit 1–15) → reference, radius_m, candidates, items (+ ai_relevance, ai_reason), ranking (ai | features), model, ai_error. Без ИИ — GET /api/v1/defects/{id}/similar.
  • Сервер: routers/ai.py, ai/defect_rerank.py (build_input, merge, MAX_CANDIDATES = 15, TEXT_CHARS = 400), database/defect_similarity.py (WEIGHTS, similar), промпт ai/prompts/defect_rerank.md.
  • Веб: components/SimilarDefectsPanel.vue, utils/defectSimilarity.ts, services/api/journals.ts (getSimilarDefectsAi).
  • Тесты: tests/utils/defectSimilarity.spec.ts; API — tests/test_ai_defect_rerank.py, tests/test_defect_similarity.py; e2e — e2e/functions/ai.spec.ts (карточка и ответы подменены).
Хотите увидеть эту функцию на своих данных?Покажем ТГИД на демонстрации и ответим на вопросы инженеров.
Запросить демо