Files
zeropost-engine/HANDOFF_2026-06-24.md
T

5.3 KiB
Raw Blame History

HANDOFF — ZeroPost + PostCast сессия 2026-06-19..24

Состояние на момент завершения

Серверы

  • prod2 (80.93.52.241): ZeroPost + PostCast + Fermiq + CRM4Auto + Gitea
  • Диск prod2: 37GB used / 59GB (66%) — норма
  • newvps (80.93.60.231): AgroTO production

ZeroPost (zeropost.ru)

Git commits финальные

  • zeropost-engine: e1f2f44 (fix MAX platform API)
  • zeropost-web: 6f7c47a (hero + metadata + OG для всех категорий)

Что работает

  • Автогенерация: 8 категорий, ротация 4 из 8 каждый день (dayOfYear % 8)
  • Слоты публикации: 08:11/12:11/16:11/20:11 синхронны сайт ↔ ТГ
  • Заметки Зеро: генерация 13:00 → подтверждение → публикация след. день 13:00
  • tgSend.js — единый модуль отправки в TG (multipart для локальных файлов)
  • Volume uploads примонтирован в engine (23+ позы Зеро видны)
  • draftAutoApprove: только вчерашние черновики LIMIT 4, catch-up при старте
  • pg_advisory_lock в autogen — нет дублей статей
  • Защита от залпа: skip posts > 3ч, 1 пост за тик

8 категорий ZeroPost

slug name генерация
ai-tools ИИ-инструменты 17:00
cybersec Кибербезопасность 17:05
automation Автоматизация 17:10
ai-dev Разработка с ИИ 17:15
comparisons Сравнения 17:20
tutorials Туториалы 17:25
opinions Мнения 17:30
digest Дайджест 17:35

Банк тем ZeroPost

  • ai-tools: 23 свободных, ai-dev: 26, automation: 22, cybersec: 21
  • comparisons/tutorials/opinions/digest: ~15 каждый
  • Жанровые маркеры: [ТУТОРИАЛ][СРАВНЕНИЕ][МНЕНИЕ][ДАЙДЖЕСТ]

Настройки в app_settings (ZeroPost БД)

  • SITE_PUBLISH_SLOTS: 08:11,12:11,16:11,20:11
  • ZERO_SITE_URL_BASE: https://zeropost.ru/zero
  • ZERO_NOTES_APPROVE_HOUR: 9
  • ZERO_NOTES_GENERATE_HOUR: 13
  • ZERO_NOTES_PUBLISH_HOUR: 13

PostCast (postcast.ru)

Git commits финальные

  • postcast-engine: 4ec3239 — система категорий + банк тем + ротация
  • postcast-tool: cdd507f — AutogenTab UI

Что сделано в эту сессию

  • Новые таблицы в БД: channel_categories, category_topics, channel_autogen_settings, best_time_stats
  • posts: +source_topic, +source_category_id, +genre
  • Engine: новый autogenNew.js с ротацией + pg_advisory_lock
  • Engine routes: /api/channels/:id/categories + /api/channels/:id/autogen
  • Tool: AutogenTab.js — полноценная вкладка «Автогенерация»
  • Tool: /api/engine/channels/[channelId]/...path — catch-all proxy
  • PostCast tool: вкладка «Автогенерация» в ChannelView

PostCast архитектура

  • Engine: port 3035, uuid rkvh8gvwydl9y9cgy0vuhjuq, DB: postcast@10.0.1.24
  • Tool: port 3043, uuid c12chhkedih62hviw2uk4o93
  • ENGINE_URL в tool: http://host.docker.internal:3035

Что НЕ сделано (следующая сессия)

  1. Аналитика лучшего времени — таблица best_time_stats создана, нужен воркер + UI
  2. Inbox + AI-ответы — inbox_messages таблица есть, нужен webhook + classifier
  3. Мультиканальность — один пост → адаптация под TG/VK/MAX (transform endpoint)
  4. Онбординг — помощь новому пользователю настроить первый канал
  5. Scheduler PostCast — запуск autogen по расписанию (сейчас только ручной)

Инфраструктура

prod2 — важные константы

  • Coolify API token: 5|jWMs5bZf25KUKNEXWVOOCu5BBXO29OEmHeqTSqte3875ea84
  • ZeroPost engine uuid: gtqe11a2cc6klt1ew9078fdn
  • ZeroPost web uuid: y4iqlg41hpvl8tcs20wc720y
  • PostCast engine uuid: rkvh8gvwydl9y9cgy0vuhjuq
  • PostCast tool uuid: c12chhkedih62hviw2uk4o93
  • ENGINE_SECRET: zeropost_internal_2026
  • ADMIN_PASSWORD (ZeroPost web): ZeroPost2026!

Uploads volume

  • Хост: /var/www/zeropost-uploads (481 файл включая zero-*.webp)
  • ZeroPost engine: примонтирован в /var/www/zeropost-uploads
  • Coolify local_persistent_volumes id=14 (resource_type исправлен)

Fermiq backups (prod2)

  • /etc/cron.d/farm-backups: daily без фото (~23MB), weekly с фото (~1.5GB)
  • Retention: daily 3 дня, weekly 28 дней

Замеченные технические долги

  • PostCast tool Coolify deploy сломан (SSH key issue) — деплоить через git pull + npm run build + docker restart
  • whisper.cpp удалён с prod2 (был 2.1GB от AgroTO)
  • ZeroPost web коммит d5a0fb2 в Coolify — не та версия (использовать manual build если нужно)