Техническая документация

re-publisher

Что где лежит в коде, как запускается и что проверялось.
Версия be01bfe3995f · подготовлено 7 сентября 2026

О проекте

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

FastAPI, PostgreSQL, Telegram-коллектор и пайплайн обработки публикаций. На сервере исходное приложение, без демо-обёртки. Для сбора нужны настройки Telegram и моделей. Пока они не подключены, материалов нет.

  • Telegram API ID/hash и авторизованная MTProto-сессия пока не предоставлены. Сбор реальных сообщений ещё не запущен.
  • Активная tfidf_logreg.joblib и параметры выбранного LLM отсутствуют. Нет оснований заявлять проверенное качество классификации или рерайта.
  • В интерфейсе сейчас пустая рабочая БД. Синтетический корпус из прежнего демо не подмешан в исходные таблицы.
  • Внешняя публикация не проверена: нужен выбранный канал и BOT_TOKEN или MAX-настройки. AUTO_PUBLISH остаётся false до настройки назначения.

Скриншоты, схемы и исходные материалы сохранены на языке оригинала; подписи и описание переведены.

Архитектура и схемы

  • Запущен app.web.main:app из исходного приложения, а не app.portfolio.
  • PostgreSQL с исходными миграциями; отдельные постоянные каталоги sessions, media, models, cache, artifacts и reports.
  • Collector и full-cycle pipeline описаны отдельными службами профиля connected. Они активируются после настройки Telegram-сессии, модели и выбранных интеграций.
  • Административный интерфейс закрыт HTTPS Basic Auth; секреты находятся вне репозитория.
Компоненты и границы интеграций
Компоненты и границы интеграций · Mermaid ↓
Рабочий pipeline после настройки
Рабочий pipeline после настройки · Mermaid ↓
Развёртывание
Развёртывание · Mermaid ↓

Code-map: файлы и связи

Карта привязана к версии be01bfe3995f. В таблице — экран или API, связанный модуль и данные.

ФункцияЭкран / APIМодульДанные / проверка
СборTelegram MTProtoapp/main.py; app/collector.pyTG session → telegram_posts; подключение ожидает данных
Рабочий интерфейс/processed, /drafts, /pipelineapp/web/main.py; app/web/templates11 основных GET-разделов проверены
КлассификацияPipeline / моделиapp/content/model_registry.py; pipeline_manager.pymodel_versions; active joblib пока отсутствует
Редакционная обработкаРерайт / промптыapp/content/pipeline_rewriter.py; prompt_versions.pyPublicationDraft / RewriteAttempt; внешние модели не проверены
Эксплуатация/health; Docker ComposeDockerfile.runtime; app/config.py; alembicPostgreSQL, миграции, доступ по паролю

Как работать с картой

  1. Перед изменением найти функцию и пройти связи до API, состояния и хранилища.
  2. Проверить входы, ошибки, повторные события и зависимые сценарии.
  3. После изменения обновить карту и затронутые схемы вместе с кодом.
  4. Выполнить связанные проверки и привязать новые материалы к версии исходников.

Сценарии и API

  1. Войти в рабочий интерфейс владельца и открыть Материалы, Черновики, Разметку, Модели и Конвейер.
  2. Открыть Прогресс рерайта, Промпты и Поиск: используются исходные страницы и обращения к PostgreSQL.
  3. После настройки Telegram: app.main login/login-qr → inspect-folder → ограниченный sync → проверка материалов.
  4. После регистрации модели и настройки LLM: обработка → классификация → черновик → проверка → одобренная публикация в выбранный канал.

Проверка опубликованной версии

CI: Полная сборка исходного приложения ↗ · be01bfe3 · версия этого демо · 2026-09-07

  • Исходный Docker-образ собран в GitHub CI. Применены миграции PostgreSQL.
  • Все 11 основных страниц навигации отвечают HTTP 200 после входа, ошибок JavaScript нет.
  • Гостевой запрос получает 401. /health подтверждает доступность web и БД.
  • Сбор Telegram, работа моделей и публикация не проверены из-за отсутствующих настроек; эти этапы не объявлены завершёнными.

Эти проверки относятся к указанной версии. Коммерческие показатели и качество моделей на независимой выборке здесь не измерялись.

Измерения

Память контейнеров: три снимка без внешней обработки
Память контейнеров: три снимка без внешней обработки · Исходные данные ↓
  • Пять последовательных HTTPS GET с VPS к самому себе: 81.5–228.6 ms, все HTTP 200. Это не нагрузочный тест и не оценка внешней сети.
  • В замерах не запускались Telegram-сбор, LLM или задача Codex.

Запуск и эксплуатация

Образ Dockerfile.runtime собирается вне VPS. Web запускается командой uvicorn app.web.main:app --host 0.0.0.0 --port 8080.

Настройки рабочего запуска: /srv/portfolio/publisher/.env; дополнительные интеграции: /srv/portfolio/publisher/integrations.env. Значения секретов не публикуются.

После настройки коллектора создать сессию через app.main login-qr или login. Не импортировать старые WTG-данные: WTG удалён и не является источником восстановления.

Модель регистрируется штатным app.content.model_registry register-initial-model из предоставленного владельцем пакета. Начальный sync ограничен 20 сообщениями на чат.

AUTO_PUBLISH не включать без настроенного канала назначения. При работе с настоящими данными сохранять закрытый доступ к административным экранам.

Стек

FastAPI / JinjaИсходный редакционный интерфейс
PostgreSQL / SQLAlchemy / AlembicРабочая схема данных и миграции
TelethonMTProto-коллектор; ожидает сессию
scikit-learn / LLMКлассификация и рерайт после настройки моделей

Материалы и исходники

История кода: с 16 июня 2026. Подготовка демо: 7 сентября 2026.

Архив материалов на языке оригинала.