diff --git a/README.md b/README.md index bb77e99..a12d92c 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,8 @@ RF4 Spotter — неофициальный сервис свежих точек Актуальные следующие задачи находятся только в [ROADMAP](docs/ROADMAP.md). Старые планы и аудиты сохранены как история и больше не задают порядок работ. До внешнего запуска нужны сервер, DNS/TLS, production-секреты, публичные контакты, внешний backup и канал уведомлений. +Разрешённые интеграции и недостающие первичные подтверждения сведены в [реестр разрешений](docs/source-permissions.md). Перед открытой публикацией пустые поля реестра являются блокером конкретного источника, особенно для изображений. + Web Docker-образ устанавливает зависимости через `npm ci` по lock-файлу и удаляет devDependencies после сборки. Локальные `.env` исключены из web build context. Очередь внешних наблюдений выбирает только ожидающие проверки записи на сервере и показывает их страницами по 50. Обработанные записи не скрывают более старые необработанные наблюдения. diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index ab241c2..5c7f576 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -36,7 +36,7 @@ - [x] **B14 · Атласные переходы сущностей.** Боковые списки рыб и водоёмов на detail-страницах получили компактные силуэты и отпечатки рядом с полным текстовым названием. Знаки продолжают систему каталога в рабочей навигации, а стрелка явно показывает переход к странице сочетания. - [x] **B15 · Целостность медиакаталога.** Локальный audit сводит статусы очереди и проверяет наличие файлов, SHA-256, фактические dimensions/MIME, каноническое соответствие approved-записей и бесхозные файлы. Проверка не обращается в сеть и может использоваться как pre-publication gate. -- [ ] **Q01 · Документы источников.** Приложить или дать устойчивые ссылки на первичные разрешения RF4DB, RF4-STAT, RF4MAP и RF4 Posts; для каждого зафиксировать атрибуцию, точный production-лимит, срок хранения и процедуру удаления. +- [ ] **Q01 · Документы источников — реестр готов, нужны первичные подтверждения.** Создан единый production-gate с атрибуцией, общим лимитом 30 минут, хранением и процедурой отзыва для RF4DB, RF4-STAT, RF4MAP, RF4 Posts и официального RF4. До открытой публикации приложить устойчивые ссылки/копии первичных разрешений, контакты, даты и отдельно подтвердить право на изображения; пустое поле блокирует соответствующий источник. - [ ] **Q02 · Управляемое удаление источника.** Добавить обнаружение изменённых/удалённых опубликованных записей без отдельного частого обхода: статус, журнал решения и безопасное исключение из активности после проверки. - [ ] **Q03 · Целостность ссылок.** Проверять исходные ссылки только во время разрешённого планового обращения к площадке, разделяя `missing`, `temporary_error` и `blocked`; не создавать дополнительный сетевой цикл. - [x] **Q04 · Состояния ожидания.** Асинхронные admin-очереди получили каркасные карточки, `aria-busy`, очистку при ошибке и поддержку `prefers-reduced-motion`. Публичные страницы остаются SSR и не показывают искусственный skeleton; форма уже блокирует повторную отправку и сообщает «Отправка…». diff --git a/docs/source-permissions.md b/docs/source-permissions.md new file mode 100644 index 0000000..73d171d --- /dev/null +++ b/docs/source-permissions.md @@ -0,0 +1,28 @@ +# Реестр разрешений источников + +Этот файл — production-gate, а не заявление о правах. Словесного подтверждения достаточно для разработки интеграции, но перед открытой альфой у каждого источника должна быть сохранена первичная ссылка или копия разрешения, дата и контакт стороны. Пустое поле блокирует публикацию данных соответствующего источника. + +| Источник | Данные | Атрибуция на сайте | Лимит | Хранение | Удаление | Первичное подтверждение | +|---|---|---|---|---|---|---| +| RF4DB | уловы, справочники, разрешённые изображения | название + ссылка на исходную запись/страницу | не чаще 1 запроса на площадку за 30 минут, ошибки учитываются | нормализованные данные; raw по retention policy | отключить источник, скрыть публикации, очистить raw и согласованные данные по запросу | **требуется приложить** | +| RF4-STAT | уловы и посты | название + ссылка на запись | не чаще 1 запроса на площадку за 30 минут, общий для endpoint | то же | то же | **требуется приложить** | +| RF4MAP | точки и разрешённые media-кандидаты | название + ссылка на страницу | не чаще 1 запроса на площадку за 30 минут, включая media/CDN | media только локально по hash; публикация после review | удалить mapping и локальный оригинал, затем записи источника | **требуется приложить** | +| RF4 Posts | точки | название + ссылка на запись | не чаще 1 запроса на площадку за 30 минут | нормализованные данные; raw по retention policy | отключить и удалить по source system | **требуется приложить** | +| Официальный RF4 | рекорды и отдельно проверенные справочные изображения | «Официальный сайт RF4» + ссылка | не чаще 1 запроса на домен за 30 минут | по общей retention policy; media в карантине до review | скрыть/удалить mapping и данные конкретного источника | **уточнить основание для media-публикации** | + +## Требования к подтверждению + +- устойчивый URL либо сохранённый исходный файл/скриншот с датой; +- кто дал разрешение и в каком качестве; +- точный перечень данных и право публичной переработки/публикации; +- отдельное упоминание изображений, если они используются; +- допустимая частота, атрибуция, срок хранения и процедура отзыва; +- дата следующей ревизии условий. + +## Процедура отзыва + +1. Немедленно отключить источник и scheduler endpoint. +2. Скрыть его опубликованные записи из активности без физического уничтожения аудита. +3. Выгрузить список затронутых нормализованных записей и media mappings. +4. Выполнить согласованное удаление; сохранить только минимальный журнал факта удаления без исходного payload. +5. Проверить публичный API, sitemap/страницы сущностей и media audit, затем зафиксировать решение в журнале эксплуатации.