$npx -y skills add TserenTserenov/FMT-exocortex-template --skill consentУправление consent в learning.tracking_consent — opt-in / opt-out / status / revoke. Обязательное условие для работы stage_evaluator worker (WP-253 Блок 2). GDPR-совместимо.
| 1 | # Consent — управление согласием на трекинг |
| 2 | |
| 3 | > **Назначение:** пилот сам управляет своим consent на обработку поведенческих данных (события day_plan_*, wp_*, w_reflections и т.д.). Без `opt_in=TRUE` worker `stage_evaluator` пропускает пилота. |
| 4 | > |
| 5 | > **Архитектурный принцип:** consent хранится в `learning.tracking_consent` (BC = `learning`, не персона). Это разрешение на агрегирование, не персональные данные. |
| 6 | |
| 7 | ## When to use |
| 8 | |
| 9 | Управление consent в learning.tracking_consent — opt-in / opt-out / status / revoke. Обязательное условие для работы stage_evaluator worker (WP-253 Блок 2). GDPR-совместимо. |
| 10 | |
| 11 | ## Аргументы |
| 12 | |
| 13 | - `status` (default) — показать текущее состояние consent |
| 14 | - `opt-in [scope1,scope2,...]` — дать согласие (default scope: `stage_evaluation`) |
| 15 | - `opt-out` — отозвать согласие (opt_in=FALSE, история сохраняется) |
| 16 | - `revoke` — полное удаление row (GDPR right to erasure) |
| 17 | |
| 18 | ## Algorithm |
| 19 | |
| 20 | ### Шаг 1. Вызвать скрипт маршрутизации |
| 21 | |
| 22 | ```bash |
| 23 | bash "$IWE_SCRIPTS/route-task.sh" --skill consent --args "$ARGUMENTS" |
| 24 | ``` |
| 25 | |
| 26 | Скрипт читает `IWE_OWNER_ORY_UUID` из окружения. Пишет через роль `consent_writer` (миграция 113); fallback на `DATABASE_URL_LEARNING_DIRECT`. |
| 27 | |
| 28 | ### Шаг 2. Интерпретировать результат |
| 29 | |
| 30 | Скрипт сообщает об успехе через stdout (exit 0) или ошибке через stderr (exit ненулевой). |
| 31 | |
| 32 | ### Шаг 3. Вернуть ответ пилоту |
| 33 | |
| 34 | Вывести stdout скрипта пилоту без изменений. |
| 35 | |
| 36 | ## Возможные scopes |
| 37 | |
| 38 | - `stage_evaluation` — оценка ступени мастерства через RCS-индикаторы (FORM.089) |
| 39 | - `club_activity` — учёт активности в клубе (WP-296, post/topic) |
| 40 | |
| 41 | ## Примеры |
| 42 | |
| 43 | ```bash |
| 44 | /consent status |
| 45 | /consent opt-in # default: stage_evaluation |
| 46 | /consent opt-in stage_evaluation,club_activity |
| 47 | /consent opt-out # сохраняет данные, отключает обработку |
| 48 | /consent revoke # удаляет row полностью |
| 49 | ``` |
| 50 | |
| 51 | ## Различение opt-out vs revoke |
| 52 | |
| 53 | - **opt-out** — пилот говорит «не обрабатывайте больше», но данные остаются для аудита. Worker пропускает. |
| 54 | - **revoke** — пилот реализует право на удаление (GDPR). Row удалена; для повторного включения нужен новый opt-in. |
| 55 | |
| 56 | > **Note:** удаление *production-данных* (events, reflections, transitions) — отдельный процесс через `anonymization_worker`. Эта команда управляет только записью в `tracking_consent`. |
| 57 | |
| 58 | ## Зависимости |
| 59 | |
| 60 | - Миграция `113-consent-writer-grants.sql` (в директории миграций инфраструктурного репозитория) |
| 61 | - Privacy spec: [`B7.3.6-stage-evaluation-privacy-spec.md`](../../../DS-ecosystem-development/C.IT-Platform/C2.IT-Platform/C2.2.Architecture/Data-Governance/B7.3.6-stage-evaluation-privacy-spec.md) |
| 62 | |
| 63 | <!-- USER-SPACE --> |
| 64 | <!-- /USER-SPACE --> |