Разработка интеллектуального конвейера новостей
Разработка интеллектуального конвейера новостей (crmfeed)
Тип проекта: Автоматизированный AI-агрегатор контента Роль: Software Architect, Full-Stack Developer
Стек: PHP, Laravel, MySQL, Nginx, GigaChat API, OpenAI API (ChatGPT), Mistral, Gemini, Chrome Headless
Описание проекта
В условиях постоянного потока информации ручная обработка, рерайт и визуальное оформление новостей требуют колоссальных затрат времени. Проект crmfeed создавался как отказоустойчивый конвейер (pipeline) для полной автоматизации этого процесса.
Система самостоятельно собирает входящие новости, проводит их многоступенчатую обработку через нейросети и предоставляет редактору минималистичный, удобный дашборд для финальной модерации и публикации.
Архитектура и технические решения
В основе проекта лежит монолитная архитектура на базе фреймворка Laravel. Главным приоритетом при разработке была прагматичность: система должна работать автономно, корректно обрабатывать таймауты сторонних API и не требовать постоянного вмешательства разработчика.
Ключевые узлы системы:
-
Изолированные фоновые процессы: Обработка тяжелых задач вынесена в Artisan-команды, запускаемые по расписанию (Cron). Это исключает блокировку веб-интерфейса и позволяет гибко управлять нагрузкой на сервер.
-
Умный парсинг контента: Разработан кастомный скрейпер, способный обходить защиты (имитация браузера) и извлекать чистый текст с сайтов любой сложности, включая адаптивные алгоритмы для специфичных доменов (например, rbc.ru).
-
Интеграция GigaChat API: На первом этапе ИИ анализирует оригинальную новость. Написан кастомный сервис, который не просто делает рерайт, но и извлекает метаданные: определяет тональность (позитив/негатив), гео-привязку, проставляет теги и вычисляет «вес» (relevance score) новости для целевой аудитории.
-
Система конечных автоматов (State Machine): Жизненный цикл статьи строго контролируется набором статусов (
new->ai_processing->ai_rewrite->ai_image_processing->pending). Это защищает от дублирования запросов к API и позволяет легко отлавливать ошибки (ai_failed,ai_image_failed).
Пользовательский интерфейс и дашборд
Вместо перегруженных корпоративных интерфейсов была реализована минималистичная админ-панель. Она решает одну главную задачу — дать модератору возможность за секунды оценить готовую новость.
Реализована умная система фильтрации на лету: статьи можно отсортировать по ценности (весу), тональности или текущему статусу. Цветовое кодирование статусов и AI-метрик позволяет мгновенно считывать контекст массива данных.
R&D и альтернативная генерация изображений (PHP)
Помимо базового флоу генерации картинок через нейросети (YandexART / OpenAI), заказчику было предложено и реализовано более предсказуемое решение — динамическая сборка новостной инфографики на стороне сервера.
С помощью PHP и headless-режима Google Chrome система на лету компилирует HTML/CSS-шаблоны в готовые новостные карточки, накладывая сгенерированные ИИ короткие тезисы и иконки поверх тематических фонов. Это гарантирует 100% читаемость текста (в отличие от «галлюцинаций» шрифтов в нейросетях) и строгое соблюдение фирменного стиля проекта.
Кроме того, в рамках R&D (Research & Development) был проведен масштабный тест различных AI-моделей для задач компьютерного зрения (Vision) и генерации. Были написаны интеграции и консольные тесты для оценки качества анализа изображений и текста через:
-
Google Gemini 1.5 Flash (Vision API)
-
Mistral Vision
-
GigaChat API (генерация изображений)
-
OpenAI (GPT-4.1-mini)
Такой подход позволил выбрать наиболее оптимальные по соотношению цена/качество/скорость инструменты для финального продукта.
Преодоление технических вызовов
При интеграции нескольких тяжеловесных LLM-моделей в один процесс возникли проблемы с потреблением оперативной памяти (OOM) и стабильностью соединения с БД. Проблема была решена на уровне инфраструктуры сервера (настройка SWAP, оптимизация swappiness) и программно — за счет лимитирования выборок (chunking) и жесткого контроля времени выполнения скриптов. Дополнительно реализованы механизмы фоллбэка (fallback) при парсинге ответов от ИИ, если нейросеть возвращает невалидный JSON, а также резервный поиск картинок (Google/DuckDuckGo Image Search) на случай недоступности YandexART.
Результат
Создан стабильный, масштабируемый инструмент, который сократил время подготовки публикации с десятков минут до нескольких кликов. Проект демонстрирует умение строить отказоустойчивые backend-системы, писать сложные парсеры, проводить независимый R&D и интегрировать современные AI-инструменты в реальные бизнес-процессы.


