[все дашборды](index.html) · категория: Инфраструктура и рутины · [← HANDOFF-booking-session](HANDOFF-booking-session.md) · [HANDOFF-s6-devlog-lane-natalia →](HANDOFF-s6-devlog-lane-natalia.md)

# HANDOFF — сборка и запуск «Автономного монитора звонков BB Platinum»

> **Инструкция твоему Claude на ХАБЕ (вставь это целиком и продолжай):**
> Ты собираешь/запускаешь 1-й модуль бота звонков — **монитор+follow-up** (брат
> уже готового бота-бронировщика). Машина-исполнитель = ХАБ `A-2022BAYAREA`
> (код и демон живут ТОЛЬКО там; `_imports` НЕ синкается на Mac). Канон задачи:
> `reglament-avtonomnyy-monitor-zvonkov-bb-platinum.md` (Руслана, 2026-06-23, active).
> Перед стройкой — RECALL: подними `booking_daemon.py` и переиспользуй его инфру,
> НЕ плоди дубль.

**Дата передачи:** 2026-06-25. **Автор HANDOFF:** Mac-сессия (отсюда код не виден).
**Статус монитора:** регламент готов + процесс отработан вручную; **автономного
демона ещё НЕТ** — строить с нуля на инфре брата.

---

## ЧТО УЖЕ ЕСТЬ (можно переиспользовать у брата `booking_daemon.py`)
- **Telethon-обвязка**: сессии `E:\Obsidian\_imports\dialogs\.env`
  (`T0X0AA_/TONYSSD_/…`) + `C:\mcp\telegram-mcp\.env`. Бот-аккаунт публикации =
  `T0X0AA` (env `CALLBOT_ACCOUNT`).
- **Аллоулист + approve-gate `+/−`** (числовые ID, идемпотентность) — логика
  один-в-один как в букинге, бери оттуда.
