← все проекты

Бэкофис ИИ-компании

Службы бэкофиса на cfru: ресёрчер (подборка GitHub в Лию), контент-машина, авито-аналитик, сторожа бюджета и ошибок. Гермес остановлен.

repo: cfru:/opt/projects/backofficeserver: cfru, кроны rootdocs: docs/ + specs/WAL.mdпамять: backoffice-ai-company, backoffice-runtime, openrouter-key-theft-2026-09-23
В РАБОТЕS1 · Ресёрчер: подборка GitHub в Лию5/6

Цель: Раз в неделю приходит подборка open-source по-русски: что это и где пригодится в задачах владельца. Сбой никогда не молчит.

↑ Найти, почему подборка перестала приходить
✓ С 01.09 восемь прогонов подряд (крон 0 9 */4) падали на 401: общий ключ OpenRouter в deploy/hermes-ceo.env мёртв с 31.08, в ротацию не попал. Сбой никому не сообщался. Последняя подборка пришла 29.08.
feature
↑ Сбой больше не молчит: любая ошибка приходит в Лию
✓ run.py ловит все сбои в latest.json, крон «run.py; notify.py» вместо «&&», notify.py тревожит при старом результате. Локальная симуляция 5/5 зелёная (без ключа, повтор, 401, успех, прогон не состоялся).
feature
↑ Подборка под задачи владельца, по-русски, без английского списка
✓ Промпт про контент-завод, рекламу, Claude Code и Лию, Рубку, серверы (было про Гермеса). Формат: что это / где пригодится / усилие. Без разбора моделью список не шлётся (владелец 03.10: «это не то»), кандидаты ждут разбора. 165 уже присланных репозиториев в seen.json. Документ docs/RESEARCHER.md.
feature
Раз в неделю, суббота 10:00 Екб, без двойных подборок
✓ Крон 0 5 * * 6. Прогон пропускается, если подборка ушла меньше 72 ч назад (--force для повтора), --dry для сухого прогона. Проверено на сервере: повтор 03.10 ответил skip.
feature
↑ Ключ OpenRouter для ресёрчера с лимитом $1/мес
Записать в cfru:/opt/projects/backoffice/services/researcher/.or_key (chmod 600). Потом: cd /opt/projects/backoffice/services/researcher && python3 run.py --force; python3 notify.py
✓ Ключ владельца (лимит $1, сброс еженедельно) в services/researcher/.or_key, chmod 600, проверен GET /api/v1/key. 03.10 01:23 UTC ушла подборка с разбором: 8 проектов, что это / где пригодится / усилие, стоимость $0.005. Промпт поправлен на «ты».
⛔ Ждёт владельца: выпустить ключ на openrouter.ai с лимитом $1 в месяц. Без него подборка приходит строкой «не вышла, нет ключа».
feature
Контент-машина бэкофиса молча падает на мёртвом ключе с 31.08
content-machine-cron.log: 66 отказов «User not found 401» на 02.10. Кроны стоят, статьи не пишутся. bo-lib.mjs берёт ключ из deploy/hermes-ceo.env.
⛔ Решение владельца 03.10: сначала он сам замерит результаты контент-машины, потом решаем вместе (оживлять со своим ключом или снимать кроны). До тех пор не трогать.
feature
В РАБОТЕS2 · Проверки по сроку0/1

Цель: Отложенные проверки «сработало ли».

Суббота 10.10: пришла ли подборка GitHub с разбором на русском
⏱ 10.10 · просрочено 20 дн.
КОМАНДА ПРОВЕРКИ: ssh cfru "tail -5 /opt/projects/backoffice/services/researcher/run.log; python3 -c \"import json;d=json.load(open('/opt/projects/backoffice/data/researcher/latest.json'));print({k:d.get(k) for k in ('generated_at','sent_at','count','mode','error')})\"". Норма: generated_at 2026-10-10, mode llm, sent_at заполнен, в Лии подборка «Находки на GitHub». mode pending = ключа всё ещё нет. Пусто = крон не отработал, смотреть crontab -l | grep researcher.
check

Ворклог (места остановки)

03.10.2026, 01:28:23 · S1 · claude

Владелец дал ключ OpenRouter с лимитом $1. Записан в .or_key, проверен, подборка с разбором на русском ушла в Лию 03.10 ($0.005). Промпт на «ты». Аккаунт Claude на cfru проверен: logonchek@gmail.com, файлы входа не менялись с 02.08 (до взлома), но root у взломщика был, токен мог быть прочитан.

→ Проверка по сроку 10.10 (суббота). Контент-машина: ждём замер владельца. Владельцу: выйти из всех сеансов Claude и перелогинить cfru.

03.10.2026, 00:58:07 · S1 · claude

Подборка GitHub от Лии молчала с 01.09: восемь прогонов упали на 401 мёртвого общего ключа hermes-ceo.env, сбой никому не сообщался. Ресёрчер переписан: свой ключ из .or_key, промпт под задачи владельца, любой сбой в Лию, без разбора список не шлётся, раз в неделю (суббота 10:00 Екб), защита от повтора. 03.10 ушёл один неудачный пробный список на английском, отбор исправлен. Проверено симуляцией 5/5 и проверкой защиты на сервере.

→ Владелец даёт ключ OpenRouter с лимитом $1/мес → .or_key → run.py --force; notify.py. Проверка по сроку 10.10. Отдельно решение по контент-машине (мёртвый ключ с 31.08).