BS 24
🛑 AI PAUSED
🛡

🟡 Обед
🛡
🔔 Уведомления
🔑 Войти
Профиль
Тема
Аккаунт
🛑
AI остановлен глобально
Все pipeline-стадии падают с AI_PAUSED. Новые заявки обрабатываются, но AI-классификация/parse/enrichment/smeta не работают. Возобновить → кнопка «▶️ Возобновить AI» в шапке справа вверху.

Сегодня

кликни → детали ↓
🛠 Build progress — что осталось добить до 100%
⏳ загружаю прогресс...
⚠ Сегодня требует внимания всё ок
Заявки на которые автопилот сам попросил внимания: просрочка SLA · нужны уточнения · слабая привязка к каталогу · ошибка pipeline. Кликни заявку — разберись.
загружаю...
✅ Автопилот идёт без вмешательства
🔴 SLA breach
🟡 Уточнения у клиента
🟡 Низкий catalog match — AI не нашёл работы в каталоге
🔴 Ошибки pipeline
🟠 Без координатора
💰 Ждут моего одобрения пусто
загружаю...
✅ Все чеки и расширения сметы обработаны
💸 Чеки на материалы ()
➕ Расширения сметы ()
🎯 TOP работ которые надо в каталог
загружаю...
✅ Каталог покрывает все работы за последние дней
Owner: кликни ➕ в каталог → создастся catalog_suggestion → подтверди в Справочники → Предложения. После добавления AI будет автоматом матчить эту работу в будущем.
Работа (нормализованное имя) Встречалась Заявок Сумма себес Ср. цена Примеры Действия
📊 Воронка обработки заявок (24ч)
📥 Поступило
🤖 Авто-диспатч
✋ Касаний coord
🟢 Без касаний
🤖 Автопилот — за последние 24 часа
🚀 Auto-dispatch
💰 Auto-approve смет
✋ Касаний координатора
📐 Точность бюджета
🚨 В очереди к coord
draft-заявки за 7 дней
ℹ Сейчас нет активности за 24 часа — метрики пустые. Дождись поступления заявок, чтобы увидеть статистику.
🧬 Canonical State KPIs ✓ live
🛑 Review required
AI сомневается · ждёт owner approval
⏳ Pending customer
ждём клиента
🔧 В работе
assigned + en_route + in_progress
🚫 Blocked
техник заблокирован
Медиана intake → dispatch:
ℹ Shadow phase A накапливается. Миграция применена 2026-04-24; ожидаем 7-14 дней для первых стабильных метрик.
📊 Автодисплечер — неделя
загружаю...
🚀 Auto-dispatch (неделя)
📡 Покрытие техников
🔧 Диспатч за 7 дней
🧙 Wizard завершён
за 7 дней
📡 Какими каналами достучаться (на 6300+ базы)
📭 За 7 дней нет данных по приглашениям и wizard'у. Ждём Sprint 1 mass-invite запуска.
Очередь на решение Все →
Очередь пуста — все заявки в работе
Активность конвейера ● Live
Нет недавней активности
💰 Последние платежи ● Точка Live
Платежей ещё не было. Webhook от Точки активен для 3 юрлиц, ждём первого входящего.
🏦 Интеграция Точка Банк webhook + ночная сверка
Нет подключённых юрлиц. Финансы → Юрлица → редактировать → «🔌 Подключить webhook».
⚙️ Состояние фоновых задач
Нет кронов в фильтре «»
Refresh каждые 60с · последнее обновление:
✕ снять фильтр
🔁 Pending duplicates — coord review
в работе
Как распределяются заявки
🔵 Общий пул — новая заявка видна всем. Любой координатор или техник может взять.
✋ Беру — берёшь себе, становишься ответственным (DRI). Попадает в «Мои».
🎯 Фокус — подсвечивает срочное сверху, остальное приглушает (мягко). У координатора включён по умолчанию.
⏱ Таймаут → авто (при включённом авто-режиме): если за время никто не взял (авария ~5 мин / срочно ~15 / план ~30-60) → авто-назначение на лучшего техника.
🆘 Эскалация — если и техники отказались, заявка возвращается тому координатору, который её взял (или дежурному).
⚡ счётчик «в работе» — твои активно взятые. Держи ~3-5 одновременно.
Точный статус Источник Исполнитель
Клиент
Город
Система
Фильтры:
☑ Выбрано:
— восстановимо 30 дней, потом удаляется навсегда
загружаю…
ID Статус Заявка · клиент Техник Бюджет Возраст Действие
⌘/Ctrl+Enter — подтвердить · Esc — отмена
⏳ Генерация…
Ошибка:
загружаю… Открыть заявку ↗

🏢 Клиенты

Не удалось загрузить данные:
Загружаю…
🏢
Попробуйте другой запрос или сбросьте фильтры. Добавь через Финансы → Клиенты.
Контакты (люди работающие у заказчиков)
Загружаю…
Заказчик ФИО Должность Email Телефон Источник Primary Status
Контактов нет. Они появляются автоматически при синхронизации с Okdesk (cron okdesk-customer-master-sync-cron) и при обработке писем (intake-resolver).
Объекты обслуживания
Загружаю…
Объект Заказчик Город Адрес Источник Status
Объектов нет. Они синхронизируются ежедневно из Okdesk (cron okdesk-objects-sync-cron 03:30 UTC) или добавляются вручную через карточку заказчика.
Договоры между нашими юрлицами и заказчиками
Загружаю…
Дата Наше юрлицо Заказчик Сумма Действует Status
Договоров нет. Добавь через Финансы → Договоры.
Клиенты, авто-созданные из входящих заявок (по корп.домену / ИНН). Подтверди или отклони.
Очередь пуста — нет клиентов на подтверждение.
Клиенты без активного договора. Заявки обработаны, но диспетч заблокирован — требуется работа CSM.
📭
Очередь лидов пуста
Все клиенты с активными договорами — отличная работа!
Загружаю…
Компания / Контакт ИНН Дней в лиде Заявок Статус CSM Действия
📬 К разбору письма куда AI-resolver не уверен — owner делает решение, resolver учится
Загружаю письма…
📭
Очередь пуста Нет писем с этим статусом
Resolver автоматически разобрал все входящие письма. Попробуйте другой фильтр выше.

📬 Email detail

От:
Тема:
Получено:
Status:
Provider:
Message-Id:
🏢

Загружаю данные клиента…
Ошибка загрузки:
📇 Реквизиты
ИНН/БИН:
Юр. адрес:
💼 Биллинг
Наше юрлицо:
Срок оплаты:
Валюта:
ЭДО:
не используется
🔗 Связи с внешними системами

Объекты обслуживания

📍
Объектов нет
Появляются автоматически при синхронизации с Okdesk или можно добавить вручную.

Контактные лица

👥
Контактов нет
Появляются автоматически при синхронизации с Okdesk и при обработке писем (intake-resolver).
📧 Email-правила resolver
💡 Эти правила автоматически связывают входящие письма с этим клиентом. Resolver применяет их в порядке приоритета — выше priority = первее проверяется.
Договоры
№ договора Дата Тип Status Confidence
У клиента нет привязанных договоров. Добавь через Финансы → Договоры.
Заявки
Загружаю заявки…
# Заголовок Статус Город Бюджет Создана
Заявок этого клиента не найдено. Поиск идёт по short_name «».
💬 Все коммуникации (Email + TG + WhatsApp + MAX + Portal)
📭
Коммуникаций с этим клиентом ещё не было
Когда клиент напишет в Email / Telegram / WhatsApp / MAX / Portal —
threads со всех каналов появятся здесь.
Финансы
💼 Нам должны
⚠️ Просрочено
✓ Оплачено
Загружаю счета…
Выставлен Срок оплаты Сумма Статус Оплачен
Счетов для этого клиента не выставлено. Создай через Финансы → Счета.
📋 История клиента — Phase 6 (activity_log table).

