Реализованы задачи бэклога 1-5 (1я не до конца)

This commit is contained in:
mi
2026-07-21 12:50:46 +03:00
parent 3b71caf7b3
commit 0d7f7a819f
105 changed files with 7185 additions and 38 deletions
+4 -4
View File
@@ -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.