О проекте
Материал проходит извлечение, классификацию и подготовку черновика. Исходник и результаты этапов хранятся отдельно, чтобы можно было посмотреть, на каком шаге что-то сломалось, и повторить обработку.
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; секреты находятся вне репозитория.
Code-map: файлы и связи
Карта привязана к версии be01bfe3995f. В таблице — экран или API, связанный модуль и данные.
| Функция | Экран / API | Модуль | Данные / проверка |
|---|---|---|---|
| Сбор | Telegram MTProto | app/main.py; app/collector.py | TG session → telegram_posts; подключение ожидает данных |
| Рабочий интерфейс | /processed, /drafts, /pipeline | app/web/main.py; app/web/templates | 11 основных GET-разделов проверены |
| Классификация | Pipeline / модели | app/content/model_registry.py; pipeline_manager.py | model_versions; active joblib пока отсутствует |
| Редакционная обработка | Рерайт / промпты | app/content/pipeline_rewriter.py; prompt_versions.py | PublicationDraft / RewriteAttempt; внешние модели не проверены |
| Эксплуатация | /health; Docker Compose | Dockerfile.runtime; app/config.py; alembic | PostgreSQL, миграции, доступ по паролю |
Как работать с картой
- Перед изменением найти функцию и пройти связи до API, состояния и хранилища.
- Проверить входы, ошибки, повторные события и зависимые сценарии.
- После изменения обновить карту и затронутые схемы вместе с кодом.
- Выполнить связанные проверки и привязать новые материалы к версии исходников.
Сценарии и API
- Войти в рабочий интерфейс владельца и открыть Материалы, Черновики, Разметку, Модели и Конвейер.
- Открыть Прогресс рерайта, Промпты и Поиск: используются исходные страницы и обращения к PostgreSQL.
- После настройки Telegram: app.main login/login-qr → inspect-folder → ограниченный sync → проверка материалов.
- После регистрации модели и настройки 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 | Рабочая схема данных и миграции |
| Telethon | MTProto-коллектор; ожидает сессию |
| scikit-learn / LLM | Классификация и рерайт после настройки моделей |
Материалы и исходники
История кода: с 16 июня 2026. Подготовка демо: 7 сентября 2026.
Архив материалов на языке оригинала.