Skip to content
funpinPublic

About

Мониторинг динамики публикаций вузов в TG, VK, MAX и Rutube

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

732 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Логотип m-ranked

m-ranked

Мониторинг и сравнительная аналитика официальных соцсетей российских вузов.

Production Build and contract gates Python 3.13 FastAPI 0.141 Node.js 24 Next.js 16.3 PostgreSQL 18


M-Ranked собирает динамику публикаций вузов в Telegram, VK, MAX и Rutube, хранит наблюдения в PostgreSQL и показывает рейтинги, сравнения и историю.

Production-стек один:

  • FastAPI в api/ — публичный и административный API;
  • платформенные Python-сборщики в collector_target/ и collector_runtime/;
  • PostgreSQL 18 со схемой из db/migrations/;
  • Next.js в frontend/;
  • кэш ответов API: на одном сервере — в памяти процесса, в профиле двух серверов — общий Redis; инвалидация через PostgreSQL LISTEN/NOTIFY (ADR-011);
  • nginx в два слоя: кэш готовых страниц и шлюз рендера с пулами для людей и роботов (трафик и роботы).

Публичный адрес: m.funpin.org.

Быстрый старт

make venv
make stand          # http://localhost:3000
make test           # Python и frontend

Локальный стенд поднимает чистую PostgreSQL, FastAPI и Next.js. Демонстрационные пароли лежат только в шаблоне infra/local/compose.env.example; собственный файл можно указать через MRANKED_COMPOSE_ENV.

Сборщики запускаются отдельно:

.venv/bin/python -m collector_target --platform telegram
.venv/bin/python -m collector_target --platform vk
.venv/bin/python -m collector_target --platform max
.venv/bin/python -m collector_target --platform rutube

Проверки

  • .venv/bin/python -m pytest tests anomaly_analysis -q;
  • cd frontend && pnpm check;
  • чистый bootstrap: docker compose --env-file infra/local/compose.env.example -f infra/compose.yaml up -d --wait postgres.

Интеграционные PostgreSQL-тесты требуют DSN из .env.test; без них они пропускаются. API-контракт зафиксирован в contracts/openapi/m-ranked-v1.yaml и проверяется как Python-, так и frontend-тестами.

Документация

About

Мониторинг динамики публикаций вузов в TG, VK, MAX и Rutube

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages