Виртуальный лидоруб IMAP: …

Все письма
Ошибки
📊 График
🎯 Распределение
⚙️ Автосчёт
⚠️ Расхождения ABC
🔎 Кейсы Лидоруба
📖 Инструкция
Перепроверить за:
Как система оценивает ABC:
A — проект, ИЛИ высокий приоритет, ИЛИ сумма > 300 000 ₽, ИЛИ больше 10 позиций
B — MRO + средний приоритет, ИЛИ сумма 50 000–300 000 ₽, ИЛИ 3–10 позиций
C — всё остальное
Ниже — лиды, которые система оценила как A, а МОП перевёл в отказ (брак).
Что делают кнопки:
Вернуть тому же — лид возвращается тому же менеджеру («Менеджер назначен»), он получит его обратно в работу.
Отдать другому — лид уходит в общую очередь, раздатчик отдаст его свободному менеджеру.
Согласен / Разобраться — только пометка в этом журнале, лид в Битриксе не трогаем.
Комментарий необязателен, но при возврате он уходит в карточку лида в Битриксе — менеджер увидит, почему лид вернули, — и попадает мне в разбор.
Что это: кейсы, которые самопроверка Лидоруба нашла подозрительными (пропущенное вложение, перепутанный бренд/артикул, ошибка суммы и т.п.), а нейроаудитор уже разобрал и написал вердикт по-человечески.
Разберите за раз до 15-20 минут — на каждый кейс: прочитать вердикт, нажать кнопку-решение, при желании оставить комментарий.

Шпаргалка

Что это: панель работы автоклассификатора входящих писем («Виртуальный лидоруб»). Принимает почту с коммерческих ящиков и ящиков МОПов, классифицирует, на коммерческих сам создаёт лиды в Битриксе.

Что делать ежедневно:

  1. Открыть вкладку «Все письма» — посмотреть свежие письма и статусы.
  2. Перейти на «Ошибки» — разобрать спорные случаи. Это улучшает классификатор.
  3. Если в почте есть свежие письма, а на странице последняя запись старше 30 минут — что-то сломалось. Сообщить в новой Claude-сессии: «проверь Лидоруба, бежит ли очередь».
Что значат статусы
  • Лид создан — письмо коммерческое, лид ушёл в Битрикс.
  • Лид обогащён — нашли существующего клиента и дополнили его карточку.
  • МОП наблюдение (classified_mop_observed) — письмо на ящике МОПа: классификатор оценил, но лид не создаём (МОП заводит вручную). Только аналитика.
  • Uncertain (classified_uncertain) — классификатор не уверен. Имеет смысл взглянуть глазами.
  • Non-commercial — спам / уведомление / рассылка поставщика / тендер. Лид не нужен.
  • ⚠ Ошибка классификации (failed_classify) — LLM упал или парсер захлебнулся. Письмо ждёт ручной перепроверки. Кнопка «🔁 Перепроверить лиды» поставит их в очередь снова.
  • Received — принято IMAP-пакетом, ещё не обработано.
  • Дубль / Blacklist / Чужой ящик / MV Trade — пропущено по правилам.
