data: version media assets in git
CI / backend-and-migrations (push) Canceled after 0s
CI / astro-build (push) Canceled after 0s
CI / dependency-audit (push) Canceled after 0s
CI / compose-e2e (push) Canceled after 0s

This commit is contained in:
ik
2026-09-14 07:22:00 +07:00
parent 7d94fbadb5
commit 79daea4ae1
442 changed files with 6 additions and 2 deletions
+2
View File
@@ -64,6 +64,8 @@ Fallback строится на собственных лёгких SVG: осмы
С 12 сентября 2026 года разрешён локальный сбор медиаресурсов; 13 сентября размер одного окна увеличен до 40 assets на домен. `python -m rf4_research.media_cli URL` делает один учтённый HTML-запрос и добавляет кандидатов в `data/media/manifest.json`; `--download-one` сохраняет один asset, а `--download-batch --batch-limit 40` — до 40 на домен под одной резервацией окна. Следующий batch домена возможен через 30 минут. При 401/403/429 или сетевой ошибке домен останавливается сразу, при трёх последовательных invalid/missing — досрочно; каждый результат сохраняется в manifest. Перед записью проверяются raster-формат, совпадение MIME и предел 40 Мп. Статус `queued` или `stored` не означает соответствие сущности или разрешение на публичный вывод. Ручная команда с `--review-url`, `--decision`, `--entity-type` и `--entity-key` переводит сохранённый файл в `approved`; неподходящий материал явно получает `rejected`.
Скачанные исследовательские оригиналы из `data/media/files/` хранятся в Git вместе с manifest. Каждый путь должен быть представлен ровно одной записью с source URL, source page и SHA-256; `--audit` проверяет отсутствие пропавших, повреждённых и бесхозных файлов. Git-хранение обеспечивает воспроизводимость набора, но не меняет публикационный статус: на сайт разрешено выводить только вручную проверенные `approved`-ассеты. Пользовательские загрузки остаются отдельным контуром MinIO/S3.
`python -m rf4_research.media_cli --audit` не использует сеть: команда выводит сводку статусов и завершается с ошибкой при отсутствующем/изменённом файле, несовпадении SHA-256 или dimensions/MIME, некорректном approved-сопоставлении и наличии бесхозного файла.
`python -m rf4_research.media_cli --queue-plan` также не использует сеть. Он читает manifest и общий cooldown-state, группирует queued-ассеты по фактическому домену, показывает готовность и оставшееся время, состав очереди по типам и один следующий кандидат с приоритетом waterbody → fish → tackle → reference. Команда намеренно сообщает, что точные catalog gaps неизвестны, пока baseline содержит только количества без канонических имён.