Агрегатор новостей на подобии Meduza.io (командный проект)

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
Компания IPONWEB
Учебный семестр Осень 2016
Учебный курс 3-й курс
Максимальное количество студентов, выбравших проект: 3-4



Что это за проект?

Агрегатор новостных сайтов, также кластеризует новости, находя похожие темы. Также есть админка для коллективной работы над текстами новостей с привязкой к собранным темам.

Чему научатся студенты? Что самое интересное в проекте?

  • Пример разработки системы агрегации
  • Обработка и анализ текста
  • Разработка системы взаимодействия в реальном времени

Организация работы (Как студенты будут работать в команде?)

Основные моменты взаимодействия:

  • Непрерывня интеграция: линтеры кода, прогон тестов, покрытие тестами, сборка пакета и выкладка на прод, работа с конфигурациями. Настройка на примере Jenkins или Phabricator. Работа с конфигурациями через Puppet (или, возможно, Docker или Vagrant)
  • Гибкая методология разработки: бэклог, организация спринтов, оценка сложности задач и сопоставление с фактически потраченным, демо. Технически на примере Trello, RedMine или Phabricator
  • В группе каждые 2 недели (спринт) переходит роль менеджера проекта, чтобы каждый мог попробовать роль пару раз и на планирование не забивали.
  • Взаимные код-ревью: все ревьюят всех.
  • Удаленная работа, встречаться нечасто (например, в конце каждого спринта), но раз в 2-3 дня обязательно синхронизовать результаты и планы в слаке/телеграмме или по почте.

Компоненты (Из каких частей состоит проект?)

  • Агрегация и работа с разными источниками.
  • Кластеризация новостей, склеивание по общим темам, возможно склеивание в истории с развитием.
  • Параллельная работа в админке (см. Описание Медузы)
  • Редактор новости: проверка правописания, выявление именованных сущностей и рекомендации справки о них, поиск новостей по этой же теме по мере написания материала.
  • Составление рекомендаций связанного контента: по тексту и корректировка по поведению пользователей

Техническое описание устройства Медузы:

Сделать агрегацию нескольких источников, нормализацию текста (и перевод в bag-of-words), затем кластеризацию новостей за последнее время для поиска схожих тем и их развитий.

Админка должна отображать текущие агрегированные темы, тему, на которую составляется новость. Также через веб-сокеты должна быть реализована совместная работа над текстом. Также печатаемый текст проверяется на поиск именованых сущностей для привязки справки по ним.

Какие будут использоваться технологии?

Язык разработки непринципиален, подойдет любой, в котором удобно работать с HTTP-запросами, взаимодействовать с СУБД и разрабатывать веб-сервер (например, Python, Ruby, JavaScript)

В качестве платформы подойдут AWS или Google Cloud

Какие начальные требования?

  • Базовое понимание HTTP, опыт работы с API.
  • Опыт веб-разработки

Темы вводных занятий

  • Взаимодействие в команде, методология Agile
  • Архитектура разрабатываемого проекта
  • Составление бэклога и планирование спринтов

Критерии оценки

Минимальные требования (на 4-5):

  • Агрегация по крайне мере 10 источников новостей на русском языке
  • Нормализация (составление bag of words, векторной модели новостей)
  • Кластеризация новостей по схожести, определение дубликатов
  • Веб-сайт с лентой новостей с кешированием.

Требования (на 6-7):

  • Выделение именованных сущностей в тексте и связка с другими новостями по ним или страницами википедии.
  • Агрегация добавляемых аккаунтов социальных медиа: фейсбук, жж. + Несложный классификатор, похож ли пост на информационный повод (например, по длине поста, наличию именованных сущностей, слов из заданного списка, ссылок)
  • Админка для работы с новостями на веб-сокетах для совместных правок и работы выпускающего редактора: редактирование текста, блокировка полей для других при редактировании, сохранение истории изменений и чат/комментарии.

Требования (на 8-10):

  • Интеграция с Яндекс.Метрикой через API - подгрузка и кеширование данных о просмотревших новость (демография, интересы, регион и тд)
  • Система персональной рекомендации контента на основе фич новости и данных из Метрики.
  • Конструктор верстки текста новости. + AMP версия.
  • Работа с твиттером: мониторинг трендов, отслеживание добавляемых аккаунтов, экспорт и визуализация твиттов и диалогов в новости.
  • Пуш-уведомления о новостях.

Требования (на вероятность создать в итоге успешный сервис для СМИ):

  • Код соответствует современным стандартам кодирования
  • Актуальная документация по работе процессов сервиса
  • Покрытие тестами, юнит-тесты, функциональные и интеграционные тесты
  • Проведен UX-анализ основных интерфейсов и сценариев пользователей

Точные требования на 6-10 будут сформулированы на первых занятиях исходя из составленного бэклога и уровня подготовки участников проекта.

Похожие проекты

  • Яндекс.Новости, Google News - агрегация
  • Meduza.io - редактирование новостей

Контактная информация

  • Почта: acccko@gmail.com
  • Телеграмм: @acccko