SHA256
Что сделано: вычистили неиспользуемый user-settings sync/DM sync хвост, сохранили сборку, обновили bundle.sh так, чтобы gradle-wrapper.jar всегда попадал в архив. Проверено: compileJava и deploy на t2 (server + UI). Не проверяли: полные интеграционные сценарии, ручные UI-флоу и продовый деплой.
58 lines
2.0 KiB
Markdown
58 lines
2.0 KiB
Markdown
# User Settings API
|
|
|
|
user_settings хранит технические настройки пользователя только на его
|
|
единственном действующем access-сервере. Межсерверной синхронизации настроек
|
|
нет. При смене access-сервера старые настройки автоматически не переносятся.
|
|
|
|
## Подпись
|
|
|
|
UI формирует строку:
|
|
|
|
SHiNe/UserSettings:<login>|<setting_type>|<setting_key>|<time_ms>|<value_text>|<value_num>
|
|
|
|
и подписывает её текущим Ed25519 clientKey пользователя. Сервер:
|
|
|
|
1. находит пользователя;
|
|
2. проверяет совпадение client_key с актуальным ключом пользователя;
|
|
3. строго проверяет подпись;
|
|
4. при неверной подписи возвращает INVALID_SIGNATURE;
|
|
5. сохраняет запись только если time_ms новее локальной версии.
|
|
|
|
## Операции
|
|
|
|
### UpsertUserSetting
|
|
|
|
Обязательные поля:
|
|
|
|
- login;
|
|
- setting_type;
|
|
- setting_key;
|
|
- time_ms;
|
|
- client_key;
|
|
- signature.
|
|
|
|
Значения:
|
|
|
|
- value_text — строковое значение, по умолчанию пустая строка;
|
|
- value_num — числовое значение, по умолчанию 0.
|
|
|
|
Поля sync_delivery и synced удалены.
|
|
|
|
### GetUserSetting
|
|
|
|
Возвращает одну локальную настройку по login, setting_type и setting_key.
|
|
|
|
### ListUserSettings
|
|
|
|
Возвращает все локальные настройки пользователя.
|
|
|
|
## Удалённые операции
|
|
|
|
После перехода на один access-сервер удалены:
|
|
|
|
- UserSettingsSyncBatch;
|
|
- MarkAllUserSettingsUnsynced.
|
|
|
|
Также удалены таблица peer-cursor и периодический сервис синхронизации
|
|
настроек.
|