Skip to content
This repository has been archived by the owner on Mar 2, 2020. It is now read-only.

Описание Профиля #1

Open
mastercyb opened this issue Mar 11, 2017 · 8 comments
Open

Описание Профиля #1

mastercyb opened this issue Mar 11, 2017 · 8 comments

Comments

@mastercyb
Copy link
Contributor

mastercyb commented Mar 11, 2017

Абстракт

Приложениям необходим общий подход к хранению метаинформации о пользователях. Предложенный GIP рекомендует структуру хранения данных в поле json_metadata. Использование предложенного подхода позволит всем приложениям экосистемы Голос делиться структурированной информацией о пользователях.

Структура описания

    "profile": {
        "type": "человек",
        "name": "Дима Стародубцев",
        "about": "Основатель cyber•Fund",
        "location": "Млечный Путь",
        "website": "https://golos.io/@hipster",
        "cover_image": "http://webdiscover.ru/uploads/comments/2013-01/569-1358261952.jpg",
        "profile_image": "https://habrastorage.org/files/6b3/db5/587/6b3db55871e04985821e4c453a30c60c.jpg",
        "gender": "male",
        "email": "d@cyber.fund",
        "birthday": "18/02/1983",
        "timezone": "+2",
        "locale": "en_US",
        "languages": ["en", "ru"],
        "currency":["USD","BTC"]
        "featured_post": "delegat-hipster"
    }

Требования к значениям

  • name: max. length 20 chars.
  • about: max. length 160 chars.
  • location: max. length 30 chars.
  • website: valid https:// URL with max. length 100 chars.
  • profile_image: image URL, preferably square-cropped with a minimum size of 230 x 230 pixels.
@vadbars
Copy link

vadbars commented Mar 13, 2017

Струкутра описания

Очепятка. )

"name": "Дима Стародубцев",

Может, разбить на поля first_name, surname, last_name? Чтобы избежать вариантов "Дима Стародубцев", "Стародубцев Дима", "Стародубцев Дмитрий Батькович", "Дмитрий Батькович Стародубцев" и т.д.
Кстати, как с кириллицей/латиницей?

@gropox
Copy link

gropox commented Mar 13, 2017

Еще бы currency, добавили. Я не в России живу, мне рубли не о чем не говорят. Приходится в каждом браузере менять рубли на евро.

@ghost
Copy link

ghost commented Mar 13, 2017

@vadbars только важно не переборщить с "обязательными полями"

@gropox
Copy link

gropox commented Mar 13, 2017

Я так понимаю связи (отношения между объектами) тоже здесь хранить? То есть атрибут "featured_post" не нужен. Нужен атрибут "relations"

"relations":[
{"object_id":"@hipster/delegat-hipster", "type":"featured_post", "state":"true"},
{"object_id":"ru-stihotvorenia", "type":"blacklisted_tag", "state":"true"},
{"object_id":"ru-rasrabotka", "type":"favorited_tag", "state":"true"},
...

Мне вот интересно, есть какое то ограничение на размер json_meta? Влезут все хотелки?

@mastercyb
Copy link
Contributor Author

@gropox Это лучше вот сюда #2 . Тут featured post больше имеется ввиду тот пост, который человек использует как метаописание.

@gropox
Copy link

gropox commented Mar 13, 2017

Ну понял. Сорри

Я имел ввиду что featured_post по сути тоже ссылка, но наверное да, лучше ее в профиле оставить.

Про references я сначала думал придется в profile структуру добавить, но только сейчас дошло, что в json_meta можно параллельно хранить и profile и relations.

@gropox
Copy link

gropox commented Mar 13, 2017

А почему currency массив? Наверное имелось ввиду какие валюты интересны? Я думал про что то вроде preferred_currency для GUI . Какая то одна валюта. Тоже самое возможно с preferred_language. Ну или договориться, что первая в списке валюта и есть основная, тогда в GUI надо будет дать возможность сортировки.

@On1x
Copy link

On1x commented Aug 2, 2017

По поводу languages и currencies - массив тут используется для задания приоритета (как и в Header внутри запросов браузера). Приложение по-очереди пытается использовать в своих рамках указанные валюты, языки.
Считаю целесообразным разбить fullname на name, lastname (необходимость surname под вопросом).
Также стоит добавить background_color - отлично может использоваться приложениями на примере Wire (там есть выбор цвета в профиле).
Надо расписать location - разбить на country + state + town.
В Голосе about служит как "О блоге", а не "О себе". Тоже предлагаю разделить это: bio - о себе, кратко, about - о блоге.

Итого, мое предложение расширить структуру до:

name: max-length 20 chars
lastname: max-length 20 chars
bio: max-length 160 chars
about: max-length 160 chars
background_color: hex, #ff0000, 6 chars (или 3 байта от 0 до 255)
country - 60 chars (самое длинное, что нашел в кириллице: "Святой Елены, Вознесения и Тристан-да-Кунья острова")
state - 60 chars
town - 60 chars

По-поводу размерности данных - можно основываться на Википедии, но мне кажется так делать не стоит - лучше выделить больше, чем меньше - на разных языках и наречиях размерности отличаются, но явно не превышают 60 символов.

PS location - оставить в свободном режиме для заполнения, но не делать на нем логический упор (многие предпочитают писать свой город коротким названием, например у меня Димитровград, часто жители пишут Мелекесс, Дград, ДД, 2Д)

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

4 participants