GolosChain / gip

Предложения по улучшению Голоса
4 stars 1 forks source link

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

Open mastercyb opened 7 years ago

mastercyb commented 7 years ago

Абстракт

Приложениям необходим общий подход к хранению метаинформации о пользователях. Предложенный 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"
    }

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

vadbars commented 7 years ago

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

Очепятка. )

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

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

gropox commented 7 years ago

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

ghost commented 7 years ago

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

gropox commented 7 years ago

Я так понимаю связи (отношения между объектами) тоже здесь хранить? То есть атрибут "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 commented 7 years ago

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

gropox commented 7 years ago

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

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

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

gropox commented 7 years ago

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

On1x commented 7 years ago

По поводу 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Д)