Формулировка проблемы: в текстах новостей часто
имеются ссылки на другие источники, освещающие новость. В большей
степени это характерно для постов twitter
(ввиду
ограничения на длину сообщения), а также постов в других социальных
сетях, но встречается и у обычных новостных сайтов (пример:
Лента.ру, раздел «ссылки по теме».
Решение: включает в себя часть уже имеющейся
функциональности Arta Synergy
(реестры), а также
необходимость реализации нового модуля
Arta Intelligence
— модуля рекомендации
источников. Коротко: в Arta Synergy
должен быть
создан реестр рекомендации источников, записи в который будет
создавать модуль рекомендации источников
Arta Intelligence
, а также пользователи
Arta Synergy
вручную. Каждая автоматически
добавляемая запись содержит сопроводительный текст и ссылку на
источник и автоматически активируется. Предполагается, что будет
создан маршрут активации, включающий согласование либо утверждение
такой заявки и работу техническому специалисту по настройке
Arta Intelligence
(определению типа источника,
его необходимых параметров, добавление его в
Sources
и т. п.).
«Механизм реализации источников» представляет собой реестр
Arta Synergy
. Одна запись в реестре — одна
заявка на добавление источника («рекомендация источника»).
Форма этого реестра должна содержать, как минимум, следующие поля:
Сопроводительный текст. Компонент должен иметь тип
«Многострочный текст» либо «HTD-редактор» и не должен
находиться внутри динамической таблицы. Будет использован для
помещения сопроводительного текста модулем рекомендации
источников 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.