Scoring V2: система, которая отличает настоящие тренды от шума

Scoring V2: когда трендам нужна оценка честности
Проект trend-analysis разросся до того, что мы уже собирали тренды из трёх источников одновременно — Hacker News, GitHub и arXiv. Но вот беда: не все тренды одинаково полезны. Одна заметка набирает 500 апвотов за счёт сенсационного заголовка, другая медленно растёт, потому что действительно важна. Третья вообще сплошь переподсказывается из десяти агрегаторов. Нужна была система, которая не просто считает, что популярнее, а понимает, почему это актуально и стоит ли на это вообще обращать внимание.
Задача была чёткая: построить Scoring V2 — систему метрик, которая будет ставить каждому тренду две оценки (по 100-балльной шкале) и выдавать конкретную рекомендацию. Не просто «это популярно», а ACT_NOW («действуй сейчас!»), MONITOR («присматриваем»), EVERGREEN («это на века») или IGNORE («не трать время»).
Первым делом разобрались с метриками. Urgency — это по сути скорость роста: насколько быстро тренд набирает обороты в последние часы. Quality — это честность источника и уникальность. Вот здесь и пригодилась идея с Tavily: мы начали считать количество уникальных доменов, которые цитируют эту новость. Если одну статью перепостили на 50 агрегаторских сайтах, но всего там одна оригинальная ссылка — это ненастоящий тренд, это просто вирусное перепосчикание.
Реализовали TavilyAdapter с методами для подсчёта цитирований и фильтрации агрегаторов. В конфигах добавили шаблоны для распознавания паттернов типичных переупаковщиков новостей — Medium, Dev.to, Hashnode и прочих. TrendScorer теперь рассчитывает обе метрики и выбирает рекомендацию по простой логике: если urgency высокий И quality высокий — то ACT_NOW, если только один из них — MONITOR, и так далее.
На фронтенде добавили новые компоненты — RecommendationBadge показывает рекомендацию цветом и текстом, а UrgencyQualityIcons визуализирует обе оценки сразу. Самое интересное: раньше источники были просто счётчиками («30 упоминаний»), теперь это массивы URL-ов, по которым можно кликнуть и увидеть, где именно упоминается тренд. Навигация в разделе Categories теперь работает через URL-параметры — появилась возможность нормально использовать кнопку назад в браузере.
Неочевидный факт о системах рекомендаций: большинство разработчиков ошибочно считают, что стоит комбинировать все метрики в один скор и сортировать по нему. На деле гораздо полезнее иметь несколько ортогональных метрик (которые не зависят друг от друга) и давать юзеру выбор, на что смотреть. Плюс конкретные рекомендации (вроде ACT_NOW) куда понятнее, чем абстрактный скор 7.3 из 10.
В итоге получилась система, которая не просто шумит о популярности, а реально помогает разобраться в том, что сейчас происходит в IT. Весь код, логика и даже типичные ловушки документировали в CHANGELOG.md и отдельных markdown-ах про Scoring V2 и подход с Tavily. Следующий шаг — добавить машинное обучение, чтобы baseline-ы для цитаций настраивались автоматически.
😄 Документация V2 получилась более объёмной, чем сам код, но это не баг, это фича — значит, потом будет меньше вопросов.
Метаданные
- Branch:
- feat/auth-system
- Dev Joke
- VS Code: решение проблемы, о существовании которой ты не знал, способом, который не понимаешь.
Часть потока:
Разработка: trend-analisis