Проект предназначен для сбора, хранения и обработки новостей с популярных русскоязычных источников и их аггрегации. Включает автоматическую категоризацию новостей с помощью LLM (GigaChat) и хранение в базе данных PostgreSQL.
HHack/
├── docker-compose.yaml
├── .env.template
├── .env
├── init_db/
│ └── init_news_db.sh
├── python_services/
│ ├── database_migrations/
│ │ ├── Dockerfile
│ │ ├── pyproject.toml
│ │ ├── poetry.lock
│ │ └── src/
│ │ ├── database_migrations/
│ │ │ └── main.py
│ │ └── db/
│ │ ├── migrations.py
│ │ └── create_initial_structure.sql
│ └── news_parser/
│ ├── Dockerfile
│ ├── pyproject.toml
│ ├── poetry.lock
│ └── src/
│ ├── news_parser/
│ │ └── __main__.py
│ ├── lib/
│ │ ├── db.py
│ │ ├── models.py
│ │ └── sources.py
│ ├── fetcher/
│ │ └── fetcher.py
│ └── categorizer_agent/
│ └── categorizer.py
└
git clone <repo_url>
cd mia- Скопируйте
.env.templateв.envи заполните значения. - Важно: для работы сервисов необходимы ключи GigaChat и корректные строки подключения к PostgreSQL.
cp .env.template .envdocker-compose up -d- Сервис
postgresподнимает базу данных. - Сервис
database_migrationsприменяет миграции (создаёт структуру таблиц). - Сервис
news_parserпарсит новости, категоризирует и сохраняет их в базу.
- Для проверки статуса контейнеров:
docker-compose ps- Для просмотра логов:
docker-compose logs -f- Используется образ
ankane/pgvector:latest. - Инициализация базы происходит через скрипт
init_db/init_news_db.sh.
- Применяет миграции к базе данных.
- Использует библиотеку
yoyo-migrations. - Миграции лежат в
python_services/database_migrations/src/db/.
- Парсит новости из RSS-источников.
- Категоризирует новости с помощью GigaChat.
- Сохраняет новости в базу данных.
POSTGRES_NEWS_URL— строка подключения к базе новостей.GIGA_AUTH_KEY— ключ авторизации GigaChat.GIGA_SCOPE— scope для GigaChat API.
Добавьте RSS-адрес в файл
python_services/news_parser/src/lib/sources.py
в словарь RSS_FEEDS.
docker-compose run --rm database_migrationsdocker-compose run --rm news_parser- Остановить все сервисы:
docker-compose down -v- Перезапустить контейнеры:
docker-compose up -d --force-recreate --build- Пересобрать контейнеры:
docker-compose build --no-cache