Источник:

Источник:

📥

Inbox переехал в drawer

Inbox теперь доступен через 📥 chip справа на любой странице — click и drawer откроется на 480px. Кликни ⛶ в углу чтобы развернуть до полного экрана со всеми функциями (Hubbard tabs, поиск, bulk).

Финансы

Не удалось загрузить финансовые данные:
🔴 запросов просрочены >24ч
Tech ждут больше суток. Откройте и одобрите/отклоните для разблокировки.
Запросы на выплату ожидают одобрения · готовы к выплате
📭
Нет активных запросов на выплату
Tech-запросы появляются здесь после клика «Запросить выплату» в @boryabrobot.
Загрузка…
Себестоимость и прибыльность заявок за
📋 Заявок
💰 Клиенты заплатят
Sum client_total
💼 Себес
работы + материалы
📈 Прибыль
Заявка Клиент Работы (себес) Материалы Всего себес Клиенту Прибыль Маржа % Scope split Строк Когда
Нет данных за выбранный период или фильтр
загружаю…
💡 Scope split: R = requested (то что клиент просил) · O = observed (AI обнаружил дополнительно) · Красные строки: маржа <15% (убыточно), зелёные: ≥25% (здорово) · Источник: pipeline_budget_log
Наши юрлица (issuer companies)
Юрлицо Страна Налоги НДС ИНН/БИН Банк
Юрлиц пока нет. Добавь первое — например ООО БИЛДИНГ из примера счёта #8182.
Договоры между нашими юрлицами и клиентами
Дата Наше юрлицо Клиент Сумма Статус
Договоров пока нет. Добавь хотя бы один (например Д-325п-24 от 20.03.2024) чтобы основание автоматически вставлялось в счёт.
Счета на оплату
💼 Нам должны
⚠️ Просрочено
⏱ Средний срок оплаты
📈 Выручка за год
issued + paid за 365 дней
🏆 Топ должников
КлиентНам должныИз них просроченоMax дней просрочки
👤 По ответственным дебиторка
СотрудникНам должныИз них просроченоСчетов
Напоминания: автоматически, cron 10:00 MSK
Дата Наше юрлицо Клиент Ответственный Сумма Статус Срок Просрочка Напоминания Действия
Сначала добавь хотя бы одно юрлицо и одного клиента. Счетов пока нет. Жми «+ Выставить счёт» чтобы создать первый. Все счета оплачены 🎉 Просроченных счетов нет 👍 Черновиков нет. Оплаченных счетов пока нет.
Калибровка: Расчётный vs Сметный vs Фактический ❓ что это Расчётный = AI · Сметный = invoice · Фактический = paid
🔢 Заявок с AI-оценкой
📐 Точность (Сметный vs Расч)
✅ Точность (Факт vs Расч)
💰 Суммы
AI ₽k → k → k
Расчётный / Сметный / Факт
Заявка Клиент Расчётный (AI) Сметный (invoice) Δ vs AI Фактический Δ vs AI Статус
Нет данных для калибровки. Сначала pipeline должен обработать заявки с AI-оценкой, потом выставить счета и дождаться оплаты.
P&L (прибыль и убытки) По счетам: выставлено · оплачено · просрочено · нам должны · выплаты техникам
💵 Выручка (оплачено)
💸 Выплаты техникам
📈 Чистая прибыль (оплачено − выплаты)
без себестоимости материалов
⚠️ Просрочено счетов
Месяц Юрлицо (issuer) Заказчик Счетов Выставлено Оплачено Нам должны Просрочено НДС (с оплаченных)
Итого
Нет данных за выбранный период. Попробуй расширить диапазон дат или выставить/оплатить счета.
Входящие платежи (Точка Банк) Автоматически через webhook. Ночью — reconcile из выписки.
Дата Юрлицо Плательщик ИНН Сумма Назначение Статус Счёт
Всё привязано автоматически 🎉 Платежей пока не было. Webhook от Точки активируется после регистрации в company editor. Привязанных платежей нет. Нераспознанных нет. Неоднозначных нет.

✅ Отметить счёт оплаченным

Счёт
Клиент:
Сумма:

Счёт №

Наше юрлицо
Клиент
Сумма
Ответственный
№ заявки
🎮 под контролем
Договор
Оплачен
· автоматически
Payment ref
Позиции
ОписаниеКол-во ЦенаСумма
📄 Открыть preview

Привязка платежа к счёту

Плательщик: (ИНН )
Сумма:
Дата:
Назначение:
Выбери счёт для привязки:

Новый счёт

Позиции
Описание Кол-во Ед. Цена Сумма
Итого:
В том числе НДС %:

