Главная
АИ #19 (305)
Статьи журнала АИ #19 (305)
Модульная архитектура программного комплекса автоматизированного мониторинга нов...

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

Цитирование

Гулинкин М. Н. Модульная архитектура программного комплекса автоматизированного мониторинга новостей целлюлозно-бумажной промышленности // Актуальные исследования. 2026. №19 (305). URL: https://apni.ru/article/15045-modulnaya-arhitektura-programmnogo-kompleksa-avtomatizirovannogo-monitoringa-novostej-cellyulozno-bumazhnoj-promyshlennosti

Аннотация статьи

В статье описаны архитектурные и технические решения, принятые при разработке программного комплекса автоматизированного мониторинга отраслевых новостей для целлюлозно-бумажной и упаковочной промышленности. Рассмотрена четырёхмодульная структура системы, принципы межмодульного взаимодействия через единое JSON-хранилище, выбор технологического стека на базе Python и интеграция больших языковых моделей для автоматического резюмирования публикаций.

Текст статьи

Отраслевые аналитики и редакционные подразделения специализированных изданий ежедневно обрабатывают значительные объёмы новостной информации из десятков источников на русском и английском языках. Ручной мониторинг подобного потока занимает до трёх часов рабочего времени в день и не гарантирует полноты охвата. Задача автоматизации этого процесса ставит перед разработчиком специфический вызов: необходимо объединить принципиально разнородные компоненты – сетевые модули загрузки данных, средства обработки текстов, внешние API языковых моделей и инструменты веб-визуализации – в единую работоспособную систему [1, с. 47].

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

Разработанный комплекс построен по принципу разделения ответственности (Separation of Concerns): каждому функциональному блоку соответствует отдельный программный модуль с собственным интерфейсом командной строки. Точкой интеграции между модулями служит единое JSON-хранилище (news_store.json), структура каждой записи которого включает поля: id, source, title, url, published, published_raw, summary, original_summary, summary_provider, summary_model. Такой подход устраняет необходимость в брокерах сообщений и упрощает отладку – содержимое хранилища читаемо в любом текстовом редакторе. Атомарная запись через временный файл с последующим переименованием исключает повреждение данных при внезапном прерывании работы.

Модуль сбора данных (main.py)

Модуль обеспечивает загрузку публикаций из 19 источников двух типов. Для RSS-лент применяется модуль xml.etree.ElementTree из стандартной библиотеки Python. Для сайтов без RSS реализован HTML-парсер на регулярных выражениях (модуль re). Аннотации проходят очистку от HTML-тегов через функцию strip_html. Тематическая фильтрация выполняется по словарю из более чем 40 ключевых терминов ЦБП на русском и английском языках; дедупликация – по полю id, формируемому как конкатенация имени источника и URL публикации [2, с. 215].

Модуль AI-резюмирования (summarize.py)

Ключевым архитектурным решением модуля является паттерн «стратегия»: конкретный провайдер языковой модели выбирается через аргумент командной строки --provider, а все провайдеры реализуют единый интерфейс с идентичной сигнатурой. Это позволяет добавлять новых провайдеров без изменения логики основного цикла обработки. Поддерживаются четыре провайдера: GigaChat (ПАО «Сбербанк»), Groq (модель llama-3.3-70b-versatile), Google Gemini (gemini-1.5-flash) и Ollama – локальный запуск языковых моделей без доступа к интернету и без API-ключей. Все HTTP-запросы реализованы через стандартный модуль urllib.request без сторонних зависимостей.

Системный промпт, передаваемый каждому провайдеру, явно задаёт роль модели («аналитический ассистент по новостям ЦБП») и формат ответа – 2-3 предложения на русском языке с акцентом на ключевое событие, участников и значение для отрасли. Оригинальный текст из RSS-ленты сохраняется в поле original_summary до перезаписи AI-резюме, что позволяет восстановить исходные данные. При превышении лимитов API реализован механизм повторных попыток с нарастающей задержкой (60, 120, 180 секунд). Конфигурация ключей API загружается из файла .env при старте модуля – без необходимости ввода в командной строке [3].

Аналитический модуль и модуль визуализации

Модуль analyze_words.py выполняет частотный анализ слов в накопленном корпусе публикаций. Токенизация реализована на регулярных выражениях, фильтрация стоп-слов – на основе словаря из 80 единиц, адаптированного к лексике ЦБП. Интерактивный веб-интерфейс разработан с применением фреймворка Streamlit и организован в пять аналитических вкладок: просмотр новостей, общая аналитика, частотный анализ, географическая классификация по странам БРИКС и отраслевая сегментация по 11 направлениям ЦБП [4, с. 112].

Итоговый список зависимостей проекта состоит из трёх пакетов: pandas, streamlit, openpyxl. Остальные функции реализованы через стандартную библиотеку Python 3.12. Для управления всеми модулями реализован интерактивный лаунчер run.py с текстовым меню, исключающий необходимость запоминать аргументы командной строки.

Заключение

Принятые архитектурные решения обеспечили выполнение ключевого требования: система разворачивается на рабочей станции без дополнительной серверной инфраструктуры. Минимизация внешних зависимостей до трёх пакетов снизила риски совместимости и упростила воспроизведение среды. Паттерн «стратегия» в модуле резюмирования подтвердил свою эффективность – интеграция четырёх различных LLM-провайдеров потребовала добавления одной функции на каждого провайдера без изменения остального кода [5].

Практическое тестирование на выборке из более чем 250 публикаций из 19 источников подтвердило корректность принятых решений: все компоненты работают независимо и допускают раздельный запуск и тестирование. Единое JSON-хранилище как точка интеграции зарекомендовало себя как надёжное решение для данного масштаба задачи. Среднее время полного цикла – сбор, резюмирование 20 публикаций и запуск веб-интерфейса – составило около 8 минут, что соответствует требованиям оперативного отраслевого мониторинга. Дальнейшее развитие предполагает поддержку Telegram-каналов отраслевых изданий и реализацию планировщика автоматических запусков по расписанию.

Список литературы

  1. Goldberg Y. Neural Network Methods for Natural Language Processing. San Rafael: Morgan & Claypool Publishers, 2017. 309 p.
  2. Jurafsky D., Martin J. H. Speech and Language Processing [Электронный ресурс]. 3-е изд. Stanford, 2023. URL: https://web.stanford.edu/~jurafsky/slp3/ (дата обращения: 11.10.2025).
  3. GigaChat API. Документация [Электронный ресурс] // Сбер Девайсы. URL: https://developers.sber.ru/docs/ru/gigachat/api/overview (дата обращения: 20.03.2026).
  4. Lutz M. Learning Python. 5th ed. Sebastopol: O'Reilly Media, 2013. 1540 p.
  5. Streamlit Documentation [Электронный ресурс]. URL: https://docs.streamlit.io (дата обращения: 20.03.2026).

Поделиться

9
Обнаружили грубую ошибку (плагиат, фальсифицированные данные или иные нарушения научно-издательской этики)? Напишите письмо в редакцию журнала: info@apni.ru

Похожие статьи

Другие статьи из раздела «Информационные технологии»

Все статьи выпуска
Актуальные исследования

#19 (305)

Прием материалов

2 мая - 8 мая

осталось 3 дня

Размещение PDF-версии журнала

13 мая

Размещение электронной версии статьи

сразу после оплаты

Рассылка печатных экземпляров

27 мая