На главную

Рабочий день 04.09: блог, sales и новые витрины

За день разобрали ложную тревогу блога, сверили SalesMachine, спланировали новый PWA-отчёт и починили несколько интерфейсов.

Фокус дня

Куда ушло внимание за день — по объёму переписки в AgentChat, 243 сообщений всего.

  • Другое — 19%
    • [redacted] Codex — 18%
    • [redacted] Grok — 1%
  • SalesMachine — 17%
  • AgentChat — 16%
  • Mentor — 8%
  • PULSE — 8%
  • SmartMoney — 8%
  • Direct — 7%
  • Блог — 6%
  • Sentinel — 5%
  • Music — 2%
  • Next — 2%
  • Winda — 2%

Другое

Мы начали день с проверки, почему пост за 2026-09-03 у блога был помечен как «надо чинить», хотя сам блог при этом живой. Разобрались, что это была ложная тревога health-проверки: за календарный день по Москве у блога было 0 токенов, старый blog-generator.timer уже выключен, а реальная генерация идёт через blog-workday-journal и попадает уже в следующую дату по МСК.

Отдельно сверили, что сайт отвечает HTTP 200, а в очереди лежит пост за 3-е число, который публикователь возьмёт в следующий запуск. Заодно появился понятный контекст для следующего шага: health нужно перевести с проверки старого генератора на актуальный blog-workday-journal, чтобы больше не ловить ложное «сломано».

Рекомендация на завтра: поправить health-проверку блога так, чтобы она смотрела на живой blog-workday-journal, а не на устаревший blog-generator.

SalesMachine

SalesMachine — это наш кабинет по холодным продажам и воронке: письма, ответы, интересы и статусы по лидам. Сегодня мы не меняли продажи ради цифр, а сначала сверили, что именно показывает Daily и откуда там взялась неверная картина по письмам.

Проверка на московских данных показала, что запись «16 писем / не отправлено» в Daily была ложной: реальная дневная рассылка в 13:00 ушла, dry_run=false, а фактически было 169 sent и 3 error. Параллельно сверили, что часть ответов в Daily совпала (interested: 45), но остальные поля расходятся с базой, а формулировка про «1 подтверждённую встречу» тоже не совпадает с реальным состоянием календаря.

Из полезного для следующего шага ещё осталась идея отдельного раздела «Интересы» с живым счётчиком интересов за сегодня и открытием конкретного письма по push. Это уже похоже не на правку одного экрана, а на нормальную продуктовую дорогу для более честного отображения того, что происходит в воронке.

Рекомендация на завтра: сначала привести Daily и счётчики к фактическим данным Москвы, потом уже собирать отдельную ленту «Интересы» и переход из push в нужное письмо.

AgentChat

AgentChat — это наш рабочий слой общения с ИИ и сервисами: через него мы держим бота, голоса, сессии и связанные серверные процессы. Сегодня тут было сразу несколько прикладных вещей: починили зависшие процессы Grok, перезапустили grok-telegram-bot, и стало понятно, почему одна из сессий молчала несколько дней — дочерние CLI-процессы залипли на одном локе и не выпускали ответы.

Ещё один важный кусок — голосовой ввод. Мы добили распознавание длинных голосовых: теперь запись режется на куски примерно по 150 секунд, каждый кусок сжимается под лимит Timeweb, а потом текст склеивается обратно. Проверка прошла на реальных данных: короткая запись распозналась сразу, а длинная 7.3-минутная запись тоже успешно прошла целиком.

Параллельно разобрали отдельный рабочий контур с сессией Sales machine: там сам автопрогон реально выполнился, но ответ в чате физически не вернулся, а некая часть логики ещё не переведена на постоянный таймер. То есть AgentChat за день был не про «просто чаты», а про надёжность доставки, зависания и нормальную работу серверных помощников.

Рекомендация на завтра: поставить защиту от зависших CLI-процессов на стороне сервиса, чтобы такие залипания не копились снова.

Mentor

Mentor — это кабинет для ведения Instagram-воронок и контента, где уже есть рабочая связка с черновиками и публикацией. Сегодня мы наметили туда новую вкладку «Блог»: не просто список, а полноценный редактор карусели с карточками, подписью, временем публикации по Москве и проверкой статуса после ухода в Zernio.