🧩 atomic 🧠 embed 📐 BOM
💡 Философия: настрой один раз — забудь
Эти правила — базовая конфигурация бизнеса, а не ежедневный контроль. Раз настроил при запуске — работает автоматически.
📋 базовое
Модификаторы / Надбавки / Sanity — задай при запуске, меняй раз в год при инфляции.
🤖 auto-tune
Маржа — empirical median per (клиент × L1) из contract_prices. 182 ячейки matrix (13×14). Refresh weekly cron fill-margin-matrix когда добавляются новые договоры.
🚀 dispatch
Правила маршрутизации — создай пресеты, включай/выключай автопилот в Система.
📋 Правила
📚 Каталог
🤖 AI
⚡ Модификаторы (отдельные строки в смете — Wowworks doctrine)
Код Название Тип Значение Триггер Активен
Модификаторов пока нет. Они добавляют отдельные строки в смету по триггер-словам (пример: «срочно» → +500₽ «быстрый выезд»).
🏢 Надбавки (multiplier на всю работу — mall/bank/roof/access)
Тип Описание Коэфф. Ключевые слова Активен
Надбавок пока нет. Они увеличивают всю смету ×1.15 / ×1.30 для сложных условий (ТЦ / банк / кровля / ночная работа).
📈 Маржа по категориям работ 🤖 auto-tune
💡 Не надо крутить ежедневно. Маржа по категории подстраивается автоматически:
cron margin-calibration смотрит plan vs fact в estimate_budget_fact и предлагает сдвинуть margin_pct если факт систематически расходится с планом более чем на 5%. Включается через Система → Autopilot controls.
Категория (work_l1) Клиент Маржа % Floor % Активен
Маржа по категориям ещё не настроена. Нажми «+ Добавить» чтобы задать для каждой work_l1 (отделка / электрика / HVAC / ...) target + floor %. AI-сметчик использует их для D1-rule (Protection Layer).
⚠ Sanity ranges (допустимые диапазоны цен)
💡 Первый защитный слой перед AI. Для каждой категории — допустимый диапазон цен [min_price, max_price] ₽/единицу. AI-сметчик (07c) использует эти границы чтобы ловить галлюцинации: «1₽» или «500 000₽» за обычную работу → блокируется, ждёт проверки координатора. См. также 🛡 Защита сметы в Система → AI Управление (D1-D6 rules + Anomaly detector).
Категория Ед. Min ₽ Max ₽ Примечание
Пока нет диапазонов цен. AI-сметчик может галлюцинировать «1₽ за м²» или «500 000₽ за замок». Нажми «+ Добавить» чтобы ограничить min/max для каждой категории.
🚀 Маршрутизация техников (matching + per-rule auto toggle)
Prio Название Паттерны (work/city/client) Сложн. Rating Workload Auto Активен
Правил маршрутизации техников пока нет. Добавь первое — pipeline будет использовать его для подбора техника под каждую заявку.
🎯 Политика заявок (выезд + диагностика)
⏳ Загрузка политики...
Политика не найдена в operation_modes (миграция 114 не применена?). Используется FALLBACK_POLICY (hardcoded в lib/enrich-postprocess.mjs).
🔎 RAG Preview — что AI-энрих увидит в каталоге Тест на любой заявке, без живых данных
💡 Здесь вводишь title/description заявки (или жмёшь пресет) — видишь реальный shortlist который пойдёт в промпт 07-enrich. Источники: embedding (семантическая близость к service_catalog.embedding) + keyword (FTS по L1 в spec/name_full) + contract (договорные цены клиента через client_alias_map).
Пресеты:
➕ Предложения в каталог
💡 Что тут: единая очередь — (a) AI-сметчик предлагает редкие работы для промоута, (b) Phase B audit наполняет Curator аномалиями (L1 mismatch, нет цены, obsolete). AI → Approve создаёт новую запись. Anomaly → Apply выполняет proposed_fix на existing record (UPDATE service_catalog, audit в catalog_audit_log).
🤖 AI обработать всё — запускает batch с правилами: similarity ≥0.99 auto-merge, AI verify для 0.95-0.99, skip для obsolete не входящих в L1, set-price только при confidence ≥medium. Остальное → review для owner.
ID Название Ед. Категория Себес (AI) Заявка Severity Статус Действия
Загрузка…
🎯 Эталонные сметы (templates)
💡 Recipes для частых работ: trigger_keywords → матчится с title/description новой заявки → AI в 07-enrich видит template в prompt как подсказку (templateHintBlock). Пример: template "Замена жалюзи" = [work: "Жалюзи | Ремонт" × 1, materials: [...]], triggers: ["жалюзи","штора","ролет"].
⏳ Загрузка…
Templates не созданы. Жми + Добавить для первого. Или seed'ом через скрипт.
📥 Импорт прайса/сметы (XLSX Wizard) Auto-detect формата · Preview matching · Apply → contract_prices
Как это работает. Загрузи клиентский прайс или смету (.xlsx / .xls) → система автоматически определит формат (5 поддерживаемых: Adidas / Билдинг / Just Sport / Lichi / Мегафон) → покажет preview с color-coded matching к catalog → нажмёшь «Импортировать» — работы попадут в contract_prices, новые — в очередь catalog_suggestions.
Матчинг через embedding similarity (Ollama bge-m3). Поддерживаемые единицы из lib/unit-normalize.mjs.
📎
Формат
Клиент:
Метаданные из шапки
Заказчик:
Подрядчик:
Объект:
Адрес:
Площадь:
Всего строк
Работы
Материалы
Matched
New candidates
Выбор строк: Выбрано: (работы: , материалы: ) из
Row Имя Тип Ед.изм ₽ за ед Match
Нет извлечённых строк. Проверь формат.
Отметь строки чекбоксами
✅ Импорт завершён
· ·
Выбери XLSX/XLS файл → нажми «Preview» для предварительной обработки.
🩺 Здоровье каталога
⏳ Считаю метрики…
Нажми «↻ Обновить» чтобы посчитать метрики.
📐 BOM — Нормы расхода материалов
💡 BOM (Bill of Materials) — состав материалов на работу (например «Установка унитаза» = унитаз + инсталляция + крепёж + силикон). Нужно для авто-составления сметы. Источники: Haiku AI (2026-04-26 batch) + СНиП. Cron weekly: catalog-norms-fill-cron.
Coverage
Работ с BOM
Полный BOM (3+ мат.)
Всего норм
🛒 Материалы
💡 Materials backend: materials_catalog (карточки), materials_suppliers (16 поставщиков), dealer_contracts (дилерские договоры с ценой), material_markup_rules (наценка %), material_prices (1803 цен, daily scraper 03:30 UTC: Pulscen/Saturn/WB/Ozon/Maxidom).
Не удалось загрузить материалы:
Каталог
Поставщики
Дилеры
Наценок
Цен (с scraper)
Code Название Тип Регионы Reliability Активный?
Нет поставщиков.
Дилер Бренд Договор Скидка % Загружено строк Active 📥 CSV прайс
Нет активных дилерских контрактов. Создай контракт через v1 UI или curl: POST /api/admin/dealer-contracts.
🧪 Калькулятор наценки (предсмотр)
Введи входную цену материала + клиента + категорию → увидишь финальную цену с применением правил material_markup_rules (по приоритету).
Финальная цена (net):

                
Имя Scope Тип Значение Приоритет Active
Нет правил наценки.
💡 Owner review queue: medium-confidence (sim 0.60-0.82) candidates от matcher. AI не уверен — нужен твой ✓/✗ click. Approve = link price → catalog material. Reject = оставить unlinked. Auto-link (sim ≥0.82) уже применён.
Link review недоступен:
⏳ Загрузка…
💡 Поиск лучших цен по списку: вставь имена материалов (по одной строке). Можно с количеством через `|`: краска интерьерная | 5 кг.
Бэкенд делает trgm match в materials_catalog → находит линкованные material_prices с лучшей ценой + альтернативы. Если нет в каталоге — ищет напрямую в свежих прайсах от scrapers.
✅ Чек-лист Ревью (07ca Reviewer AI)
Как это работает. После того как AI-сметчик собрал смету, второй AI (Reviewer) проверяет её по этому чек-листу — как бухгалтер при приёмке. Если правило нарушено — в заявке появится reason_code, заявка попадёт в Dashboard «Требует внимания».
Источник правил: docs/ai/reference/gold-technology.json + Руководство сметчика. Полный план: Autopilot Roadmap (сейчас Phase 1 — manual approve, далее AI suggest → auto-fix).
⏳ Загрузка чек-листа…

7 ключевых pitfalls (Option C — 2026-04-21)

Существующие правила (margin, регион, surcharge, etc)

Reviewer AI также флагает эти legacy reason_codes (описаны в lib/estimate-review-contract.mjs правила 1-6):
👷 База техников
Не удалось загрузить базу техников:
ФИО Статус Рейтинг Заявки Активн. Скиллы TG
Нет данных по фильтру
← Кликни тех в списке
чтобы посмотреть детали

📞
✈ TG:
📍 · радиус
BS24 id:
Okdesk eq id:
Last sync:
Verification:
Нет skills matrix данных
СкиллУровеньVerified jobs
Сертификации:
Composite: ★ ( оценок)
Quality:
Speed:
Reliability:
FTFR: (% решено с 1-го визита)
Accept rate 30d:
Cancellation rate:
История рейтинга (last 20):
Нет заявок
🎯 Роутинг сообщений
Как работает: при входящем сообщении (email/TG/WA) — сервер проходит правила по возрастанию priority и применяет первое совпадение. Правило ставит assignee_role на thread → координатор той роли видит его в Inbox. Owner override доступен в expanded view drawer (✏ кнопка). Cache TTL 60s — изменения видны через минуту.

Новое правило роутинга

Загружаю…
ID Prio Match Type Pattern Target Role Description 📊 Точность Enabled Действия
📋 Auto-TODO Rules
Как работает: cron coord-todo-generator-cron.mjs запускается каждую минуту, проверяет события (новые threads / mentions / SLA breach / tech reject / snoozed expired) и создаёт coord_todos записи по правилам ниже. Каждое правило указывает trigger event, match conditions (JSONB filter), target role (кому показать) и template (заголовок + тело). Auto-tasks появляются в 📥 Что сейчас drawer как alert/task rows. Anti-dup: event_key уникальный per fire — повтор не создаст дубль.

