Skip to content

/series/add: prediction of the category and country #517

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
php-coder opened this issue Dec 21, 2016 · 10 comments
Closed

/series/add: prediction of the category and country #517

php-coder opened this issue Dec 21, 2016 · 10 comments
Assignees
Labels
area/usability impact/changelog This change should be reflected in the NEWS.txt file
Milestone

Comments

@php-coder
Copy link
Owner

php-coder commented Dec 21, 2016

To simplify choosing of category/country we can try to guess these values by using simple algorithms:

  • most (or all) series in user's collection are in category X => probably he is adding another series in the same category
  • the last (one, two...) series that this user added, were in category Y => probably he is going to add more series in this category

I think that we can implement it as a link near the fields. For example, we can add a link "Use latest category" or "Try to guess..." and when user is clicking on it, JS code can send request to a server, load the possible category/country and update field accordingly.

@php-coder
Copy link
Owner Author

@Shkarin Как насчет этой?

@Shkarin
Copy link
Contributor

Shkarin commented Feb 22, 2017 via email

@php-coder
Copy link
Owner Author

php-coder commented Feb 22, 2017

Т.к. это идея, то нет четкого алгоритма. Поэтому ты смело можешь предлагать что-либо.

Сначала сделай прототип (просто добавь ссылку в html файл). Потом реализуй один из алгоритмов (лучше второй).

@Shkarin
Copy link
Contributor

Shkarin commented Mar 5, 2017

Я так понимаю нужно реализовать это для этих списков ссылка.

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

  2. Плюс к этому можно добавить ссылку "Использовать последнюю категорию" - это название нравиться больше так-как пользователям, я думаю более понятно будет.

    • Только название "Использовать последнюю категорию" слишком длинное, я бы кнопку сделал с подсказкой.
    • Меня смущает, что ты предлагаешь обращаться в базу, а почему бы в кэше не хранить и не обращаться?
    • Третий момент, если у пользователя нет еще добавленных категории, то предлагаю ссылку скрывать или твое решение?
    • На будущее, может имеет смысл добавить аналитику, чтоб отследить популярность ссылки.

@php-coder
Copy link
Owner Author

Я так понимаю нужно реализовать это для этих списков ссылка.

Да, сюда.

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

Хорошая идея. Но возможно это будет сложно реализовать.

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

Во-вторых, этот подход порождает другие вопросы. Например, пользователь создал 20 стран. Очевидно, что показывать 20 стран в начале не очень нужно. Вопрос 1: сколько таких стран осмысленно показывать в начале? Допустим мы решим, что максимум 3. Вопрос 2: по какому критерию мы будем их отбирать тогда? Просто возьмем первые 3 из 20 доступных?

Плюс к этому можно добавить ссылку "Использовать последнюю категорию" - это название нравиться больше так-как пользователям, я думаю более понятно будет.

Согласен. Это действительно просто, понятно и удобно. Но это не будет работать для тех, кто добавляет страну/категорию впервые. Именно для таких пользователей я думал использовать первый вариант -- попробовать поискать в их коллекции.

И поскольку такая кнопка может использовать 2 алгоритма (а в будущем их может стать больше), то я предложил дать ей название "Попробовать угадать".

Кстати. Чтобы было меньше магии, мы можем после угадывания заменять ссылку на сообщение о том, что мы подставили -- "Использована последняя созданная категория", "Использована самая многочисленная категория из вашей коллекции".

@php-coder
Copy link
Owner Author

// слишком рано отправил комментарий, вот продолжение

Только название "Использовать последнюю категорию" слишком длинное, я бы кнопку сделал с подсказкой.

Зато очевидное. А на кнопку могут и не обратить внимания и на подсказку не навести. Сужу по себе, так как редко на сайтах прибегаю к подсказкам.

Меня смущает, что ты предлагаешь обращаться в базу, а почему бы в кэше не хранить и не обращаться?

Запрос довольно простой и у нас нет нагрузки, так что можно и в БД сходить.

А про какой кэш ты говоришь? На стороне клиента в localStorage? Или на сервере? Если на сервере, то кэш всегда можно будет добавить, если вдруг обращения к БД будут проблемой, пока же проблема это память и лучше лишний раз нагрузить мощности чем отъесть еще больше памяти.

