From f3fb714126af3a160a79507db701d810c9cebc16 Mon Sep 17 00:00:00 2001 From: admin Date: Wed, 26 Aug 2026 18:21:04 +0300 Subject: [PATCH 1/2] fix: restore scheduled crawl worker --- README.md | 11 +++++++---- app/version.py | 6 +++--- docker-compose.yml | 10 ++++++++++ pyproject.toml | 2 +- 4 files changed, 21 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 2b98d52..1c0dc5a 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,7 @@ ## Архитектура - `api`: FastAPI, REST API, HTML-админка, MCP endpoint и healthcheck. +- `worker`: weekly scheduler, который запускает парсинг по `CRAWL_CRON`. - `postgres`: основная БД. Парсер использует фиксированный источник сотрудников, по умолчанию `https://miem.hse.ru/persons`. Для каждой карточки сохраняются ФИО, должности, год начала работы, контакты, идентификаторы, вкладки профиля, секции, публикации, курсы, ВКР, новости, JSON-снапшот и сжатый HTML-снапшот. Детальные публикации дополнительно нормализуются в отдельную таблицу `employee_publications`, а новости из блока «В новостях» — в `employee_news_links`. Ссылки обходятся только из меню профиля самого сотрудника (`person-menu`), например `#sci`, `#teaching`, `#main`. @@ -20,7 +21,8 @@ cp .env.example .env Основные настройки: - `DATABASE_URL`: строка подключения SQLAlchemy. -- `SOURCE_URL`: список сотрудников МИЭМ. +- `SOURCE_URL`: список сотрудников МИЭМ. +- `CRAWL_CRON`: расписание в формате crontab, по умолчанию `0 3 * * 1`. - `CRAWL_LIMIT`: опциональный лимит профилей для тестового запуска. - `ADMIN_USERNAME`, `ADMIN_PASSWORD`: логин и пароль админки. - `SESSION_SECRET`: секрет подписи cookie. @@ -80,7 +82,7 @@ docker compose up -d --build --remove-orphans ## Парсинг -Ручной запуск доступен в админке на `Dashboard` и странице `Runs` или через REST: +Worker запускает обход по `CRAWL_CRON`. Ручной запуск также доступен в админке на `Dashboard` и странице `Runs` или через REST: ```bash curl -X POST http://localhost:8000/api/crawl-runs --cookie "miem_admin_session=..." @@ -137,9 +139,10 @@ curl http://localhost:8000/mcp \ ## Обслуживание ```bash -docker compose logs -f api +docker compose logs -f api +docker compose logs -f worker docker compose exec postgres pg_dump -U miem miem_workers > backup.sql docker compose down ``` -Версия сервиса: `0.7.5`. Админка всегда показывает версии backend и frontend в footer. +Версия сервиса: `0.7.6`. Админка всегда показывает версии backend и frontend в footer. diff --git a/app/version.py b/app/version.py index 9aba414..7e653b7 100644 --- a/app/version.py +++ b/app/version.py @@ -1,3 +1,3 @@ -APP_VERSION = "0.7.5" -FRONTEND_VERSION = "0.7.5" -BACKEND_VERSION = "0.7.5" +APP_VERSION = "0.7.6" +FRONTEND_VERSION = "0.7.6" +BACKEND_VERSION = "0.7.6" diff --git a/docker-compose.yml b/docker-compose.yml index ad53a6a..4182481 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -25,5 +25,15 @@ services: postgres: condition: service_healthy + worker: + build: . + command: python -m app.worker + env_file: .env + environment: + DATABASE_URL: postgresql+psycopg://${POSTGRES_USER:-miem}:${POSTGRES_PASSWORD:-miem_password}@postgres:5432/${POSTGRES_DB:-miem_workers} + depends_on: + postgres: + condition: service_healthy + volumes: postgres_data: diff --git a/pyproject.toml b/pyproject.toml index 2c38a39..ad1f45b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "miem-workers" -version = "0.7.5" +version = "0.7.6" description = "MIEM employees parser, admin API, and MCP server" requires-python = ">=3.11" dependencies = [ -- 2.49.1 From 3bdb8b1d90f685a4e09c9f0cb0b9c9da06c4a265 Mon Sep 17 00:00:00 2001 From: admin Date: Wed, 26 Aug 2026 18:22:45 +0300 Subject: [PATCH 2/2] docs: add scheduled worker changelog --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7c2527b..80086c6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 0.7.6 + +- Возвращён еженедельный автоматический запуск обхода сотрудников. + ## 0.7.5 - Production Compose запускает только API и PostgreSQL. -- 2.49.1