ООО «РТЛ» · внутренний отчёт 12.09.2026

Чаттерный надзор

Бот-наблюдатель для рабочих чатов в MAX: что он умеет на сегодня, кто чем управляет и что ещё не сделано.

● сбор и классификация — работает ● голос и фото/PDF — работает ● интеграция YouGile — работает ● дайджест переживает перезапуски сервиса ● документ о ПДн — на реальном домене компании
Сверка с ТЗ

Сделали ли то, что обсуждали изначально: бот-«сборщик»

Исходная задача была узкой: бот в чатах MAX, который собирает информацию с объектов в единую систему, обрабатывает инциденты и гарантийные обходы, информирует ответственных и опционально пишет в YouGile. Ниже — пункт за пунктом.

Из исходного запросаСтатусКак реализовано
Сбор текстов в единую систему знанийсделаноКаждое сообщение из чата (текст, голос, фото/PDF) сохраняется и классифицируется в общей базе на сервере в России.
Инциденты и гарантийные обходысделаноТриггерные слова → мгновенный алерт админам, не дожидаясь дайджеста; список слов редактируется прямо в боте.
Информирование ответственных лицсделаноДайджест раз в 30 минут по каждому чату + мгновенные алерты по инцидентам и тегам начальника.
Интеграция по API с YouGileсделаноПривязка чата к проекту, перенос переписки, создание задач командой, сводка по открытым задачам.

Автосоздание задач в YouGile по ключевым словам в исходном ТЗ не обсуждалось и не запланировано — задача заводится осознанно, командой /задача.

Обзор

Что делает бот

«Чаттерный надзор» сидит в рабочих чатах строительных объектов в MAX, читает переписку (после согласия каждого участника на обработку ПДн) и превращает её в управляемую информацию: кто о чём сообщил, что из этого инцидент, что нужно сделать и куда это записать.

01
Сбор
Текст, голосовые и фото/PDF из чатов — всё превращается в текст и классифицируется.
02
Алерт
Инцидент или тег начальника — уведомление админам сразу, не дожидаясь дайджеста.
03
Дайджест
Раз в 30 минут — сводка по каждому чату и отдельно по личным сообщениям боту.
04
YouGile
Чат ↔ проект: перенос переписки, создание задач, сводка по статусу объекта.
Механика

Путь одного сообщения

Пример: рабочий пишет в чат объекта голосовое «нужна смета на облицовку, авария на подстанции».

1 · Согласие
Первое сообщение человека в чате — проверка ПДн. Без «Я согласен» дальше ничего не идёт.
2 · Расшифровка
Голосовое → текст локально на сервере (Whisper). Файл сразу удаляется.
3 · Классификация
«Авария» — триггерное слово → категория «инцидент».
4 · Алерт + YouGile
Мгновенный алерт админам; копия сообщения — в связанный чат YouGile.

Если бы триггерного слова не было — сообщение просто легло бы в базу и попало в плановую сводку через 30 минут. Сам 30-минутный таймер хранит время последнего запуска в базе, а не только в памяти процесса — раньше частые перезапуски сервиса (при каждом деплое) сбрасывали внутренний отсчёт, и автодайджест мог не доехать до конца интервала; сейчас переживает любые перезапуски.

Права доступа

Роли и доступ

Роль присваивается человеку глобально (не привязана к одному чату) и действует во всех чатах, где есть бот. Обычный участник — вообще без роли.

РольСейчасПолучает дайджест/алертыУправляет ролямиПривязка проекта, доступ, список несогласных
SUPER_ADMIN Илья, Рафаэль да, по всем чатам да да
ADMIN Рафик да, по всем чатам нет да
Участник группового чата любой согласившийся нет нет только своя /сводка и /задача
Клиент с выданным доступом выдаётся командой /доступ нет нет /сводка из личных сообщений без членства в чате

Важно: согласие на ПДн проверяется отдельно на каждого человека в каждом чате — присутствие в чате (даже с ролью SUPER_ADMIN) само по себе согласием не считается.

Инструкция

Как пользоваться: три сценария

Ниже — не справочник команд (он ниже, в разделе «Все команды»), а конкретный порядок действий для трёх ролей на практике.

Заказчик — любой сотрудник со стороны объекта (юрист, бухгалтер, ЛПР)

Исполнитель — координатор объекта / администратор (например, Рафик, роль ADMIN)

Лично для Рафаэля — SUPER_ADMIN

Справочник

Все команды

Без команд — просто переписка
ДействиеГдеКтоРезультат
Любой текстгруппа / личкалюбой согласившийсясохраняется, классифицируется: инцидент / лид / вопрос / общее
Голосовое сообщениегруппа / личкалюбойрасшифровывается локально, дальше — как обычный текст
Фото или PDFгруппа / личкалюбойтекст на изображении распознаётся, файл нигде не сохраняется
Реальный тег (@) начальникагруппалюбоймгновенный алерт админам, не дожидаясь дайджеста
Сообщение боту в личкуличкалюбойуходит во «внутренний чат» дайджеста — видят все админы
Доступно всем участникам
КомандаГдеРезультат
/сводкагруппаLLM-сводка чата + открытые задачи из привязанного проекта YouGile
/сводкаличкато же самое, но только если выдан /доступ
/задача <текст>группасоздаёт настоящую задачу в привязанном проекте YouGile
Только ADMIN и SUPER_ADMIN
КомандаГдеРезультат
/проект <название>группапривязывает чат к проекту YouGile — точное совпадение или новый проект
/доступ <id>группадаёт человеку право на /сводка этого чата из личных сообщений
/доступ_убрать <id>группаотзывает ранее выданный доступ вручную
(автоматически)если доступ выдавался человеку, который на тот момент состоял в чате, и он из чата вышел — доступ отзывается сам в ближайшем цикле дайджеста; доступ, выданный «внешнему» человеку (не состоявшему в чате), так не отзывается — только вручную
/несогласныегруппасписок участников чата, не принявших согласие на ПДн
/триггерыличкасписок слов, которые превращают сообщение в «инцидент»
/триггер_добавить <слово>личкадобавить новое триггерное слово
/триггер_убрать <слово>личкаубрать триггерное слово
Только SUPER_ADMIN
КомандаГдеРезультат
/adminличкасписок всех администраторов, кнопка «✕» на удаление каждого
/admin_add <id> [admin|super] [имя]личкадобавить нового администратора или повысить существующего
Приватность

Где хранятся данные

Требование с самого начала — ничего не должно уходить за пределы России и не должно храниться дольше необходимого.