Новое auto-TODO правило

Загружаю…
ID Prio Trigger Role Level Title template Hits Enabled Действия
🧠 Политики клиентов
Как это работает (Phase 2 (D) Auto-Learning): Каждый раз когда координатор исправляет AI поле в 07-enrich (через ✎ buttons), запись летит в enrich_correction_log. Когда в одной компании накапливается ≥2 похожих исправления — extractor создаёт candidate policy здесь. Ты подтверждаешь / отклоняешь / редактируешь → confirmed policy автоматически инжектится в AI prompt для следующих заявок этого клиента.

Industry pattern: Salesforce Einstein FSL «Customer Profile Learning», ServiceTitan «Customer Memory Vault», Mindee «Per-Customer Rules».
🚦 Флаги клиентов
Что это: ServiceTitan-style теги клиентов — hard gates (⛔ Do Not Service блокирует dispatch) и soft hints (⭐ VIP, 💸 Slow Pay, 💰 Только предоплата, 🪪 Нужен инструктаж, 🎫 Сервисный контракт, ⚠ Высокий риск) — инжектятся в 07-enrich AI prompt. Можно прикрепить к клиенту / конкретному объекту / конкретному контакту.
👤 Предпочтения контактов
Что это: Per-contact преференции (ServiceTitan/Salesforce pattern): канал связи (WA/TG/email/звонок), часы доступности, язык, роль на объекте, уровень полномочий. 05b-memory автоматически достанет prefs для contact_id текущей заявки и AI учтёт в clarification_questions. Tech получит в pre-work brief.
❤ Здоровье клиентов
Что это: Composite score 0..1 из 5 компонентов: SLA breaches (×0.30) + risk-flags NTE proxy (×0.20) + coord touches per issue (×0.15) + AR aging (×0.15) + repeat-visit % (×0.20). Утром CSM (Andrey) глянул — обзвонил красных за 60-90 дней до churn. Pattern: ServiceChannel Provider Scores / Salesforce FSL Customer 360.

Daily cron 03:00 UTC обновляет snapshots. История 90 дней в drill-down. Trend 7d — стрелка изменения score.
🔮 Что готовится — будущие features + мониторинг памяти
Список deferred-фич Auto-Learning Sprint'а. Каждая ждёт unlock condition (CSM hire / data density / owner-decision). Показывает текущий прогресс. Когда condition выполнится — фича становится READY 🎉, можно делать (effort estimate указан).
📚 Менеджер каталога
Сохранённые фильтры
Пусто
Режим:
Цены клиента: ⚠ overlay активен
Пресеты:
🕳 Gaps — работы которые AI часто видит, но не находит в каталоге
⏳ загружаю...
✅ Нет gaps — каталог покрывает всё что AI видел
Наименование Ед ₽ исп ₽ клиент Маржа Готов Источник
⏳ Загрузка…
Каталог пуст по текущим фильтрам.
⏳ Загрузка…
Каталог пуст по текущим фильтрам.
🛠 Skill:
⏱ Duration:
Источник: · ref: · ⭐
⏳ Загрузка aliases…
Нет synonyms в contract_prices. Все клиенты используют имя как в каталоге.
⏳ Загрузка клиентов…
Клиентских цен нет. Используется каноническая из каталога.
Каноническая
·
⏳ Загрузка норм…
Норм расхода материалов для этой позиции не задано.
💡 Synonyms — альтернативные названия работы, которые AI может дать вместо канонического имени. Пример: "кондёр"↔"кондиционер". Harvested из pipeline_budget_log (historical) + manual add. Используются в 07-enrich fastpath — быстрый точный bind перед RAG/embedding.
⚠ Не путать с «Алиасы» tab (contract_prices — как клиенты именуют в договорах).
⏳ Загрузка synonyms…
Synonyms для этой позиции не заданы.
➕ Добавить synonym
📜 История правок этой работы (catalog_audit_log). Показываются edits через UI и cron-процедуры (anomaly fixes, AI refresh, classify).
⏳ Загрузка истории…
Истории нет. После первой правки через панель здесь появится запись.
🔀 Варианты — каноническое разделение работы по осям (размер / материал / тип механизма / etc). Цена = parent.exec × price_factor; client = exec × 2 (50% маржа).
⬆️ Это вариант. Родительская работа:
дочерних вариантов:
У этой работы нет вариантов.
📚 Каталог работ — экспорт/импорт CSV
💡 Зачем: скачай CSV, открой в Excel/Google Sheets, правь цены / добавляй работы, загрузи обратно. ID = UPDATE, пустой id = INSERT (новая работа). После импорта нужен backfill embeddings: node scripts/backfill-catalog-embeddings-ollama.mjs — иначе RAG не увидит новые работы.
📥
Экспорт каталога для сметчика
Все активные строки + atomic_alias, contract usage count, средняя цена по договорам.
Открыть в Excel-RU: Данные → Получить данные → Из текста/CSV → выбрать UTF-8 + разделитель «запятая».
📊 Аналитический экспорт (полный каталог + сравнение)
XLSX с 8 листами: Каталог (2967 работ, 23 раздела БРС-style, ENG, цены клиенту/исполнителю/AI) · Регионы (104) · Клиенты (с НДС) · Маржи (matrix 13×14) · Надбавки · Material markup · Сравнение ×2 (executor × {1.5, 2.0, 2.5} vs реальные client цены per клиент) · Сводка.
🎨 Канонический экспорт (прайс-лист клиенту)
5 канонических форматов: Билдинг (Боря 2026, 7 cols RU+EN), БРС (4 cols с НДС, иерарх. номерация), Вауворкс (prepay/postpay ×1.50), Технический (EN headers, для reimport), Внутренний (owner only).
📋 Прайс для заказчика (legacy — выбирай канон экспорт выше)
5 колонок: № · Наименование · Ед.изм. · Цена ₽ · Мин.заказ. Для multi-region клиентов (Мегафон: 794 работы × 82 региона) — выбери регион, иначе будет median по всем регионам.
Скачать .csv
🔧 Прайс для исполнителя
5 колонок: № · Наименование · Ед.изм. · Цена ₽ · Мин.заказ. Группы по категориям. Без client price — subcontractor не видит нашу маржу.
Можно выбрать регион — добавятся колонки «Цена Москва» + «Цена региона» + коэф (Чукотка ×1.94, ЯНАО ×2.12, СПб ×1.0, ...).
Скачать .csv
📊 Внутренний прайс-лист (для ops)
Полный отчёт: все колонки + margin абс + % + итоги по категориям. Для анализа / Excel pivot. НЕ отправлять контрагентам (содержит executor и client цены вместе).
Скачать .csv
🔧
Глобальное изменение цен ±%
Применить процент ко всем (или фильтрованным) catalog items. Сначала dry-run — увидеть сколько items затронет. Потом apply.
📤
Импорт из CSV
Columns: id (опц.), category, action, spec, name_full, unit, unit_label, base_price_executor, base_price_client, min_order, source, source_ref

👥 Команда

⏱ Рабочий день — мониторинг активности 🟢 авто-обновление 30с
Автоматический мониторинг рабочего дня
Авто-закрытие забытых смен · восстановление дежурного координатора · авто-away по простою · учёт простоя/обеда. ⚠ Слежка за сотрудником — раскрой в трудовом/локальном акте (ТК РФ + 152-ФЗ).
Загружаю...
СотрудникРольСтатусНа смене ОтработаноОбедПростойАктивность
Нет активных сотрудников
📊 Здоровье маршрутизации заявок
без владельца сейчас
эскалаций / 7д
авто-назначение по источнику:
📈 Аналитика смен (7 дней)
дежурный
провалов покрытия
смен
переработок
забытых
средняя смена
Передачи дежурства: вручную · авто · с заметкой
✨ AI-сводка смены
Нажми «Сгенерировать» — AI соберёт приоритеты для передачи смены (что подхватить первым).
❓ Как работает дежурство