Да и этот функционал не станет узким горлышком в производительности. Посуди сам -- это нужно чтобы много пользователей стало добавлять серии и пользоваться этими подсказками. Вдобавок эти подсказки у каждого пользователя свои, т.е. если мы их и закэшируем то только на уровне пользователя. Каков шанс что один пользователь станет добавлять серии в таком количестве и с использованием подсказок?

А еще при добавлении кэша появится другая проблема -- его инвалидация :)

Я пока не вижу, чтобы плюсы перевешивали минусы, что скажешь?

Третий момент, если у пользователя нет еще добавленных категории, то предлагаю ссылку скрывать или твое решение?

Да, это отличный вопрос. Он отличный потому что заставляет задуматься :)

Значит при рендеринге страницы мы должны уже слазить в БД и посмотреть сможем ли мы пользователю что-нибудь угадать. Зная это при рендеринге мы можем сразу рендерить страницу с ответом и тогда при нажатии на ссылку, мы не будем делать AJAX запрос, а сразу подставим ответ.

Это тоже вариант, но не хочется выполнять два запроса к БД при рендеринге страницы. Поэтому мы можем эту штуку вынести в JS -- отдаем страницу пользователю. После ее загрузки выполняется JS код, который лезет на сервер и узнает что мы можем угадать. После этого он добавляет ссылку на страницу, при клике по которой подставляется статический ответ :) При таком подходе мы можем также и текст ссылки делать разным, так как уже знаем ответ.

Итого: JS ходит на сервер и получает ответ, на основании которого:

  • отображает ссылку "Подставить последнюю страну", если у пользователя такая есть
  • отображает ссылку "Подставить самую многочисленную страну из коллекции", если такая есть
  • не отображает ссылку совсем, если информации не достаточо

Как тебе такая идея?

На будущее, может имеет смысл добавить аналитику, чтоб отследить популярность ссылки.

Расскажи как ты это видишь.

Имей ввиду, что этот функционал с подсказкой это дополнительная и опциональная фишка. Если у пользователя отключен (или не поддерживается) JS, то она просто не должна работать и при этом желательно не выполнять лишней работы на сервере.

@php-coder
Copy link
Owner Author

Дополнительные идеи:

  • после того как пользователь выбрал страну, то ссылку нужно как-нибудь убрать (смысла снова по ней кликать нет)
  • если страница открывается с указанием страны, то ссылку на угадывание отображать не нужно

И да. Давай в этой задаче сосредоточимся на угадывании страны (потому что на сайте сейчас всего 1 категория и 50 стран). Это позволит уменьшить объем работ и быстрее сделать нечто работающее, что можно будет попробовать.

@Shkarin
Copy link
Contributor

Shkarin commented Mar 5, 2017

А про какой кэш ты говоришь? На стороне клиента в localStorage? Или на сервере?

Тут я имел ввиду кэш со стороны клиента, но если нагрузка минимальная, то не стоит замарачиваться

Итого: JS ходит на сервер и получает ответ, на основании которого:
отображает ссылку "Подставить последнюю страну", если у пользователя такая есть
отображает ссылку "Подставить самую многочисленную страну из коллекции", если такая есть
не отображает ссылку совсем, если информации не достаточо
Как тебе такая идея?

Мне нравится.

На будущее, может имеет смысл добавить аналитику, чтоб отследить популярность ссылки.
Расскажи как ты это видишь.

Самый простой способ это завести счетчик и посмотреть сколько раз нажимают ссылку, естественно придется хранить результат в базе. Второй вариант это провести а/б тестирование. Например, ты считаешь, что ссылка будет лучше, я говорю что кнопка. Можно разделить пользователей на две группы, задав им соответствующий тег и одной группе показывать кнопку, другой ссылку. Затем собираем статистику по кликам и сравниваем на что чаще нажимают на кнопку или на ссылку. Ну это так мысли на будущее.

@0pdd
Copy link

0pdd commented Dec 19, 2018

@php-coder 3 puzzles #987, #988, #989 are still not solved.

@php-coder
Copy link
Owner Author

Despite that there some issues left, they are minor and will be solved separately and later. Links that suggest category/country have been added and I'm closing this issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/usability impact/changelog This change should be reflected in the NEWS.txt file
Projects
None yet
Development

No branches or pull requests

3 participants