По сути, мы описали, как из черновиков SkillForge/jobs/* в Mentor должен собираться пост, который можно вручную поправить и запланировать на конкретное время. Это продолжение уже существующей логики: статья появляется в блоге, а затем из неё же собирается Instagram-пост для @olehovmentor.

Плюс отдельно подтвердилось, что логика с вкладкой «Блог» в Mentor — это правильное место для утверждения, а не публичный блог и не Courier. То есть продукт по смыслу уже стоит на своём месте, и задача тут не в смене направления, а в том, чтобы довести редактор до удобной рабочей формы.

Рекомендация на завтра: собирать вкладку «Блог» в Mentor как полноценный экран утверждения и планирования, не распыляясь на лишние места.

PULSE

PULSE — это наш личный продукт для чек-инов, таймеров и повседневных ритуалов, а ещё там мы держим часть интерфейсных паттернов, которые потом переиспользуются в других приложениях. Сегодня здесь подправили поведение баннера «Время таймера завершено»: он теперь появляется сразу под активной карточкой таймера, а не проваливается в самый низ списка.

Помимо этого, отдельно обдумали музыкальную механику внутри PULSE: для таймера «Душ» наметили сердечко в верхней панели и сценарий подгрузки первого избранного трека, а затем проверили эталон на данных пользователя. Это уже не абстрактный дизайн-спор, а вполне прикладной интерфейсный паттерн, который должен работать одинаково на мобильном и десктопе.

В целом PULSE за день двигался как аккуратный интерфейсный продукт: меньше визуального шума, правильнее привязка уведомлений к активному состоянию и подготовка к более умному поведению верхней панели. Такие правки обычно не выглядят громко, но именно они делают продукт ощутимо живее.

Рекомендация на завтра: добить сценарий сердечка и автозапуска в тех местах PULSE, где это уже логично поддерживается UI.

SmartMoney

SmartMoney — это кабинет по деньгам и поступлениям, где мы следим за уведомлениями о новых платежах и общим доступом к оплатам. Сегодня здесь нашли конкретную дыру: push по поступлениям уже работает с 2 сентября, но в самом приложении не хватает колокольчика и нормального открытия Money по тапу.

Мы зафиксировали, что бэкенд уведомлений уже умеет слать пуш о новом поступлении ЮKassa для нескольких продуктов и обычных заказов, а тумблер для этого лежит в Courier и включён по умолчанию. То есть серверная часть уже живёт, а не хватает именно пользовательской витрины: значка в шапке, подписки на money.olehov.com и правильной ссылки в пуше.

План после подтверждения тоже уже понятен: добавить колокольчик, подключить push-эндпоинты и SW на домене Money и направлять пользователя сразу в приложение, а не на общий сайт. Это хороший пример продукта, который уже делает свою работу, но ещё не до конца доведён до удобного входа.

Рекомендация на завтра: доделать шапку Money и замкнуть пуши на сам PWA-домашний экран, а не на внешний URL.

Direct

Direct — это наш доступ к Яндекс.Директу и связанной аналитике через API, без ручного браузерного управления. Сегодня мы подтвердили, что доступ к API живой: аккаунт olehovads отвечает, старый блокер уже не актуален, а кампании и статистика читаются нормально.

Проверка показала две кампании: одна завершена, другая активна, по ней видны показы, клики, расход и CTR. Дополнительно подтвердилось, что автоматический паблишер дашборда на Amsterdam работает каждые 15 минут, а дневной отчёт в Telegram уходит по расписанию.

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

Рекомендация на завтра: использовать живой API для точечных правок только там, где это реально нужно, не трогая лишнее.

Блог

Блог — это наш публичный журнал на olehov.com/blog, из которого потом собираются другие рабочие артефакты для продуктовой воронки. Сегодня мы ещё раз сверили, что текущая статья за 2026-09-03 не является поломанной: проблема была в старой health-проверке, а не в самом блоге. Если нужно посмотреть, как это связано с витриной контента, у нас уже есть страница блога.

Отдельно зафиксировали, что по факту публикация уже идёт через актуальный рабочий контур, а не через выключенный старый таймер. За счёт этого становится понятнее, почему статья с датой 03.09 могла попасть в следующую календарную корзину по Москве.

И ещё здесь у нас уже есть готовая связка с автопаблишем: в конце дня появился commit с автопубликацией поста rabochiy-den-03-09-pulse-prodazhi-i-vitriny. Это означает, что блог не только живёт, но и используется как основа для ежедневного контента и дальнейших продуктовых витрин.

Рекомендация на завтра: не чинить сам блог, а чинить только проверку состояния вокруг него, чтобы она смотрела на актуальный контур публикации.

Sentinel

Sentinel — это сторожевой слой оповещений, который следит за тем, чтобы наши сервисы и контентные линии не замолкали. Сегодня здесь нашли настоящую причину одной из проблем с алертами: у аккаунта не было активной push-подписки на chat.olehov.com, а общая функция отправки уведомлений трактовала отсутствие получателей как сбой.

Из-за этого монитор мог уходить в retry-шторм и не сохранять состояние, даже когда реальной ошибки доставки не было. Мы сравнили поведение с соседним рабочим скриптом и увидели, что правильный паттерн — считать отсутствие подписчиков не падением, а отдельным исходом и при необходимости пользоваться Telegram-фолбэком.

Это хороший пример того, как сторожевой продукт постепенно становится умнее: не просто «оралка», а система, которая умеет различать отсутствие аудитории и реальную поломку. На таких местах обычно и вылезают самые дорогие ложные тревоги.

Рекомендация на завтра: развести в коде «нет получателей» и «реально не отправилось», чтобы Sentinel не создавал лишних ретраев.

Music

Music — это наш музыкальный плеер и личная витрина избранного. Сегодня мы сделали там удобный вход в любимые треки: сердечко в шапке теперь открывает «Избранное» и сразу запускает первый трек, причём это проверено вживую.

Дальше довели поведение на iOS: стало понятно, что после перехода на новую страницу жест уже не считается, поэтому автозапуск надо выполнять в том же тапе и не убивать аудио лишней навигацией. После правки это тоже проверили внешним readback — трек реально стартует, и плеер не замирает на пустом переходе.

То есть Music за день стал не просто красивее, а заметно практичнее: теперь избранное — это не тупик, а живой сценарий с мгновенным воспроизведением. Это как раз тот тип правки, который пользователю сразу понятен без объяснений.

Рекомендация на завтра: проверить тот же сценарий на телефоне с полностью закрытым PWA, чтобы убедиться, что сердечко и автоплей не теряются после холодного старта.

Next

NEXT — это наш витринный плеер/продукт с акцентом на простое и чистое mobile-UI-поведение. Сегодня здесь убрали белую полосу сверху на экране /play: она оказалась следствием того, что статус-бар iOS был прозрачным, а фон страницы в светлой теме оставался белым.

Мы закрепили тёмный фон html/body, тёмный theme-color и тёмный color-scheme, а затем отдельно подогнали верхнюю полосу под цвет, который совпадает с фоном вокруг логотипа NEXT. Проверка показала, что белой щели больше нет, а верх выглядит цельно.

Это не большая функциональная новость, но очень заметная визуальная доводка: на мобильных такие мелочи сильнее всего влияют на ощущение «собрано/не собрано». Сегодня Next стал именно собраннее.

Рекомендация на завтра: сохранить это правило как шаблон для других экранов с iOS-статусбаром.

Winda

Winda — это наш рабочий контур для удалённого доступа к Windows-машине и её звуку. Сегодня мы не делали ничего «красивого», а просто разбирали, почему на Windows пропал вывод звука и почему микшер писал, что устройства вывода нет.

Сначала выяснили, что один путь доступа был мёртв, а затем нашли рабочий путь подключения через :2222. После этого диагностировали аудио: USB-выход был виден не в том состоянии, потом устройства переподнялись, был рассинхрон между сессией SSH и рабочим столом, и в итоге стало понятно, где именно терялся звук.

К концу проверки устройство уже стало ACTIVE, звук проигрался, а в настройках снова появились «Динамики (USB Audio Device)». То есть Winda за день была про очень приземлённую, но важную вещь: сделать так, чтобы рабочая машина снова нормально звучала и была управляема.

Рекомендация на завтра: если звук снова пропадёт, сразу проверять сессию и default endpoint, а не идти длинным кругом через лишние перезапуски.

CTA

Если нам нужен такой же рабочий разбор и для других продуктовых контуров, можно посмотреть список сервисов и выбрать, куда двигаться дальше.

Итог дня

День вышел очень прикладным: мы одновременно разгребали инфраструктурные ложные тревоги, сверяли реальные данные продаж и докручивали несколько пользовательских входов в продукты. Большая часть работы была не про новые фичи «на показ», а про то, чтобы уже существующие контуры — блог, sales, push, голос, музыка и мобильные шапки — работали честно и предсказуемо.

Если коротко, сегодня мы больше наводили порядок в живых системах, чем строили что-то с нуля. И это хороший день: после таких правок завтра обычно становится заметно меньше шума и заметно больше реальной управляемости.