Формулировка проблемы: в текстах новостей часто
имеются ссылки на другие источники, освещающие новость. В большей
степени это характерно для постов 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.