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. 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 = [