Задача [AI23]: Механизм рекомендации источников

Формулировка проблемы: в текстах новостей часто имеются ссылки на другие источники, освещающие новость. В большей степени это характерно для постов twitter (ввиду ограничения на длину сообщения), а также постов в других социальных сетях, но встречается и у обычных новостных сайтов (пример: Лента.ру, раздел «ссылки по теме».

Решение: включает в себя часть уже имеющейся функциональности Arta Synergy (реестры), а также необходимость реализации нового модуля Arta Intelligence — модуля рекомендации источников. Коротко: в Arta Synergy должен быть создан реестр рекомендации источников, записи в который будет создавать модуль рекомендации источников Arta Intelligence, а также пользователи Arta Synergy вручную. Каждая автоматически добавляемая запись содержит сопроводительный текст и ссылку на источник и автоматически активируется. Предполагается, что будет создан маршрут активации, включающий согласование либо утверждение такой заявки и работу техническому специалисту по настройке Arta Intelligence (определению типа источника, его необходимых параметров, добавление его в Sources и т. п.).

Со стороны Arta Synergy.

«Механизм реализации источников» представляет собой реестр Arta Synergy. Одна запись в реестре — одна заявка на добавление источника («рекомендация источника»).

Форма этого реестра должна содержать, как минимум, следующие поля:

  • Сопроводительный текст. Компонент должен иметь тип «Многострочный текст» либо «HTD-редактор» и не должен находиться внутри динамической таблицы. Будет использован для помещения сопроводительного текста модулем рекомендации источников Arta Intelligence.

  • Динамическая таблица, в которой должны быть поля:

    • Ссылка на источник. Компонент должен иметь тип «Ссылка».

Рисунок 536. Пример формы реестра рекомендации источников

Пример формы реестра рекомендации источников

Рисунок 537. Пример настройки реестра рекомендации источников

Пример настройки реестра рекомендации источников

Новая функциональность Arta Intelligence.

Модуль рекомендации источников должен являться частью Arta Intelligence и иметь возможность отключения. При активном модуле для каждого «тела новости» (будь то новость, получаемая из источника RSS/nonRSS, путем чтения ленты блог-платформы или поиска по ней) просматривается на предмет наличия в ней ссылок (http/https).

Найденные ссылки должны быть обработаны на предмет наличия за ними перенаправления на другую ссылку — таким образом будут отсечены, например, разнообразные сервисы по сокращению ссылок (bit.ly, t.co и прочие). Если у ссылки имеется перенаправление — то исходная ссылка заменяется на ту ссылку, на которую ведет это перенаправление.

Обработанные таким образом ссылки должны быть проверены на предмет наличия в базе источников Arta Intelligence. Проверка должна осуществляться путём сравнения FQDN (Fully Qualified Domain Name, полного доменного имени) URL-ов источников AI и FQDN проверяемой ссылки. Если они совпадают, то будем считать, что новый источник для рекомендации уже присутствует в базе AI и такая ссылка отбрасывается.

Кроме того, если ссылка уже была в числе ранее рекомендованных ссылок, то она также отбрасывается.

Если после всех проверок остались ссылки для рекомендации, то они вместе с сопроводительным текстом добавляются в реестр Synergy в качестве новой записи, после чего запускается (или не запускается, в зависимости от настройки) активация этой записи.

Замечание: при добавлении ссылок подписью к ним должны служить сами ссылки, пример: ссылка — http://google.com, подпись — http://google.com.

Сопроводительный текст настраивается с помощью параметра dikw.sources-recommender.form.text.

Подстановочный параметр %s будет заменен на текст заголовка навости Если в новости не имеется заголовка (как, например, в постах twitter), то в качестве заголовка -новости используется содержимое, сокращённое до 140 знаков и с добавлением многоточия после них.

Настройка реализуемого модуля должна осуществляться с помощью конфигурационного файла dikw.properties:

# Включить или нет механизм рекомендации источников

dikw.sources-recommender=true

# Идентификатор реестра, в котором будет создаваться записи о рекомендуемых источниках

dikw.sources-recommender.register.id=eb5e17843fd441223baf72a1532

# Идентификатор компонента, в который помещается сопроводительный текст

dikw.sources-recommender.register.form.desc=cmp-DescText

# Параметр, задающий сопроводительный текст. %s будет заменено на текст заголовка новости

dikw.sources-recommender.form.text=В новости %s найдены ссылки, перечисленные ниже. Пожалуйста, рассмотрите возможность их добавления в качестве источника новостей

# Идентификатор компонента, в который помещаются найденные ссылки. Компонент должен находиться внутри динамической таблицы

dikw.sources-recommender.form.link=cmp-dyntable.cmp-Link

# Активировать или нет созданную запись реестра

dikw.sources-recommender.register.activate=true

Вызовы API Synergy, необходимые для работы реализуемой функциональности, должны выполняться, используя параметры, описанные в задаче AI19.