Смена — нажми «▶ Начать день» в шапке. Если нет активного дежурного, дежурство берёт активный координатор. Owner/admin/другие роли ведут смену без 🛡.

Обед / Выезд — на обеде простой не учитывается (≤2ч ТК). «🚗 На выезде» — простой не считается (работа вне компа).

Завершить день — дежурство передаётся только активному координатору. Если координатора нет, слот остаётся пустым, а срочные случаи уходят owner через эскалацию.

Заявки идут закреплённому ответственному или дежурному координатору (catch-all). Если координатора нет, owner получает эскалацию как последний резерв, но не становится дежурным.

Авто-присмотр (если мониторинг вкл): нет активности 15м → «🌙 Отошёл»; ушёл надолго (4ч) или забыл закрыть (16ч) → смена авто-закроется по последней активности.

Эскалация: дежурный молчит 30м + есть срочное → оповещаются коллеги → через час owner (в Telegram). Срочные заявки не теряются.

Сотрудники платформы
Не удалось загрузить сотрудников:
ID ФИО Роль Статус TG Города В работе Last active
Загружаю сотрудников...
Нет сотрудников по фильтру

📞 · ✉
✈ TG:
🛡 Роль:
🏙 Города:
🔗 Okdesk сотрудники: не привязаны
📅 Создан:
⚠ Опасная зона
Блокировка отзывает все TG/WA сессии и preserves audit trail
👷 База техников (read-only сводка) → Управление в Справочники → 👷 Техники
Всего
Новых за 30д
С TG
Заблокировано
🌐 Сила сети — покрытие техников кто где живёт + что умеет = доступная мощность
🏙 Топ городов
🛠 Покрытие skills
🏆 Лидерборд техников rating × √jobs (анти-фейк рейтинг с 1 заявкой)
⏳ загружаю...
Пока нет данных
# Техник Город Jobs ⭐ Rating 🎯 FTFR 📥 Accept Skills
📜 Аудит admin actions
Нет записей по фильтру.
⏳ Загрузка…
Когда Кто Действие Объект Причина Детали
🧩 Роли и доступ пользователи, LK-шаблон, protected blocks и runtime overrides
Загружаю роли и LK-шаблоны…
Роль Пользователи Landing Видимые блоки Governance Действия
⏳ Загрузка workspace…
Выбери роль чтобы увидеть какие блоки UI она видит, какой landing использует, какие notification defaults.
Центр включателей блоков
Роль: override
Загружаю блоки…
Режим настройки открыт, изменений нет.
🚪 Landing
📂 Section:
🗂 Sub-tab:
🪟 Auto-open drawer: да
🧩 Widgets:
🔔 Notification defaults
📲 Telegram:
📧 Email digest:
📱 SMS critical:
не настроено для этой роли
📦 LK-шаблон роли
⚙️ override applied
⚠ Изменения мгновенно влияют на UI всех пользователей этой роли. Universal blocks (🌐) убрать нельзя — они hard-coded в registry.
Текущие блоки
Техническое добавление блока
🌐 — обязательная LK-оболочка: уведомления + профиль. Центр коммуникаций и рабочие разделы включаются выше в «Центре включателей».
🗂 Sidebar groups
🔐 Permissions detail (raw JSON)

                

🔗 Привязать Okdesk-сотрудников

Когда заявка в Okdesk имеет ответственного из этого списка → pipeline отправит карточку . При смене ответственного в Okdesk — карточка автоматически перейдёт другому координатору.
Загружаю список Okdesk сотрудников… · 💡 По phone match подсказан кандидат сверху
⚠️ Если сотрудника нет в списке (например owner-admin id=1 скрыт Okdesk API):

➕ Пригласить сотрудника

Как это работает: создай сотрудника → система вернёт staff accept URL и отправит письмо на рабочий email. Эту же ссылку можно переслать вручную через TG, WA или SMS. Ссылка открывает вход в ЛК и действует ограниченное время.
✓ Создано. ID # · status:
📩 Ссылка входа сотрудника:
💬 Поделиться через TG
После первого входа сотрудник получит staff-сессию. Если понадобится новая ссылка входа позже, её можно выпустить из карточки сотрудника.

➕ Добавить сотрудника

✏️ Редактировать координатора

📨 Onboard техников через SMS

Как работает: SMS с magic-link → tech жмёт → бот авто-привязывает Telegram → следующие заявки приходят в TG (бесплатно).
Дедуп: tech повторно не получит SMS если invited за последние 7 дней.
Двойной gate: SMS пойдёт только если feature_flags.dispatch.sms_to_techs_enabled=true в БД.
⏳ Загружаю cohort preview...
В когорте
Будет SMS
Дедуп skip
~ Стоимость ₽
Превью (первые 5):
✓ Burst queued — batch_id:
·
Прогресс check'ай через PG: SELECT COUNT(*), sms_provider_status FROM tech_invite_log WHERE batch_id='' GROUP BY sms_provider_status
Через 24h измерь conversion: SELECT COUNT(*) FROM tech_invite_log WHERE response_at IS NOT NULL AND batch_id=''
ℹ Все техники в когорте уже invited за последние 7 дней — нечего слать.
⚠ Когорта пустая — нет подходящих техников по критериям SQL.

Система

