diff --git a/.env.example b/.env.example index 64dfa5c..959146e 100644 --- a/.env.example +++ b/.env.example @@ -122,7 +122,7 @@ SMTP_TIMEOUT_S=30 # --- Версия инстанса (релиз v0.0.1) --- # install.sh копирует значение из корневого файла VERSION при каждой # установке/обновлении — руками менять не нужно. -VIDCONF_VERSION=0.0.29 +VIDCONF_VERSION=0.0.30 # --- Профили compose. Дефолт ниже (`media,monitoring`) — только для ручного # `docker compose up` БЕЗ install.sh: медиа (LiveKit+coturn) + мониторинг, diff --git a/CHANGELOG.md b/CHANGELOG.md index b6da051..f79748d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,39 @@ Формат основан на [Keep a Changelog](https://keepachangelog.com/ru/1.1.0/), проект придерживается [семантического версионирования](https://semver.org/lang/ru/). +## [0.0.30] — 2026-08-04 + +Согласие на обработку персональных данных при регистрации + отключаемый модуль. + +### Добавлено +- На форме регистрации — галочка согласия на обработку персональных данных + со ссылкой на публичную страницу регламента (`/legal/personal-data-consent`). + Кнопка регистрации неактивна, пока галочка не отмечена; сервер тоже + отказывает без согласия (`POST /auth/register` → 400 `consent_required`, + второй эшелон проверки — тот же принцип, что у `hand_queue_disabled`). +- Текст регламента — настройка инстанса, редактируемая в админке + (вкладка «Настройки» → карточка «Согласие на обработку персональных + данных»): текстовое поле + тумблер «требовать согласие при регистрации». + Дефолтный текст — типовой шаблон с плейсхолдерами под организацию + (наименование оператора, адрес, контакты, цели и срок обработки), + **не проходил юридическую проверку** — в карточке администратора + об этом явное предупреждение. +- Номер редакции текста растёт автоматически при каждой правке — + у каждого пользователя, давшего согласие, в БД фиксируется и версия + документа, и дата согласия (`users.consent_version`, `consent_given_at`). +- Модуль отключаем (`instance_settings.consent_policy`), по умолчанию + выключен — поведение существующих инсталляций не меняется. У уже + зарегистрированных пользователей согласие не запрашивалось и не + запрашивается задним числом, вход не блокируется. + +### Технические детали +- Миграция Alembic добавляет `users.consent_version`/`consent_given_at` + (nullable — `NULL` означает «согласие не запрашивалось»). +- Публичный `GET /auth/registration-options` (уже существующий, без нового + эндпоинта) дополнен полями `consent_required`/`consent_text`/`consent_version` — + тем же ответом пользуется и страница регламента, доступная всегда, + независимо от того, включён ли модуль. + ## [0.0.29] — 2026-08-04 Кнопка «демонстрация экрана» в мини-окне конференции. diff --git a/VERSION b/VERSION index 369bd4c..f092e2b 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.0.29 +0.0.30 diff --git a/deploy/docker-compose.yml b/deploy/docker-compose.yml index 75fcc66..d95ea63 100644 --- a/deploy/docker-compose.yml +++ b/deploy/docker-compose.yml @@ -89,7 +89,7 @@ services: MEDIA_ROOT: ${MEDIA_ROOT:-/app/media} # Версия инстанса (релиз v0.0.1) — install.sh копирует значение # из файла VERSION (корень репозитория) в .env; отдаётся в GET /api/health. - VIDCONF_VERSION: ${VIDCONF_VERSION:-0.0.29} + VIDCONF_VERSION: ${VIDCONF_VERSION:-0.0.30} # Число процессов uvicorn (см. backend/Dockerfile). Дефолт 2 рассчитан # на 4-ядерный сервер, где ядра делятся с LiveKit. Поднимая значение, # проверьте бюджет соединений с БД: каждый воркер держит свой пул