MAX API URL updated to platform-api2.max.ru (mandatory before 2026-07-19).
Added Russian Trusted Root + Sub CA 2024 bundle as repo file — to be loaded
via NODE_EXTRA_CA_CERTS=/app/russian_trusted_bundle.pem (set in Coolify env).
До: wall.post без attachments → картинка игнорировалась
После:
1. photos.getWallUploadServer → upload_url
2. POST upload_url с файлом (local path или download) → server/photo/hash
3. photos.saveWallPhoto → owner_id + photo_id
4. wall.post с attachments=photo{owner_id}_{id}
При ошибке загрузки фото — публикуем без картинки (graceful degradation)
Поддерживает как локальные /uploads/ файлы так и внешние URL
scheduled_posts.cover_regen_attempts: счётчик попыток регенерации.
Если обложка SVG и рег. не удалась:
- попытки < 3: откладываем scheduled_at на +15 мин, не публикуем
- попытки >= 3: публикуем с Zero fallback (не держим пост вечно)
Максимальная задержка = 45 минут после плановой публикации.
scheduledPostsRunner.js: перед отправкой обложки в TG проверяем
размер файла. Если < 30KB (SVG-заглушка) — пробуем перегенерировать
через covers.generateCover(). Если регенерация успешна — публикуем
реальную обложку. Если нет — fallback на позу Зеро вместо SVG.
- Персонаж Зеро: 23 позы (zeroCharacter.js), скрипты генерации
- Auto-publish статей в TG: multipart upload, кнопки, режим alternating Zero/cover
- Fallback цепочка обложек: aiprimetech gpt-5.5 → Pollinations → local SVG (6 палитр)
- Auto-series: Claude haiku определяет серию для каждой статьи автоматически
- Channel stats: подписчики, история, delta 24h/7d
- Photo-search: Yandex API, профили доменов, Redis лимиты
- Scheduled posts runner: backfill, preview, queue, cancel
- promptBuilder: author_persona Зеро, голос от первого лица
- Fixes: dollar-placeholder bugs в PATCH channels/autogen, listArticles фильтры
- AI model: gpt-5.5 для image generation