feat: add offline waterbody source crosswalk

This commit is contained in:
ik
2026-09-20 19:16:46 +07:00
parent d541443a1a
commit f02cb247a3
11 changed files with 311 additions and 14 deletions
+4 -2
View File
@@ -57,14 +57,16 @@ Detail-страница дополнительно содержит ветер,
## Реализовано
- `rf4_research/community_sources.py` пять fail-closed HTML-парсеров;
- `rf4_research/community_sources.py` — fail-closed HTML-парсеры уловов, точек и вторичных каталогов;
- `parse_rf4map_waterbodies` — отдельный fail-closed каталог вторичных RF4MAP candidates;
- `parse_rf4stat_waterbodies` — отдельный fail-closed каталог вторичных RF4-STAT metrics;
- `parse_rf4db_detail` — отдельное обогащение одного RF4DB-улова;
- `python -m rf4_research.community_cli` — read-only CLI одного ограниченного снимка;
- обезличенные минимальные фикстуры для каждого контракта;
- тесты всех извлекаемых полей, locked-координат и отказа на постороннем HTML;
- живой контрольный прогон без сохранения персональных данных и изображений в репозиторий.
На живых HTML-снимках RF4MAP и RF4 Posts получены соответственно 30 индивидуальных наблюдений и 6 видов рыб одной точки. Оба результата укладываются в nullable-контракт, имеют отдельные пространства ID и не смешиваются с RF4DB/RF4-STAT. Разрешение и минимальный интервал 30 минут подтверждены; все источники включены миграцией `0012`. RF4 Posts трактуется как агрегированная точка, а не индивидуальный улов.
На живых HTML-снимках RF4MAP и RF4 Posts получены соответственно 30 индивидуальных наблюдений и 6 видов рыб одной точки. Оба результата укладываются в nullable-контракт, имеют отдельные пространства ID и не смешиваются с RF4DB/RF4-STAT. Для RF4MAP добавлен отдельный ручной parser каталога `/lakes`: он возвращает только вторичные candidates имени, внешнего ID и видового счётчика, не создаёт canonical waterbody и не назначает media. Разрешение и минимальный интервал 30 минут подтверждены; все источники включены миграцией `0012`. RF4 Posts трактуется как агрегированная точка, а не индивидуальный улов.
## Перед продуктивным импортом