- **Google OAuth-обвязка** (`gcal_auth.py`, `gcal_busy.py`) и `config.py` с
  канон-значениями. Календарные токены → `call-bot\gcal_tokens\`.
- **Granola** уже установлена на Хабе (MCP/коннектор) — источник транскриптов.
- Зависимости стоят: telethon 1.44, google-api, requests, tzdata/zoneinfo.

## ЧТО ПИСАТЬ С НУЛЯ (`monitor_daemon.py`)
> ⚠️ ТРИГГЕР = **Google Calendar BB Platinum**, НЕ Granola (уточнение Антона,
> сессия 80fa104e, 2026-06-22). Granola нужна ТОЛЬКО ПОСЛЕ звонка — выгрузить
> транскрипт для текста follow-up. `Europe/Lisbon`, окно 06:00–24:00.

- **Шаг 0 — watcher календаря** BB Platinum (`**********department@gmail.com`),
  **раз в 5 мин, дёшево (0 токенов)**; LLM будится ТОЛЬКО когда засёк звонок.
  Ловим **только НАЧАЛО звонка — один раз** (не опрашиваем весь звонок).
  ✅ **РЕШЕНИЕ АНТОНА (2026-06-25): монитор читает ТОЛЬКО календарь BB Platinum;
  A2 (`dzyatkovskiy.a2`) для монитора НЕ читаем — это только для букинга-брата.**
- **Шаг 1 — звонок засечён (идёт ~5 мин) → АВТО, без approve:**
  - a) **Хендл лида по приоритету:** сначала **Telegram** → если нет, **Google
    Calendar bbplatinum** → если и там нет: **пуш команде** + пометка в событии
    календаря «follow-up не сделан, ‼️ нет хендла в ТГ». Язык по переписке; новый лид → англ.
  - b) Проверить **все 4 телеграма Антона** — есть ли уже группа с лидом
    (тип 🤝 = звонок, тип `<>` = интро).
  - c) Если у **старого** лида уже есть `<>`-группа → **ничего не создаю**,
    докладываю в «CALLS 889» «группа уже есть» → **жду решение Антона** (approve).
- **Шаг 2 — создание 🤝-группы (АВТО для НОВОГО лида с известным хендлом; иначе
  по approve):** участники = **4 хендла Антона** (`@*0*0AA` + `@***ySsd` +
  `@*****numvc1` + `@***yDzi`) **+ лид**; имя `<имя лида из поля name> 🤝 Palo Alto
  AI Research Lab` (🤝 = маркер call-группы, `<>` оставляем за `/intro`); инвайт-ссылку
  → в группу + лиду («Я создал нам группу, присоединяйся» + ссылка) + в «CALLS 889».
- **Шаг 3 — после звонка → follow-up, ТОЛЬКО по approve:** звонок завершён →
  выгрузить **Granola** (транскрипт) → черновик follow-up в «CALLS 889»
  (**обязательно вставить ссылку на 🤝-группу**) → ждёт `+/−` → по `+` рассылает
  финал **в группу + лиду + CALLS 889** от имени `T0X0AA`.

## APPROVE-МАШИНА (`+`/`−`, дополнение Руслана 2026-06-23)
Бот читает текстовые сообщения ПОСЛЕ своего черновика (не реакции):
- `+` → шлёт черновик как есть.
- `−` → ждёт правку; следующий текст = новый follow-up; `+` после него → шлёт
  исправленный текст. Несколько правок между `−` и `+` склеиваются. Каждый
  follow-up уходит **ровно один раз** (идемпотентность).

**Allowlist (по числовому ID):** Руслана `1078123160`, Наташа `227162473`,
Антон `432963868`/`1842936036`/`263625473`. Остальные `+/−` игнор.
⛔ `T0X0AA` (`6407925545`) — публикатор, в approve НЕ входит (не одобряет сам себя).

## ПУТИ И КОНТАКТЫ
- Код: `E:\Obsidian\_imports\call-bot\` — ТОЛЬКО на Хабе.
- Чат команды «CALLS 889 MAIN FA FAAAA follow up» = `-1001667807572`.
- Google OAuth (сейчас только Gmail-скоуп): `E:\!CLAUDE-PaloAltoPC-June26\gmail\`.

## ОТКРЫТО / БЛОКЕРЫ (нужен Антон)
1. **Google Calendar консент** (ядро Шага 0; сейчас токены без календарного
   скоупа): на Хабе `python gcal_auth.py bb` → клик Allow (a2 — только если решим
   читать его календарь на конфликты).
2. **Авто-сборка текста follow-up из транскрипта (v2)** — связка Granola +
   Fireflies. v1 может постить шаблонный follow-up; текст из транскрипта — слой выше.
3. **DRY_RUN снимаем только** после консента + явного «+» Антона.

## КОНТРАКТЫ ЗАПУСКА (по аналогии с братом)
- Selftest без живого звонка: `python monitor_daemon.py --selftest` (прогнать
  Шаги 0–4 на тестовом событии/транскрипте, ничего не отправляя).
- Live (после консента + «+»): `set CALLBOT_DRY_RUN=0` → `python monitor_daemon.py`.
- Демон 24/7 — только Хаб (ноут засыпает). Завести как постоянную задачу
  (Task Scheduler / pm2-аналог), как у остальных always-on роботов.

## ГРАНИЦЫ
- Правки кода и запуск демона — **только сидя за Хабом** (или удалёнкой в него).
  С Mac код не виден, Granola/Telegram-MCP не подключены.
- «Кинуть тест» можно с любого устройства через Telegram — реагирует демон на Хабе.

---

## ➤ ПРОДОЛЖАЙ ОТСЮДА
Порядок: (1) RECALL `booking_daemon.py` — вытащи Telethon/allowlist/approve/идемпотентность;
(2) напиши `monitor_daemon.py` (Шаги 0–3 + **календарь-watcher** BB Platinum раз/5мин + авто-создание 🤝-группы; Granola — только пост-звонок для текста follow-up);
(3) проведи Google Calendar консент `gcal_auth.py bb` (клик Антона);
(4) `--selftest` на тестовом событии; (5) запусти в DRY_RUN на живом календаре,
покажи лог Антону; (6) по явному «+» Антона сними DRY_RUN и заведи 24/7-задачу.
Спроси Антона/Руслану, с какого шага начать.

**Канон:** [[reglament-avtonomnyy-monitor-zvonkov-bb-platinum]] ·
**Брат:** [[HANDOFF-booking-session]]