🛑 AI на глобальной паузе — все bridge.ask() бросают ошибку. Pipeline stages падают. Возобнови чтобы продолжить.
📊 Daily
⚙️ Настройки — AI / chains / flags (раз в год)
🔍 Debug — logs / errors / cost / audit (forensic при инцидентах)
Не удалось загрузить системные данные:
Здоровье сервисов
💡 Kill AI + AI провайдеры + цепочки моделей — перенесено в 🤖 AI Управление. Здесь только общая инфраструктура (PG, Okdesk, парсеры, TG-бот).
🤖 AI Operations Center
💡 «Офис экспертов»: каждая операция = карточка с traffic-light status + кнопкой «▶ Run now». 🟢 healthy = недавно бежал. 🟡 stale = давно не бежал, проверь cron. 🔵 manual = только по кнопке. Cron schedules показаны для autopilot ops.
⏳ Загрузка…
Нет AI operations в audit_log. Может быть это первый запуск.
Заявки в обработке сейчас (окно 1ч)
ЗаявкаКлиентКатегорияСтатусОбновленоКандидаты
🎯 Кандидаты для заявки
Загружаю кандидатов…
Источник: · dispatch_log_id = · статус:
findTopTechs вернул пустой список — нет подходящих техников.
Нет заявок в обработке за последний час. Pipeline в idle-state.
📤 Отправки заявок техникам (7д)
📲 Отчёты от техников (TG-бот, 7д)
Ошибки и падения (24ч)
Ошибки диспатча
ЗаявкаКлиентСтатусВремя
Ошибок за последние 24ч нет 🎉
Ошибки техников
ТехникЗаявкаВремя
Стоимость AI (pipeline_budget_log)
Запусков pipeline
Общее время обработки
Средний срок / заявка
end-to-end
По дням
ДеньЗапусковСредн.Max
🪄 AI Prompt Proposals (Phase 2)
🔁 AI Парсер — обратная связь координаторов
загружаю...
🧑‍⚖ Confidence dashboard (LLM-as-judge)
🔌 AI Провайдеры
🛑 🟢
Управление — кнопка «🛑 Kill AI» в шапке (top-right).
Здесь только статус, не дубль кнопки.
🛡 Защита от AI-аномалий См. список аномалий →
🛡 Защита сметы (Protection Layer) источник логики
🚧 Sanity ranges не настроено
Допустимые диапазоны цен за работы (мин/макс ₽). Защищает от «цена 1 ₽» и «цена 500 000 ₽». Применяется в 07c до AI-сметчика.
Настроить в Справочники → Правила → Sanity ranges →
🔍 D1-D6 Rules Verifier формальные правила
Маржа (D1, из таблицы Маржа), сумма клиенту (D2), qty outliers (D3), покрытие норм (D4), min_order (D5), unmatched ≤30% (D6). Verdict: approve / review / block.
D1 margin D2 median D3 qty D4 normы D5 min_order D6 unmatched
Видно per-issue в drill-down (секция «🔍 Проверка сметы»).
🚨 Anomaly detector
Сравнение client_total с медианой последних 30д по клиенту. >100% отклонение → 🟡 warning, >200% → 🔴 critical + auto-pause (опц).
Список активных аномалий → вкладка «Аномалии» →
📊 Проверка сметы за 7 дней (D1-D6)
Всего проверок: ✓ approve ⚠ review 🛑 block Топ-правило:
📊 Aggregate статистика D1-D6 появится после следующих обработок pipeline
📡 Каналы отправки заявок техникам
🎛 Режимы AI по стадиям
Стадия Режим Что делает Лимит/день ₽ Кто менял
🔗 Цепочки моделей (fallback chains) Живые провайдеры:
Цепочки не загружены
Режим AI по стадиям ❓ как работают режимы
Стадия Режим Что делает 💰 Лимит/день ₽ Кто менял
Нет стадий в stage_modes. Проверь миграцию 036.
🔗 Цепочки моделей по стадиям
🟢 Провайдеры (живые):
🔴 Недоступны:
➕ Добавить новую модель (opus-4.7, gpt-5.5) или auto-discovery
Формат: provider/model-name. Поддерживаемые providers: billing, bridge, openai-bridge2, anthropic, openai, groq, gemini, ollama, minimax. Persisted в PG custom_ai_models (миграция 115).
🔄 Auto-discover — fetch модели из provider /v1/models endpoints (нужен API key в .env):
Custom models (PG-stored, доступны во всех chains dropdown):
Цепочек пока нет (загружаются с /api/admin/settings)
📟 Live логи сервиса (pushing через SSE)
Логи появятся здесь когда pipeline что-то залогирует…
Источник: in-memory ring buffer (500 строк) из lib/log.mjs. Rate limit: 30 строк/сек на подключение. Heartbeat 20сек.
📥 Входящие на проверку
📥 Здесь письма, в которых система не уверена — заявка это или нет. Проверьте и решите:
✓ Это заявка — создаст заявку и запустит обработку. ✗ Это спам — уберёт письмо.
Можно ничего не делать — письмо просто ждёт здесь, ничего не теряется.
✓ Пусто — все письма разобраны. Новые сомнительные будут появляться здесь.
⏳ Загружаю…
🩺 AI Health (provider × time heatmap)
📡 Текущее состояние локальных AI сервисов (live)
🧠 Anthropic billing-proxy
127.0.0.1:18801 · Max sub ($0/token)
⚙️ Claude bridge (backbone)
127.0.0.1:3100 · spawns claude CLI
🟢 OpenAI bridge (Codex)
127.0.0.1:3105 · Codex sub ($0/token)
🦙 Ollama (last-ditch)
127.0.0.1:11434 · offline fallback
🔑 Free fallback keys
✅ Test passed · chain= · model= · ms · attempts=
❌ Test failed ·
🔓 Инструкция для re-login
📊 Per-provider stats (h) total probes:
Provider OK Fail Success rate Avg latency Last error
Нет данных. ai-prober cron запущен? systemctl status ai-prober.timer. PG таблица: ai_health_probes.
⏳ Загрузка...
💰 AI Economics — стоимость, latency, paid-leak (д)
Всего AI calls
Stages используют AI
Total cost USD
Avg paid call
⚠️ Paid leak — fallback на платный API когда Max sub был доступен
Provider Calls Cost USD Stages
Расчёт от 429 на Max → fallback на anthropic-direct / openai-direct. Free providers (groq, gemini) excluded.
Stage Provider Calls p50/p95 latency Cost USD Paid calls
⏳ Загрузка...
Нет AI calls за выбранное окно. Источник: pipeline_enrichment_audit.
📈 Daily cost trend:
🗺 AI Inventory — все места где код вызывает AI
Всего call sites
✓ Chain-protected
DI param (resolved)
⚠ Lonely
Internal (defs)
📁 По категориям:
Category Total Chain ✓ Lonely ⚠
File:Line Type Status Primary model Note
⏳ Сканирую код...
Нажми 🔄 чтобы выполнить scan.
📊 Runtime activity (last 24h, из pipeline_enrichment_audit):
StageCallsPaidCost USD
Generated:
📜 Recent probes (last 100)
Time Chain Model OK Latency Error
AI-аномалии
ВремяSeverityСтадияЗаявка ActualMedian Δ %SampleДействие
Аномалий не обнаружено 👍 (pipeline работает в пределах ±100% от медианы)
История переключений AI
Время Стадия Заявка Было → стало Уровень Кто Причина
Переключений режимов пока не было.
🔌 Каналы — почтовые ящики и маршрутизация
Как это работает. Клиенты пишут на разные адреса: общие (info@ — на всё), для заявок (help@/build@ — даём клиентам), и на личные ящики координаторов. Можно писать на любой — система привяжет письмо к компании по отправителю (независимо от ящика), схлопнет дубли, и направит по правилам ниже: адрес-получатель → роль, личный ящик → его владелец («мой inbox»). Спорное (не заявка) уходит в «📥 Входящие на проверку», не в активный список.
Всего ящиков: Общие: Личные:
📬 Ящики
загружаю…
АдресТип→ Владелец / рольПровайдерПисем 30дПоследнееОпрос relay
📥 Принимаемые адреса (приём заявок)
Письмо обрабатывается, только если адресовано на один из этих адресов. = адрес, который мы ещё и опрашиваем (есть в ящиках выше). Добавление почты сотрудника здесь = подключить её к приёму заявок.
Список пуст — принимаются все (фильтр выключен).
🧭 Маршрутизация (адрес / контент / отправитель → роль)
Как работает. Письмо проходит правила сверху вниз по приоритету (меньше число = раньше), первое совпадение назначает роль-ответственного. Типы сопоставления:
  • to_pattern — по адресу-получателю. Напр. help@brendservicecoordinator (все письма на help@ идут координатору).
  • sender_pattern — по отправителю. Напр. @partner.ru → нужная роль.
  • regex — по теме+телу. Напр. (отмена|расторж|претензия)customer_success.
  • ai_category — по AI-классификации намерения письма.
  • channel — по каналу (email / tg / wa).
