# Локальный пакет проверки оснований публикации

Дата подготовки: 16 июля 2026 года.

## Назначение

Локальный пакет на странице `/publication-basis-review/` помогает подготовить и вручную исполнить редакционные запросы по 24 карточкам ТОС из issue #254.

Он объединяет четыре канонических источника:

- `data/publication_basis_confirmation_register.csv` — текущий статус исполнения;
- `data/publication_basis_review_queue.csv` — волна, приоритет и типы опубликованных полей;
- `data/publication_basis_confirmation_templates.json` — утверждённые редакционные шаблоны;
- `data/tos.json` — название ТОС и стабильный slug карточки.

Пакет не отправляет сообщения, не изменяет GitHub и не создаёт юридическое согласие.

## Что делает интерфейс

Для выбранной карточки он:

1. подставляет название ТОС;
2. формирует ссылку на карточку портала;
3. переводит системные коды опубликованных полей в понятный перечень;
4. подставляет срок ответа;
5. показывает готовые тему и текст редакционного запроса;
6. позволяет скопировать текст;
7. формирует TXT-карточку подготовки;
8. после фактического действия может сформировать одну CSV-строку со статусом `sent`.

## Граница доверия

До реальной отправки флажок «Редакционный запрос действительно отправлен» остаётся выключенным.

Пока он выключен:

- можно копировать тему и сообщение;
- можно скачать карточку подготовки;
- кнопка экспорта строки `sent` заблокирована;
- канонический журнал остаётся без изменений.

После включения флажка экспорт разрешается только при наличии:

- обезличенной роли получателя;
- типа фактического канала;
- роли ответственного;
- даты фактической отправки;
- даты повторного контакта, которая не раньше даты отправки.

Формируемая строка дополнительно проверяется существующим модулем `publication-basis-validation.js`.

## Что не хранить

В локальное примечание и публичный CSV нельзя переносить:

- фактический адрес получателя;
- телефон или email;
- ФИО адресата;
- текст ответа;
- скриншоты;
- закрытые ссылки;
- токены, пароли и другие секреты;
- оригиналы документов.

Фактический адрес, переписка и доказательство отправки должны храниться в допустимом закрытом рабочем контуре вне публичного репозитория.

## Что экспортирует строка `sent`

Экспорт содержит только каноническую схему журнала и меняет подготовительную копию строки следующим образом:

- `request_status` → `sent`;
- заполняются `recipient_role`, `channel_type`, `owner_role`;
- заполняются `sent_date` и `follow_up_date`;
- очищается подготовительный `blocker`;
- следующий шаг меняется на ожидание ответа и дату повторного контакта.

Поля результата ответа остаются пустыми:

- `response_date`;
- `reviewed_at`;
- `reviewed_by_role`;
- `chairperson_status`;
- `field_types_to_keep`;
- `field_types_to_remove`;
- `preferred_public_channel_type`;
- `personal_profile_classification`;
- `factual_source_ref`.

`decision_status` остаётся `not_reviewed`.

## Юридическая граница

Редакционный запрос и ответ на него:

- могут стать источником фактического уточнения после проверки;
- не создают `publication_consent_ref` автоматически;
- не переводят карточку в `partial` или `verified`;
- не определяют правовое основание распространения;
- не заменяют решения по issue #205.

## Локальное хранение

Черновые поля интерфейса сохраняются только в `localStorage` текущего браузера под ключом `tos-publication-basis-execution-v1`.

Интерфейс не содержит сетевой записи. Он использует только чтение статических файлов через `fetch`, копирование в буфер и локальное скачивание TXT/CSV.

## Порядок работы

1. Выбрать карточку.
2. Указать срок ответа в тексте запроса.
3. Проверить тему, карточку и перечень полей.
4. Определить фактический канал и адресата вне публичного GitHub.
5. Указать в интерфейсе только обезличенные коды ролей и типа канала.
6. Скопировать и отправить запрос вручную.
7. После реальной отправки заполнить даты и включить подтверждающий флажок.
8. Скачать строку `sent`.
9. Сверить её с закрытым следом отправки.
10. Внести строку в канонический CSV отдельным проверяемым изменением.

## Автоматические проверки

CI контролирует:

- разрешение всех 24 карточек в готовые тексты;
- отсутствие незаменённых плейсхолдеров;
- соответствие шаблона волне;
- запрет экспорта без ручного подтверждения;
- обязательные роли и даты;
- проверку строки существующим валидатором;
- сохранение пустых полей ответа и решения;
- порядок подключения скриптов;
- отсутствие сетевой записи;
- связь страницы, инструкции и read-only workflow.

Автоматический аудит подтверждает только целостность инструмента. Он не доказывает, что сообщение было отправлено или ответ получен.
