Подробности имени человека в записях типа "person"

Для хранения подробностей имени человека в записях типа "person", мы используем ветку name с ключами: first, last, middle, suffix, full, latin, variations.

Пользователь напрямую вводит в запись первое, среднее, и последнее имена (а так же, суффикс).  Если это делает новый пользователь (на экране new-user/initial, то мы комбинируем эту информацию и формируем список вариаций имени.  На экране new-user/additional мы предлагаем пользователю просмотреть и отредактировать этот список.

В случае зарегистрированного пользователя, и все подробности имени, и список вариаций редактируется на экране personal-data, однако есть подозрение, что лучше будет вынести это всё на отдельный экран names.

Отредактированный пользователем список вариаций мы сохраняем в name/additional-variations.  Превращаем список в набор (set), добавляем в набор name/full и name/latin (если определены). Сохраняем набор в виде списка, отсортированного по длине элементов в убывающем порядке в name/variations.

Дополнительно, сравниваем получившийся набор с предыдущим значением name/variations.  Если существуют отличия, то мы пишем в name/last-change-date.

Мы так же обновляем name/last-change-date в случае, если пользователь обновил любой из: name/first, name/last, name/middle, name/suffix, name/latin, name/full.

name/last-change-date содержит дату в виду seconds since the epoch — целого числа в секундах с начала эпохи.