💡 Личные ящики координаторов привязывают письмо к владельцу автоматически («мой inbox»), независимо от этих правил. Правила нужны для общих ящиков (help@/info@) и контентной маршрутизации по ролям.
Приор.ТипПаттерн→ РольСтатус
💡 Все почтовые ящики и правила маршрутизации в одном месте. ➕ добавить · ✏️ изменить · 🗑 удалить. Пароли хранятся зашифрованными, изменения применяются на следующем цикле опроса (~2 мин).
Yandex: пароль приложения (не основной). Хранится зашифрованным (AES-256-GCM). Опрос ~каждые 2 мин.
⏱ SLA — настройка эскалации
📊 Пороги ответа (минуты) 🟠=badge 🔴=push on-call 🔴=push all 🤖=AI redistribute 👑=owner
Загрузка…
Канал 🟠 badge 🔴 on-call 🔴 all 🤖 AI 👑 owner
🕐 Рабочие часы Вне рабочих часов SLA-пороги умножаются на multiplier
Загрузка…
🔑 Ключевые слова аварий (Tier-1 regex)
Загрузка…
🧪 Тестер паттерна
Уровень Паттерн (regex) Метка On
🚩 Системные флаги ❓ что это
🖥 UI версия ✓ все ВКЛ ⚠ есть отличия все должны быть ВКЛ
🔌 Интеграции (Точка Банк, детектор аномалий) ✓ все ВКЛ ⚠ нарушение — интеграция отключена все должны быть ВКЛ
⚠️ Override (экстренные переключатели) ✓ штатное состояние ⚠ override активен — что-то переопределено все должны быть ВЫКЛ (штатно)
🔧 Прочие флаги
🤖 Autopilot controls (dispatch) mode=auto (включён общий) mode=manual (autopilot OFF глобально) ❓ детали
mode Главный переключатель dispatch stage. manual = все действия вручную. auto = ветка B активна (auto-publish/auto-assign при confidence≥high).
max_complexity
R7.1 — порог сложности
Максимальная сложность (1-5) для попадания в branch A auto-assign. По умолчанию 3, в v3.5 поднято до 4.
max_budget_rub
R7.1 — порог бюджета
Максимальный budget_estimate.median (₽) для branch A. По умолчанию 50000, в v3.5 поднято до 75000.
auto_republish_timeout_mins
R7.3 — таймаут draft
После скольки минут inactivity координатора в draft-статусе pipeline сам публикует в канал. По умолчанию 60.
💰 Pricing autopilot (auto-approve смет) вкл — safe-смета идёт в работу без согласования выкл — все спорные сметы идут на согласование ❓ политика
auto_approve_enabled
R8.1c — главный kill switch
Когда ВКЛ — заявки подходящие под политику ниже идут в soglasie (в работу) без ручного согласования.
Политика auto-approve
auto_approve_max_budget
макс. бюджет
Заявки дороже этой суммы всегда идут на согласование. Ограничивает финансовый риск автопилота.
auto_approve_min_bound_fraction
мин. доля bound
Доля строк сметы привязанных к каталогу (bound). 0.9 = 90% работ и материалов должны быть узнаны. Ниже — проверка вручную.
auto_approve_min_margin_pct
мин. маржа
Минимальная маржа. Если расчётная маржа ниже (например из-за ошибки или агрессивного демпинга клиента) — в ручное согласование.
auto_approve_require_known_client
только известные
Применять auto-approve только если клиент привязан к canonical_name (есть в alias_map). Неизвестные клиенты — всегда в review.
🤖 Smart Estimator (AI-сметчик для редких работ)
smart_estimator_enabled
R8.3 — AI-оценка для unbound работ
Когда catalog-bind не нашёл работу → AI даёт cost_executor на основе похожих работ из истории. Маржа / регион / надбавки берутся из БД. Линия помечается как ai-estimated и всегда требует проверки координатором.
smart_estimator_materials
AI и для материалов
⚠️ РИСК: материалы требуют реальных цен поставщика. AI может галлюцинировать цены. Оставь ВЫКЛ пока не подключим web-search fallback (R8.3.6.6).
smart_estimator_min_confidence
минимальный confidence AI
Ниже этого уровня AI-ответ отбрасывается (линия остаётся unbound). high = только прямые аналоги в истории. low = принимаем и угадывания (дефолт, safer для координатора).
🌙 Ты не на смене. Чтобы работать — нажми «▶ Начать день»

Сотрудник Роль
TG папки: Email папки:
⚠ Ошибка загрузки
🆕 На подтверждение
💡 Показаны решённые за 14 дней. Старше — найди через 🔍 поиск вверху (архив не удаляется).
📭
Выбери thread слева
Кликни любое сообщение в списке — здесь откроется conversation с возможностью ответить.
⚠️ Скрыта фильтром
🤖 AI-разбор
AI читает переписку…
⚠ Новые сообщения — разбор может быть неактуален
Шаблоны не настроены
Hotkeys: ⌘+1..9 (Mac) или Ctrl+1..9
никто не подходит под «@»
✓ email отправлен ✓ отправлено в TG ✓ отправлено в WA ✓ Отправлено ✓ черновик сохранён ✓ отправлено коллегам
📊 Статистика ЦК — сегодня
📚 Как работает «Что сейчас»

💡 Click любой блок → детали на нужной вкладке. Цифры — реальное состояние сейчас.

📥 ОТ ЛЮДЕЙ
клиенты, техники — пишут напрямую
⏰ ОТ СИСТЕМЫ
cron каждые 5 минут проверяет правила
🚨 SLA breach — клиент ждёт >24ч
🔴 Техник отказался — нужен новый
Thread застрял — >7 дней без касания
Snooze истёк — парковка закончилась
📋 Создаёт задачу или 🚨 алерт
Назначено роли (Координатор / CSM / Tech Lead / др.)
↓ ↓
Оба потока попадают в одни и те же 3 корзины
В корзине = смесь 3 типов сущностей:
💬 Переписка
от клиента или техника
📋 Задача
передана другой роли
🚨 Алерт
создан системой

Inbox принимает сообщения из 4 каналов одновременно. Каждое входящее проходит 4 AI-шага.

📧 Email (IMAP poll Yandex каждые 2 мин)
  • help@brendservice.ru — общий ящик (входящие от клиентов)
  • info@brendservice.ru — info ящик
  • aripov.t@brendservice.ru — рабочая почта владельца
✈ Telegram
  • @boryabrobot — бот для техников (заявки, статусы)
  • Личный аккаунт через MTProto (как WhatsApp Web — coord видит чат как со своего телефона)
📱 WhatsApp
  • Meta Cloud API — бизнес WhatsApp
  • Multi-Device Personal — личный (Baileys)
Ⓜ MAX (российский мессенджер)
  • Bot API через @bs24bot (shared bot, Phase 1)

🤖 Что AI делает с каждым входящим (Track A):
  1. Проверка на спам (admission classifier) — если spam_or_noise → thread.status='spam', попадает в Спам корзину
  2. Назначение роли (routing rules) — кто должен этот thread видеть: Координатор / CSM / Tech Lead / AI Lead / Catalog / Закупщик / Бухгалтер
  3. Связывание с заявкой — распознаёт [BS24-N] в subject, RFC In-Reply-To header, TicketID шаблоны
  4. Уведомление — push к ответственному + observers (наблюдателям)

⏰ Что система делает сама (Track B — cron каждые 5 минут):
  1. SLA breach — клиент ждёт ответа >24 часа → создаётся 🚨 алерт для координатора (priority=urgent)
  2. Tech reject — техник отказался от заявки → 🚨 алерт «нужен новый техник»
  3. Thread застрял в работе — координатор взял thread, не обновлял >7 дней → 🚨 алерт-bump
  4. Snooze истёк — парковка закончилась → thread возвращается в Входящие
  5. Mention — кто-то упомянул @имя в внутреннем сообщении → notification
Алерты и задачи — это 📋 / 🚨 сущности в тех же 3 корзинах что и обычные thread'ы. Координатор видит всё в одном месте без переключения.