Как читать колонки таблицы
  • Дата — когда письмо принято Лидорубом (UTC+3 МСК).
  • Conf — уверенность классификатора (0–1). ≥0.85 — высокая, 0.7–0.85 — средняя, <0.7 — низкая. Низкая уверенность → стоит проверить вручную.
  • Позиций — сколько товарных позиций удалось распарсить.
  • Сумма ₽ — оценка суммы лида через 1С / каталог.
  • Лид — ссылка на карточку в Битриксе (#номер).
  • Действие / Источник — что сделал Лидоруб (создал / пропустил / обогатил) и откуда пришло (IMAP / Bitrix webhook).
Сегменты A / B / C
  • A (≥150 000 ₽) — крупный лид, отдельный алерт.
  • B (10 000 – 150 000 ₽) — средний.
  • C (<10 000 ₽) — мелкий.
  • Nonqual — неквалифицированный (без оценки суммы).
Что делать с ошибочной классификацией
  1. Открыть вкладку «Ошибки» или найти письмо в «Все письма».
  2. Кликнуть строку — раскроется детальная панель.
  3. Указать правильную классификацию (поле комментария + кнопка «Сохранить»).
  4. Эти данные использует skill learn-classifier для уточнения pre-LLM правил.

Можно также написать в Claude: /learn-feedback или разбери фидбэк из feedback/feedback.jsonl — Claude прочитает ошибки, починит код, заведёт Trello-карточки.

Когда страница «застыла» — нет новых записей
  1. Сначала посмотрите кружок IMAP в шапке «Виртуальный лидоруб» (🟢/🔴). Если красный — наведитесь, увидите, на каком ящике watcher молчит.
  2. Нажмите кнопку «Перепроверить» рядом с кружком — она прогонит per-mailbox проверку прямо сейчас (≤60 сек), запишет результат в /var/log/jbtools/imap_lag_history.jsonl.
  3. Если после перепроверки красный остался — открывайте сессию Claude и говорите «IMAP-watcher молчит на ящике X». Claude перезапустит контейнер (docker compose restart imap_watcher) — после SELECT INBOX он сам догонит backlog.
  4. Параллельно bash scripts/verify_lidorub.sh — он покажет агрегатное здоровье (контейнеры, очередь, БД).
  5. Не пытайтесь сами перезапускать docker — это работа Claude.
🟢 / 🔴 Кружок IMAP в шапке — что показывает

Индикатор живости IMAP-watcher по каждому ящику в отдельности. Закрывает слепое пятно агрегатного verify_lidorub.sh: тот может быть 🟢, пока хотя бы один из 9 ящиков пишет в БД — а другой может молча умереть на часы.

  • 🟢 зелёный — все ящики OK: сторож дошёл до последнего письма в каждом ящике (его указатель совпал с UID письма) или письмо пришло только что.
  • 🔴 красный — по одному или нескольким ящикам сторож отстал: в ящике есть письмо новее его указателя, и указатель стоит на месте дольше 10 минут подряд. Отдельная причина — «сторож к ящику не подключён»: ящик добавили в конфиг, а контейнер после этого не перезапускали. Кликните по кружку/тексту — раскроется список с причиной по каждому ящику.
  • Сравниваем именно указатель сторожа (Redis), а не наличие письма в базе: базу заполняют только письма, прошедшие фильтры, поэтому по ящикам с рассылками старая проверка давала ложную тревогу (правка 31.08.2026). Если Redis недоступен, проверка откатывается на старый способ — по базе.
  • Время отставания считаем по самому указателю: с какой минуты он стоит и не двигается. По дате письма считать нельзя — письмо попадает в ящик задним числом, когда его перекладывают из другой папки или размораживают в очереди отправителя, и тогда тревога срабатывала мгновенно и зря (a.arefeva@mv-group.ru 31.08.2026: письма трёхдневной давности легли разом, сторож забрал их за 2 секунды, а панель написала «молчит 9.2 часа»).

Обновление: автоматически каждые ~5 минут (host-cron /etc/cron.d/jbtools-imap-lag) + UI подтягивает свежий снапшот раз в минуту. Кнопка «Перепроверить» форсирует прогон вне расписания и пишет строку в historу.

Происхождение: инцидент 14.05.2026 — watcher для a.arefeva@mv-group.ru молча залип на 6.5 часов, потерял 26 коммерческих писем; общий статус Лидоруба всё это время был 🟢.

Глоссарий
  • IMAP IDLE — режим прослушки почтового ящика без поллинга, push-уведомления о новых письмах.
  • BODY.PEEK[] — IMAP-команда забора тела письма без пометки прочитанным. Используем на ящиках МОПов.
  • Celery — очередь фоновых задач (Redis в роли брокера).
  • worker-email — отдельный воркер на очередь email (классификация писем).
  • Roistat — внешняя система аналитики, иногда дублирует входящие лиды.
  • МОП — менеджер по продажам. Ящики 1006–1016@jbtools.ru, ak@jbtools.ru. На них Лидоруб только наблюдает.
  • Коммерческие ящики — sales@jbtools.ru, info@jbtools.ru, a.arefeva@mv-group.ru. На них Лидоруб создаёт лиды автоматически.
  • Sonnet / Opus — модели Claude, на которых работает классификация.
Группировка:
Как разобрать ошибки: откройте Claude Code и напишите:
/learn-feedback
Claude автономно прочитает неразобранные ошибки, починит код по всем слоям (классификатор / парсер / расценка / UI / форвард), заведёт Trello-карточки и пометит записи resolved. Без уточняющих вопросов — работает по целям системы: скорость первого ответа клиенту, точность расценки.
Авто-обновление каждые 60 сек.

Отдел первичных продаж · лиды до

Сколько активных лидов сейчас на каждом МОПе. Активный = в стадиях «Менеджер назначен» или «Менеджер взял в работу». Лиды раздаются по кругу (карусель); МОП на лимите пропускается — лид ждёт в очереди.
Загрузка…

Отдел проектных и крупных продаж · лиды от

То же самое для крупных лидов. Лимит и стадии общие.
Загрузка…

Очередь распределения

Лиды в стадии «Квал Лид» на роботе — ждут пока освободится МОП. Каждую минуту cron-задача проверяет очередь и назначает на свободных.
До
клик → список
От
клик → список
Ждут >30 мин
клик → список
Всего в очереди
клик → список

История последних 50 решений

ID ID лида Размер Сегмент Источник Старый ответственный Новый ответственный Старая стадия Новая стадия Ожидание (мин) Статус Ошибка Дата
Загрузка…