diff --git a/CHANGELOG.md b/CHANGELOG.md index 8ca69e0..0f5d5a2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -127,11 +127,17 @@ Маскировать красное и отправлять нельзя: у договора маска убивает предмет — стороны, суммы, особые условия. Поэтому для красного единственный корректный ответ — не пускать. +**Два ограничения по доступу — согласованы с Олегом 05.11.2026:** + +1. **Роль не даёт права отправить красное в облако.** По светофору красное не уходит наружу никому: договорной пул получает право открыть документ агенту (снять структуру, собрать обезличенную выписку), но отправка самого договора в облачную модель блокируется и им тоже. Пока локального контура нет, по договорам агент у договорного пула почти не работает — это цена честной схемы, а не недоделка. +2. **Роль вешается на учётку, а не на флаг в профиле.** Переключатель в том же профиле сотрудник поставит себе сам, и контроль фиктивный. Красный уровень — отдельный профиль или отдельная учётка у нескольких человек договорного пула. + - Критерий приёмки: 1. Сотрудник без роли просит проверить договор → отказ до чтения, файл не открывается. 2. ТЗ у любого сотрудника → уходит маской, в журнале строка, ответ приходит с реальными значениями. 3. 20 запросов без ПДн → ни одной маски и ни одной блокировки. 4. В журнале: пользователь, тип документа, категория, сколько замен, модель, время. + 5. Сотрудник с ролью договорного пула просит отправить договор в облачную модель → отказ: роль открывает документ агенту, но не отправку в облако. - Остаточные риски, фиксируем честно: картинки и вложения не маскируются; PDF-сканы без текстового слоя требуют OCR до маски; путь «человек скопировал в браузер мимо агента» закрывается только шлюзом или DLP на периметре. Порядок работ: сначала `tool_request` + политика + журнал в режиме «только запись» (ничего не маскируем, смотрим поток), затем включаем маску на жёлтом, и только после настройки правил — демаскировку ответа.