3 канонические корзины — минимум для быстрой триажа (Hick's Law: 4+ выборов удваивают время решения). Спам и Все — это фильтры внизу.

🔴 ТРИАЖ — требует внимания
Что попадает: непрочитанные thread'ы (никто не открывал). Если клиент написал в закрытый thread — авто-возвращается сюда.
Что делать: просмотреть, ответить или закрыть.
⏸ В РАБОТЕ — взято, не закрыто
Что попадает: прочитанные thread'ы (открывал) или отложенные (⏸ Отложить). Также сюда попадают 📋 задачи и 🚨 алерты от cron-scanners.
Что делать: ответить когда время будет, или ⏸ Отложить ещё. Через 7 дней без активности — система напомнит алертом (chip «⏰ N дней»).
✓ ГОТОВО — обработанные
Что попадает: закрытые («✓ Закрыть» / «✓ Выполнено» / «✓ Скрыть алерт») за последние 14 дней.
Что делать: поиск и проверка завершённых переписок.
🚫 СПАМ — фильтр
Что попадает: AI-классификатор отметил как спам/шум. ИЛИ вручную через 🚫 кнопку.
📦 ВСЕ — для поиска
Все thread'ы — корзина для поиска и проверки прошлых переписок.

Hover на любой кнопке для подсказки. Каждое действие имеет undo через всплывашку (5 сек).

Кнопка Когда Что происходит
↩ Ответить когда нужно ответить клиенту inline form под row; ⌘+Enter отправляет; auto-close. Реально шлёт SMTP / TG / WA в том же канале.
📝 Внутренние комментарии сообщение коллегам, клиент не видит Передача ценности команде без лишних ушей. Поддержка @-mentions — упомянутый коллега получит уведомление.
⏸ Отложить когда нужно потом parking lot в «В работе» basket. Заберёшь сам когда время будет.
✓ Закрыть вопрос решён thread → status=archived → Готово basket. Если клиент напишет — auto-вернётся в Входящие.
📋 Передать задачу нужен закупщик / бухгалтер / спец Создаёт задачу другой роли (procurement / accountant / customer_success / tech_network_lead / ai_lead / catalog_curator). Thread остаётся открытым с обратной ссылкой. AI auto-detect — Phase 2.
🚫 Спам явный спам/реклама status=spam → Спам корзина. AI-обучение на спам-паттернах — Phase 2.
🗑 Удалить чужая переписка / тест Скрывает thread из всех корзин. 152-ФЗ совместимо. Можно отменить через ↺.
🔔 Подписаться хочешь следить issue_observers — получаешь push при новых inbound. Auto-subscribe при reply / mark-read / @mention. Повторный click — отписаться.
💡 Для todo/alert кнопки чуть другие:
• Todo: ✓ Выполнено (вместо ✓ Закрыть)
• Alert: ✓ Скрыть алерт (появится снова через 24ч если ситуация не изменится)

9 ролей в системе. AI routing назначает thread конкретной роли.

🔓 Рабочие переписки — общие
Email, заявки клиентов и общие чат-боты (@boryabrobot и т.п.) видят все координаторы — общая очередь, любой может подхватить (модель «консолидированный координатор»). Счётчики и список одинаковы для всех.
🔒 Личные TG / WhatsApp — только твои
Переписки из твоей личной TG/WA-сессии видишь только ты. Другие сотрудники их не видят — ни содержимое, ни счётчики, даже в спаме. Подключить можно только с рабочего номера.
Роль Кто Что ассайнят
🎯 Координатор диспетчер заявок Заявки клиентов, диспетчеризация техников, ответы клиентам. Видит цены работ и материалы.
🤝 CSM менеджер по клиентам Customer success: онбординг, удержание, NPS, account-level вопросы.
🔧 Tech Lead руководитель сети техников Верификация новых техников, продвижение по тирам, контроль рейтингов.
🤖 AI Lead отвечает за AI-pipeline Качество промтов и моделей, скорость, метрики deploy/lead time.
📚 Catalog куратор каталога работ Точность совпадений каталог→заявка, добавление новых работ, флаги «без покрытия».
🛒 Закупщик procurement Закупка материалов, заказы у поставщиков, ввод цен закупа. Получает задачи через «📋 Передать задачу».
💰 Бухгалтер accountant Счета, выплаты, документы, налоги. Получает задачи через «📋 Передать задачу».
👷 Технік исполнитель работ Через @boryabrobot: дочитки, выезды, фото отчёты. Свой payout видит только сам — никто кроме него.
👑 Owner основатель Технический супер-пользователь — для аудита и разбора инцидентов.
⚠ Mention-фильтр в Команде: можно фильтровать по роли (CSM 0, Tech Lead 0…) чтобы видеть только assigned.
💡 Что если выбранная роль не в сети?
Задача никогда не блокируется. У каждой роли свой маршрут fallback по компетенции:
🛒 Закупщик → 🎯 Координатор → 👑 Owner
💰 Бухгалтер → 👑 Owner (SKIP coord — нужны ЭЦП + бух-права)
🔧 Tech Lead → 🎯 Координатор → 👑 Owner
🤖 AI Lead → 👑 Owner (SKIP coord — нужны тех-права)
📚 Catalog → 🎯 Координатор → 👑 Owner
🤝 CSM → 🎯 Координатор → 👑 Owner
🎯 Координатор → 👑 Owner
Принцип: fallback идёт только к роли с реальной competence, иначе сразу Owner. Если задача мелкая (купить лампочку, выписать счёт небольшой) — можешь выполнить сам, не передавая.
После передачи: задача у одного владельца. Передатчик становится наблюдателем — получит уведомление когда выполнено (Linear pattern).
💡 Esc или click outside чтобы закрыть. Эта подсказка доступна всегда через ❓ в header.
↪ Переслать в…
Ничего не найдено
Поиск контактов…
⚠ Клик по контакту = переслать ему. Сообщение уйдёт выбранному адресату (как в TG).
Удалить переписку целиком?
…удаляю
🗑
Удалить сообщение?
«»
…удаляю
✏️
Редактировать сообщение
…сохраняю
Что произошло
Дежурство координатора — эстафета. Выбери активного координатора для передачи. Если оставишь пустым — система авто-выберет активного координатора на смене, если он есть.
Ты не дежурный координатор. Будет закрыта только твоя смена; дежурство не изменится.
💡 Передача появится в Daily Brief у следующего coord утром.
💬 Закрыть без сообщения коллегам?
Этот thread связан с заявкой и здесь было больше одного сообщения. Если произошло что-то важное (договорились о выезде / клиент попросил перенести / техник отказался) — запиши коллегам перед закрытием. Иначе в audit будет пусто.
💡 Можно нажать «Закрыть без сообщения» — но в твоей статистике появится «закрыто без записи». Топ-FSM делают заметку после каждого касания (ServiceTitan / Salesforce FSL pattern).
📋 Передать задачу
Создаст задачу в очереди выбранной роли. Thread остаётся в Inbox — задача с обратной ссылкой на эту переписку. AI auto-detect (Phase 2) сделает это сам когда уверен.
💡 Когда передаёшь задачу — она у получателя (один владелец). Ты становишься наблюдателем и получишь уведомление когда задача выполнена. Если задача мелкая — можешь сделать сам, не передавая.

👤

🔍 Esc
Быстрая навигация
🗓️ Сегодня · 📋 Заявки · 💰 Финансы · 📚 Справочники · ⚙️ Система
Примеры
#8212 → открыть заявку
маржа → Справочники → Маржа
аномалии → Система → Аномалии
Ничего не найдено. Попробуй: номер заявки, «маржа», «kill», «каталог»…
↑↓ навигация выбрать Esc закрыть