feat: reconcile RF4DB media catalog
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:45:29 +07:00
parent 0eca44c11a
commit 61c7ac7d51
9 changed files with 3593 additions and 12 deletions
+3
View File
@@ -36,6 +36,9 @@
- [x] **B14 · Атласные переходы сущностей.** Боковые списки рыб и водоёмов на detail-страницах получили компактные силуэты и отпечатки рядом с полным текстовым названием. Знаки продолжают систему каталога в рабочей навигации, а стрелка явно показывает переход к странице сочетания.
- [x] **B15 · Целостность медиакаталога.** Локальный audit сводит статусы очереди и проверяет наличие файлов, SHA-256, фактические dimensions/MIME, каноническое соответствие approved-записей и бесхозные файлы. Проверка не обращается в сеть и может использоваться как pre-publication gate.
- [x] **B16 · Самодостаточное хранение media dataset.** Все управляемые оригиналы из `data/media/files/` версионируются в Git вместе с manifest; локальный клон содержит полный исследовательский набор. Пользовательские скриншоты остаются в MinIO/S3, а наличие файла в Git не означает разрешение на публикацию без статуса `approved`.
- [x] **B17 · Полный каталог рыб RF4DB.** Разрешённый RF4DB дал 252 подписанных изображения; 227 совпадений с RF4MAP сохранены как provenance-only `duplicate`, а 25 отсутствовавших видов поставлены в очередь. Все поддомены RF4DB объединены одним 30-минутным cooldown.
- [ ] **B18 · Каталог водоёмов RF4DB.** После cooldown проиндексировать 19 русских карточек водоёмов, проверить полноразмерные карты и поставить только уникальные изображения в media queue.
- [ ] **B19 · Каталог снастей RF4DB.** После водоёмов проиндексировать категории gear, построить crosswalk по типу, бренду, семейству и названию; не считать каталог полным до получения проверяемого общего счётчика.
### Тёмная тема
+2
View File
@@ -70,6 +70,8 @@ Fallback строится на собственных лёгких SVG: осмы
`python -m rf4_research.media_cli --queue-plan` также не использует сеть. Он читает manifest и общий cooldown-state, группирует queued-ассеты по фактическому домену, показывает готовность и оставшееся время, состав очереди по типам и один следующий кандидат с приоритетом waterbody → fish → tackle → reference. Команда намеренно сообщает, что точные catalog gaps неизвестны, пока baseline содержит только количества без канонических имён.
14 сентября разрешённый русский каталог RF4DB вернул ровно 252 подписанных изображения рыб с `oss.rf4db.com`. После консервативной нормализации регистра, пробелов и `е/ё` с RF4MAP совпали 227 видов, ещё 25 закрывают остаток полного каталога. `--dedupe-queue` сохраняет provenance альтернативного источника, но переводит совпавшие URL в статус `duplicate`, чтобы не скачивать одинаковые сущности повторно. `rf4db.com`, `download.rf4db.com` и `oss.rf4db.com` используют единый ключ cooldown `rf4db.com`.
`python -m rf4_research.media_cli --coverage` также работает локально и сравнивает manifest с датированным `data/media/catalog-baseline.json`. Неизвестные контрольные значения хранятся как `null`: отчёт не выдаёт число найденных приманок за полноту всего каталога снастей.
Координат, проводки, времени поимки и устойчивого внешнего идентификатора записи в этой таблице нет. Локализация зависит от домена/языка страницы: проверенная `.de`-страница возвращает немецкие названия рыб, водоёмов и приманок даже для региона RU.