Реализованы задачи бэклога 1-5 (1я не до конца)
This commit is contained in:
@@ -302,7 +302,7 @@ require required consents accepted
|
||||
BEGIN
|
||||
INSERT UserIdentity(keycloak_sub, phone_number, last_login_at)
|
||||
ON CONFLICT(keycloak_sub) DO UPDATE phone_number, last_login_at
|
||||
INSERT ClientProfile(user_id) ON CONFLICT(user_id) DO NOTHING
|
||||
INSERT ClientProfile(user_id, russian_phone=phone) ON CONFLICT(user_id) DO NOTHING
|
||||
INSERT immutable UserConsent rows for submitted versions
|
||||
INSERT audit auth.bootstrap
|
||||
COMMIT
|
||||
@@ -334,7 +334,7 @@ Request:
|
||||
{"ux_session_id":"uuid","started_at":"2026-07-08T12:00:00Z"}
|
||||
```
|
||||
|
||||
Создаёт `UxSession` и audit `session_start` атомарно. Не влияет на auth. `device_id` хешируется перед сохранением; raw значение в лог не попадает.
|
||||
Создаёт `UxSession` и audit `session_start` атомарно. Не влияет на auth. Параметры устройства, включая исходный `device_id`, сохраняются в `UxSession` и в snapshot `UserConsent.device_json`; в audit/log значение не копируется.
|
||||
|
||||
### 6.4. Profile и documents
|
||||
|
||||
@@ -352,7 +352,7 @@ Request:
|
||||
"personal_data": {
|
||||
"full_name": null,
|
||||
"citizenship": null,
|
||||
"russian_phone": null,
|
||||
"russian_phone": "+79991234567",
|
||||
"foreign_phone": null,
|
||||
"email": null
|
||||
},
|
||||
@@ -579,7 +579,7 @@ JWKS cache имеет positive TTL и short negative TTL для неизвест
|
||||
|
||||
### 9.3. `ux_sessions`
|
||||
|
||||
`id` = `ux_session_id`; `user_id` FK; `start_reason` CHECK; `platform`, `app_version`, `device_id_hash`; `started_at`; common fields.
|
||||
`id` = `ux_session_id`; `user_id` FK; `start_reason` CHECK; `platform`, `app_version`, `device_id`; legacy `device_id_hash` nullable; `started_at`; common fields.
|
||||
|
||||
Индексы: `(user_id, started_at DESC)`, `(started_at)` для retention.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user